1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
#include <stdio.h> #define N 100 int main() { int score[N],sum,i,max,min,num,n,a,ren; double average; printf("输入人数: "); scanf("%d",&ren); for(i=0;i<ren;i++) { printf("请输入第%d个人的成绩: ",i+1); scanf("%d",&score[i]); } sum=0; for(i=0;i<ren;i++) { sum+=score[i]; } average=(double)sum/ren; printf("这%d个人的平均成绩为%.2lf ",ren,average); max=score[0]; for(i=0;i<ren;i++) { if(max<=score[i]) { max=score[i]; num=i+1; } } printf("最大值为%d,是第%d人 ",max,num); min=score[0]; for(i=0;i<ren;i++) { if(min>=score[i]) { min=score[i]; num=i+1; } } printf("最小值为%d,是第%d人 ",min,num); printf("请输入某人的成绩: "); scanf("%d",&a); for(i=0;i<ren;i++) { if(a==score[i]) { num=i+1; printf("这是第%d人 ",num); break; } } if(a!=score[i]) { printf("输入错误 "); } return 0; }
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
#include<stdio.h> #define N 11 int main() { int num[N]={2,4,6,8,10,12,14,16,18,20},a,b,i; printf("请输入一个数: "); scanf("%d",&a); for(i=0;i<N;i++) { if(a<=num[i]&&a>=num[i-1]) { b=i; break; } else if(a>num[9]) { b=i; } } for(i=N-1;i>b;i--) { num[i]=num[i-1]; } num[i]=a; for(i=0;i<N;i++) { printf("%d ",num[i]); } return 0; }
3.用数组实现火柴棍等式
#include <stdio.h> #define N 10 int main() { int gun[N]={6,2,5,5,4,5,6,3,7,6},a,b,c,sum; for(a=0;a<N;a++) for(b=0;b<N;b++) { c=a+b; if(c>9) { break; } sum=gun[a]+gun[b]+gun[c]; if(sum==12) { printf("%d+%d=%d ",a,b,c); } } return 0; }
附加题
输入一行任意长的数字,用数组元素作为计数器统计每个数字出现的次数。用下标为0的元素统计0出现的次数,用下标为1的元素统计1出现的次数…
#include<stdio.h> int main() { int num[10]={0},i; char c; printf("请输入一串数字: "); while(c!=' ') { scanf("%c",&c); num[c-'0']++; } for(i=0;i<10;i++) { printf("数字 %d 出现了%d次 ",i,num[i]); } return 0; }
二.知识点总结
1.数组定义方式 :数据类型 数组名【常量表达式】(int a[10]);
2.数组必须先定义 后使用;
3.数组中下标从0开始,引用时下表可以是int型变量或者表达式;
4.数组定义后若对数组进行动态赋值,可用循环来实现;
5.标明数组中的数int num[5]={1,23,4,5,}
三.实验总结
1.附加题用到了ascll值 要知道数字0是从48开始的 只有0-9 附加题那还可以写成num[i-48];
2.第二题比较难 不好想 应该多讨论一下也可以问问别人 弄懂就行;
3.开始编的时候会打一串变量,最好最后把多余的变量删了(程序是检测不出来的);