一、实验内容
1、实验要求:输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
代码:
#include<stdio.h> #define N 100 int main() { int n,score[N],i,sum,max,min,index,a; double average; printf("请输入学生的人数 "); scanf("%d",&n); printf("input the score: "); sum=0; //平均分 for(i=0;i<n;i++) { scanf("%d",&score[i]); sum=sum+score[i]; } average=(double)sum/n; printf("average=%.2lf ",average); //最高分 max=score[0]; index=0; for(i=0;i<n;i++) { if(score[i]>max) { max=score[i]; index=i; } } printf("max=%d,index=%d ",max,index); //最低分 min=score[0]; index=0; for(i=0;i<n;i++) { if(score[i]<min) { min=score[i]; index=i; } } printf("min=%d,index=%d ",min,index); //查找 printf("input the score you want to find: "); scanf("%d",&a); index=0; for(i=0;i<n;i++) { if(a==score[i]) { index=i+1; printf("这是第%d个学生的成绩 ",index); } } return 0; }
程序运行结果:
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
代码:
#include<stdio.h> int main() { int number[11]={1,3,5,7,9,11,13,15,17,19},i,a,m; for(i=0;i<=10;i++) { printf("%d ",number[i]); if(i==9) { break; } } printf(" 请输入一个数,有序插入到这组数字中 "); scanf("%d",&a); for(i=0;i<=10;i++) { if(a<number[0]) { for(m=10;m>=0;m--) { number[m]=number[m-1]; if(m==0) { break; } } number[0]=a; } else if(a>number[i]&&a<=number[i+1]) { for(m=10;m>=0;m--) { number[m]=number[m-1]; if(m<=i+1) { break; } } number[i+1]=a; } else if(a>number[9]) { number[10]=a; } } for(i=0;i<=10;i++) { printf("%d ",number[i]); } return 0; }
程序运行结果:
3.用数组实现火柴棍等式
代码:
#include<stdio.h> int main() { int gen[10]={6,2,5,5,4,5,6,3,7,6},x,y,z,i; for(x=0;x<10;x++) { for(y=0;y<10;y++) { z=x+y; if(z>10) { break; } if(gen[x]+gen[y]+gen[z]==12) { printf("%d+%d=%d ",x,y,z); } } } return 0; }
程序运行结果:
附加题
输入一行任意长的数字,用数组元素作为计数器统计每个数字出现的次数。用下标为0的元素统计0出现的次数,用下标为1的元素统计1出现的次数…
代码:
#include<stdio.h> int main() { int number[10]={0,0,0,0,0,0,0,0,0,0},i; char x; printf("输入一组数字,计算每个数字出现的次数 "); while(x!=' ') { scanf("%c",&x); switch(x) { case '0':number[0]++;break; case '1':number[1]++;break; case '2':number[2]++;break; case '3':number[3]++;break; case '4':number[4]++;break; case '5':number[5]++;break; case '6':number[6]++;break; case '7':number[7]++;break; case '8':number[8]++;break; case '9':number[9]++;break; } } for(i=0;i<=9;i++) { printf("%d 出现 %d 次 ",i,number[i]); } return 0; }
程序运行结果:
二、知识点总结
1、数组的下标是从0开始的。
2、数组不初始化,其元素值为随机数。
3、数组中的每一个元素都属于同一种数据类型。
4、只给部分数组元素赋初值,则其后的元素被初始化为0
5、C语言不会对数组下标做越界检查,所以元素数应该小于等于数组长度。
三、实验总结(实验中遇到的问题及解决方法)
1、数组一旦创建,不能改变大小
2、每个数组元素是一个数组类型的变量
3、插入数组的时候要看清条件,准确找出插入的位置。