一、实验内容
1、实验要求:输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
代码:
# include <stdio.h> # define N 100 int main() { int score[N],sum,max,min,grade,n,m,i; double average; printf("请输入一个小于100的值 ",&n); scanf("%d",&n); sum=0; for(i=0;i<n;i++) { printf("请输入学生的成绩: "); scanf("%d",&score[i]); sum=sum+score[i]; } average=(double)sum/n; printf("平均分为%.2lf ",average); max=0; for(i=0;i<n;i++) { if(score[max]<score[i]) { max=i; } } printf("最高分为%d,是第%d个数 ",score[max],max); min=0; for(i=0;i<n;i++) { if(score[min]>score[i]) { score[min]=score[i]; } } printf("最低分为%d,是第%d个数 ",score[min],min); printf("请输入一个你想要查找的成绩 "); scanf("%d",&grade); m=0; for(i=0;i<n;i++) { if(grade==score[i]) { printf("%d ",i); m=m+1; } } printf("符合要求的一共有%d个 ",m); return 0; }
程序运行结果:
2、实验要求:现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
代码:
# include <stdio.h> int main() { int a,i,n; int num[10]={6,18,28,39,48,56,67,78,89}; printf("请输入一个正整数 "); scanf("%d",&a); for(i=0;i<9;i++) { if(a<=num[i+1]&&a>num[i]) { for(n=10;n>=i;n--) { num[n]=num[n-1]; } num[i+1]=a; } else if(num[0]>a) { num[0]=a; } else if(num[8]<a) { num[9]=a; } printf("%d ",num[i]); } return 0; }
程序运行结果:
3、实验要求:
# include <stdio.h> int main() { int a,b,sum; int match[10]={6,2,5,5,4,5,6,3,7,6}; for(a=0;a<=9;a++) for(b=0;a<=9;b++) { sum=a+b; if(sum>9) { break; } else { if(match[a]+match[b]+match[sum]==12) { printf("%d+%d=%d ",a,b,sum); } } } return 0; }
程序运行结果:
二、知识点总结
- 数组的基本格式 :数组类型 数组名称 【数组长度】
- 数组中如果少于数组长度,则其它未写出的数据为0
- 数据的下标从0开始
- 数组必须先定义,再使用
三、实验总结
- 在第二个实验中会出现数据重叠的问题,在内层循环中要让数组中的前一个值赋给后一个值
- 在for后面不能加分号,否则会出现越界问题