第八次试验
1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
#include <stdio.h> #define N 100 int main() { int n=0,grade[N],sum=0,number,i,max,min,find,m; double average; printf("输入需要统计的学生个数:"); scanf("%d",&number); for(i=0;i<number;i++) { printf("输入第%d名同学的成绩:",i+1); scanf("%d",&grade[i]); sum+=grade[i]; } average=(double)sum/number; printf("平均分为%.3f分\n",average); max=grade[0]; for(i=0;i<number;i++) { if(grade[i]>=max) { max=grade[i]; m=i+1; } } printf("获得最高分的是第%d名同学,他的分数为%d分\n",m,max); min=grade[0]; for(i=0;i<number;i++) { if(grade[i]<=min) { min=grade[i]; m=i+1; } } printf("获得最低分的是第%d名同学,他的分数为%d分\n",m,min); printf("输入你要查询的成绩:"); scanf("%d",&find); for(i=0;i<number;i++) { if(grade[i]==find) { printf("第%d名",i+1); n++; } } if(n==0) { printf("未找到符合条件的同学\n"); } else { printf("同学获得了%d分",find); } return 0; }
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
#include <stdio.h> #define N 11 int main() { int arr[N]={1,3,5,7,9,11,13,15,17,19},num,i,m=10; printf("请输入一个数字\n"); scanf("%d",&num); for(i=0;i<=N-1;i++) { if(num<arr[i]) { m=i; break; } } for(i=N-1;i>m;i--) { arr[i]=arr[i-1]; } arr[i]=num; for(i=0;i<N;i++) { printf("%d ",arr[i]); } printf("\n"); return 0; }
3.用数组实现火柴棍等式
#include <stdio.h> int main() { int huochai[10]={6,2,5,5,4,5,6,3,7,6}; int a,b,sum; for(a=0;a<=9;a++) for(b=0;b<9;b++) { sum=a+b; if(sum>9) { break; } if(huochai[a]+huochai[b]+huochai[sum]==12) { printf("%d+%d=%d\n",a,b,sum); } } return 0; }
实验总结
1访问数组元素时中括号中的下标是从0开始的,下标可以是非负的整型常量或非负整形数据表达式。
2数组不能作为一个整体参加数据运算,只能对单个数据进行运算。
3数组不能初始化,其元素值为随机数。