一、实验内容
1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
#include<stdio.h> #define N 99999 int main() { int i,n,a,b,c,x,sum,max,min; int fen[N]; double ping; printf("请输入一共有多少学生 "); scanf("%d",&n); sum=0; for(i=0;i<n;i=i+1) { printf("请输入成绩 "); scanf("%d",&fen[i]); } for(i=0;i<n;i=i+1) { sum=sum+fen[i]; } ping=(double)sum/n; printf("平均分是%.2lf ",ping); max=fen[0]; for(i=0;i<n;i=i+1) { if(fen[i]>max) { max=fen[i]; } } for(i=0;i<n;i=i+1) { if(fen[i]==max) { a=i+1; printf("最高分是%d,是第%d个同学 ",max,a); } } min=fen[0]; for(i=0;i<n;i=i+1) { if(fen[i]<min) { min=fen[i]; } } for(i=0;i<n;i=i+1) { if(fen[i]==min) { b=i+1; printf("最低分是%d,是第%d个同学 ",min,b); } } printf("输入一个成绩,说明是第几个学生的成绩 "); scanf("%d",&x); for(i=0;i<n;i=i+1) { if(x==fen[i]) { c=i+1; printf("是第%d个学生 ",c); } } return 0; }
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
#include<stdio.h> int main() { int i,j,x; int shu[11]={0,10,20,30,40,50,60,70,80,90}; printf("现有一列数据:0,10,20,30,40,50,60,70,80,90,输入一个数,将其插入数据中 "); scanf("%d",&x); if(x>=shu[9]) { printf("现在数据为:0,10,20,30,40,50,60,70,80,90,%d",x); } else { for(i=0;i<10;i=i+1) { if(x<shu[i]) { j=i; break; } } for(i=10;i>=j;i=i-1) { shu[i+1]=shu[i]; } shu[j]=x; printf("现在数据为"); for(i=0;i<11;i=i+1) { printf("%d ",shu[i]); } } return 0; }
3.用数组实现火柴棍等式
#include<stdio.h> int main() { int a,b,c,x,y,z; int match[10]={6,2,5,5,4,5,6,3,7,6}; for(a=0;a<10;a=a+1) { x=match[a]; for(b=0;b<10;b=b+1) { y=match[b]; for(c=0;c<10;c=c+1) { z=match[c]; if(a+b==c&&x+y+z==12) { printf("%d+%d=%d ",a,b,c); } } } } return 0; }
二、知识点总结
1、 数组必须先定义,后使用。
2、只能逐个引用数组元素,不能一次引用整个数组
3、每个数组元素是一个数组类型的变量
4、数组中的每一个元素都属于一种数据类型
5、数组一旦创建,不能改变大小
6、数组中的元素在内存中是连续依次排列的
三、实验总结
1、数组下标第一个从0开始
2、不会的可以查百度