1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
#include <stdio.h> #define N 100 int main() { int score[N],sum=0,c,j,max,min,i=0,x=0; float average; printf("输入学生的成绩,输入负数时退出 "); scanf("%d",&score[i]); x++; while(score[i]>=0) { sum+=score[i]; i++; printf("输入学生的成绩,输入负数时退出 "); scanf("%d",&score[i]); x++; } average=(float)sum/x; printf("平均分为%.2f ",average); max=score[0]; min=score[0]; i=0; while(i<x&&score[i]>=0) { if(score[i]>max) { max=score[i]; } if(score[i]<min) { min=score[i]; } i++; } printf("最高分为%d,最低分为%d ",max,min); i=0; while(i<x&&score[i]>=0) { if(score[i]==max) { printf("最高分有第%d个人 ",i+1); } if(score[i]==min) { printf("最低分有第%d个人 ",i+1); } i++; } printf("输入一个成绩,说明是第几个学生 "); scanf("%d",&c); for(j=0;j<i;j++) { if(c==score[j]) { printf("该成绩有第%d个学生 ",j+1); } } return 0; }
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
#include <stdio.h> int main() { int i,j,x,a[11]={2,4,6,8,10,12,14,16,18,19}; printf("输入一个数,插入数组当中"); scanf("%d",&j); for(i=0;i<10;i++) { if(a[i]>j) { x=i; break; } else { x=10; } } for(i=10;i>x;i--) { a[i]=a[i-1]; } a[x]=j; for(i=0;i<11;i++) { printf("%4d",a[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 ",a,b,c); } } return 0; }
实验总结:1.数组的下标从零开始。
2.数组能处理大量数据,优化程序。
3.数组一旦创建,不能改变大小。
4.要多方面考虑题目结果,使代码完整。
5.变量对应的关系要搞清楚。
知识点总结:1.数组与循环结构紧密相连,一般情况下,循环变量的值随数组元素的下标变化。
2数组使用时要先定义才能使用,C语言不会对数组下标做越界检查。
3.数组不能被赋值。