1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
#include<stdio.h> #define N 100 int main() { int score[N],i,n,grade,index2,index1,m=0; double ave,max,min,sum; for(i=0;i<N;i++) { printf("请输入学生的成绩"); scanf("%d",&score[i]); if(score[i]==-1) { break; } m++; } sum=0; for(i=0;i<m;i++) { sum+=score[i]; ave=sum/(double)m; } printf("平均数为%.2lf ",ave); //最大最小值 max=score[0]; index1=0; for(i=0;i<=m;i++) { if(score[i]>max) { index1=i; max=score[i]; } } printf("最大值为%.2lf,是第%d位同学 ",max,index1+1); min=score[0]; index2=0; for(i=0;i<m;i++) { if(score[i]<min) { index2=i; min=score[i]; } } printf("最小值为%.2lf,是第%d位同学 ",min,index2+1); //查找 printf("请输入你想找的分数 "); scanf("%d",&grade); for(i=0;i<m;i++) { if(grade==score[i]) { printf("你想找的分数在%d位 ",i+1); } } return 0; }
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
#include<stdio.h> int main() { int i,n,m; int a[10]={1,3,5,7,9,11,13,15,17}; for(i=0;i<9;i++) { printf("%d ",a[i]); } printf("请输入一个正整数"); scanf("%d",&n); for(i=0;i<10;i++) { if(n>a[i]&&n<a[i+1]) { for(m=9;m>i+1;m--) { a[m]=a[m-1]; a[m-1]=n; } } else if(n>a[8]) { a[9]=n; } else if(n<a[0]) { for(m=9;m>=0;m--) { a[m]=a[m-1]; } a[0]=n; } printf("%d ",a[i]); } return 0; }
3.用数组实现火柴棍等式
#include<stdio.h> int main() { int x,y,sum; int match[10]={6,2,5,5,4,5,6,3,7,6}; for(x=0;x<=9;x++) { for(y=0;y<=9;y++) { sum=x+y; if(sum>9) { break; } if(match[x]+match[y]+match[sum]==12) { printf("%d+%d=%d ",x,y,sum); } } } return 0; }
二、知识点总结
(1)数组的定义:定义方式:数据类型 数据名【数据长度】
(2)数组必须先定义,后使用
(3)C语言不会对数组下标做越界检查
(4)数组名不能被赋值
(5) 数组名【下标】 下标从0开始
(6) 数组一旦创建,不能改变大小
(7) 数组中的元素在内存中是连续一次排列的
(8) 下标不仅可以是一个常数、变量,还可以是一个表达式。
三、实验总结
(1) a[N]是从0开始的不是从1开始的
(2) 插入数据时,要先把位置空出来,将后面的数依次往后挪。
(3) 忘记赋初值