1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
#include <stdio.h> #define N 100000 int main () { int sum=0,score[N],max,min,a=0,i,b=0,c=0,x; double average; printf("请输入成绩\n"); for(i=0;i<N;i++) { scanf("%d",&score[i]); if(score[i]<0) break; else { a++; } } for(i=0;i<a;i++) { sum=sum+score[i]; } printf("总值是%d\n",sum); average=(double)sum/a; printf("平均值是%.2f\n",average); max=score[1]; for(i=1;i<a;i++) { if(score[i]>max) { max=score[i]; b=i+1; } } printf("最大值是%d,第%d个数\n",max,b); min=score[0]; for(i=1;i<a;i++) { if(score[i]<min) { min=score[i]; c=i; } } printf("最小值是%d,第%d个数\n",min,c+1); printf("请输入成绩\n"); scanf("%d",&x); for(i=0;i<=a;i++) { if(x==score[i]) { printf("这个学生是第%d个\n",i+1); break; } } return 0; }
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
#include <stdio.h> #define N 10 int main() { int num[N]={3,6,9,12,16,19,23,26,29},i,j,n,a,b; printf("请输入一个数字:\n"); scanf("%d",&a); for(i=0;i>=0;i++) { if(a<num[i+1]) { for(j=8;j>i;j--) { num[j+1]=num[j]; } num[i+1]=a; break; } } for(i=0;i<N;i++) printf("%4d",num[i]); return 0; }
3.用数组实现火柴棍等式
#include <stdio.h> int main() { int a,b,c,s[10]={6,2,5,5,4,5,6,3,7,6}; for(a=0;a<=9;a++) for(b=0;b<=9;b++) { c=a+b; if(s[a]+s[b]+s[c]==12&&c<10) { printf("%d+%d=%d\n",a,b,c); } } return 0; }
知识点总结;
1:数组一开始从【0】开始
2:数组与循环一起用可以达到简化程序的作用,省去大量步骤。
3:数组不能被赋值,
实验总结:
1:数组N=【N】的N不是一定的,在for循环中可以换成i
2:数组内插入数字要注意位置问题,再数组中插入,后面的数都的下标都加一。