一、实验程序
1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
#include<stdio.h> #define N 100 int main() { int n,score[N],sum,i,max,min,wei,x; double average; printf("请输入学生人数 ",n); scanf("%d",&n); printf("请输入所有学生的成绩 "); sum=0; for(i=0;i<n;i++) // 平均数 { scanf("%d",&score[i]); sum=sum+score[i]; } average=(double)sum/n; printf("学生的平均成绩为%.2lf",average); max=score[0]; //最大值 wei=0; for(i=0;i<n;i++) { if(score[i]>max) { max=score[i]; wei=i; } } printf("最高分是%d,这个学生是%d",max,wei); min=score[0]; //最小值 wei=0; for(i=0;i<n;i++) { if(score[i]<min) { min=score[i]; wei=i; } } printf("最低分是%d,这个学生是%d",min,wei); printf("请你输入你要查找的学生的成绩 "); scanf("%d",x); wei=0; //查找学生 for(i=0;i<n;i++) { if(x==score[i]) { wei=i+1; } } printf("是%d学生的成绩 ",wei); return 0; }
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
#include<stdio.h> int main() { int i,j,a, N[11]={0,3,10,15,25,30,34,56,59,66}; printf("输入一个数 "); scanf("%d",&a); if(a>=N[9]) { printf("现在数据为:0,10,20,30,40,50,60,70,80,90,%d",a); } else { for(i=0;i<10;i=i+1) { if(a<N[i]) { j=i; break; } } for(i=10;i>=j;i=i-1) { N[i+1]=N[i]; } N[j]=a; printf("现在数据为"); for(i=0;i<11;i=i+1) { printf("%d ",N[i]); } } return 0; }
3.用数组实现火柴棍等式
#include<stdio.h> int main() { int x,y,z; int gen[10]={6,2,5,5,4,5,6,3,7,6}; for(x=0;x<=9;x++) { for(y=0;y<=9;y++) { for(z=0;z<=9;z++) { if(gen[x]+gen[y]+gen[z]==12&&x+y==z&&x!=y) { printf("%d+%d=%d ",x,y,z); } } } } return 0; }
二、知识点总结
1、一维数组的定义:数据类型 数组名[数组长度]; 如 int a[10]
2、数组的特点: 每一个元素都属于同一种数据类型,数组一旦创建,不能改变大小。数组中的元素在内存中是连续依次排列的。
3、数组下标从0开始,允许快速随机访问
4、数组不能初始化,其元素值为随机数
5、只能给部分数组元素赋初值,则其后的元素被初始化为0
6、当全部数组元素赋初值时,可不指定数组长度
三、实验总结
1、最好标记解释一下,容易看清自己的程序
2、通常通过循环结构来实现对数组进行动态赋值