第八次作业
1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
# include<stdio.h> # define N 100 int main() { int a,b=0,c=0,d,e=0,sum=0,max,min,i; double average; int score[N]; printf("请输入学生人数"); scanf("%d",&a); for(i=0;i<a;i++) { printf("请输入学生成绩"); scanf("%d",&score[i]); sum=sum+score[i]; } average=(double)sum/a; printf("平均数为%.2f\n",average); max=score[0]; min=score[0]; for(i=0;i<a;i++) { if(score[i]>=max) { b=i+1; } } for(i=0;i<a;i++) { if(score[i]<=min) { c=i+1; } } printf("最大分数的学生为%d",b); printf("最小分数的学生为%d",c); printf("输入一个分数,输出他是第几个"); scanf("%d",&d); for(i=0;i<a;i++) { if(score[i]==d) {
e=i+1; printf("他是第%d个学生",e); } } return 0; }
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证
#include <stdio.h> #define N 10 int main() { int a,b,c,i; int num[N]={1,3,5,7,9,11,13,15,17}; printf("请输入一个数,将其插入数据中"); scanf("%d",&a); for(i=0;i<N;i++) { if(a<=num[i]) { b=i; printf("%d",b); break; } if(a>num[N-1]) { num[N-1]=a; } } for(i=b,c=N-1;i<c;c--) { num[c]=num[c-1]; } num[b]=a; for(i=0;i<N;i=i+1) { printf("%d ",num[i]); } return 0; }
3.用数组实现火柴棍等式
# include <stdio.h> int main() { int a,b,sum; int gen[10]={6,2,5,5,4,5,6,3,7,6}; for(a=0;a<=9;a++) { for(b=0;b<=9;b++) { sum=a+b; if(sum>9) { break; } if(gen[a]+gen[b]+gen[sum]==12) { printf("%d+%d=%d\n",a,b,sum); } } } return 0; }
知识点总结:元素应该是同种数据类型,元素在内存中是连续依次排列的;
在定义数组的同时对数组元素赋以初值,元素不初始化,其元素值为随机数;只给部分数组元素赋初值,其后 元素被初始化为0。
实验总结:数组的下标是从0开始的;
整型除以整型还是整型,所以需要进行强制转化;
记得写“&”