第八次实验作业
1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩
#include<stdio.h> int main() { int N; printf("请输入班级人数"); scanf("%d",&N); int score[N],i,sum,max,min,grade,n=0,index1,index2; double average; for(i=0;i<N;i++) { printf("请输入学生的成绩:\n"); scanf("%d",&score[i]); } sum=0; //求和、平均值 for(i=0;i<N;i++) { sum+=score[i]; } average=(double)sum/N; printf("average=%.2lf\n",average); //最大值 max=score[0]; index1=0; for(i=0;i<N;i++) { if(score[i]>max) { index1=i; max=score[i]; } } printf("最大值为%d,是第%d个学生\n",max,index1+1); //最小值 min=score[0]; index2=0; for(i=0;i<N;i++) { if(score[i]<min) { min=score[i]; index2=i; } } printf("最小值为%d,是第%d个学生\n",min,index2+1); printf("输入你想找的同学的成绩:\n"); scanf("%d",&grade); for(i=0;i<N;i++) { if(grade==score[i]) { printf("找到,是第%d个学生\n",i+1); n++; } } printf("共有%d个学生",n); return 0; }
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
#include<stdio.h> int main() { int i,n,p; int array[11]={0,11,22,33,55,66,77,88,99,100}; for(i=0;i<11;i++) { printf("%d ",array[i]); } printf("请输入一个正整数整数:\n"); scanf("%d",&n); for(i=0;i<11;i++) { if(n>array[i]&&n<array[i+1]) { for(p=10;p>i;p--) { array[p]=array[p-1]; } array[i+1]=n; } else if(n>array[9]) { array[10]=n; } else if(n<array[0]) { for(p=10;p>=0;p--) { array[p]=array[p-1]; } array[0]=n; } printf("%d ",array[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\n",x,y,sum); } } return 0; }
知识点总结:
1.数组的特点
(1)数组中的每一个元素都属于同一种数据类型。
(2)数组一旦创建,不能改变大小。
(3)数组中的元素在内存中是连续依次排列的。
2.一维数组的引用
(1)数组必须先定义,后使用。
(2)只能逐个引用数组元素,不能一次引用整个数组
(3)每个数组元素是一个数组类型的变量。
3.一维数组的赋值
(1)数组不初始化,其元素值为随机数。
(2)只给部分数组元素赋初值,则其后的元素被初始化为0
(3)当全部数组元素赋初值时,可不指定数组长度
实验总结(实验中遇到的问题及解决方法):
1.数组变量本身(数组名)不能被赋值。
2.数组必须先定义,后使用。
3.数组名【下标】下标从0开始。
4.数组中的每一个元素都属于同一种数据类型
5.数组一旦创建,不能改变大小
6.for后便不要加分号