首页 > 代码库 > 第八次作业
第八次作业
1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
#include<stdio.h> #define N 100 int main() { int a,b=0,c=0,d=0,e,i,score[N],sum=0,max,min; double avg; for(i=0;i<=N;i++) { printf("请输入学生成绩\n"); scanf("%d",&score[i]); if(score[i]<0) { break; } b++; } for(i=0;i<b;i++) { sum+=score[i]; } avg=(double)sum/b; max=score[0]; min=score[0]; for(i=0;i<b;i++) { if(score[i]>max) { max=score[i]; c=i; } } for(i=0;i<b;i++) { if(score[i]<min) { min=score[i]; d=i; } } printf("平均数为%lf,第%d个学生有最高分为%d,第%d个学生有最低分为%d\n",avg,c+1,max,d+1,min); printf("请输入要查找的学生成绩\n"); scanf("%d",&e); for(i=0;i<b;i++) { if(e==score[i]) { printf("这是第%d个学生的成绩\n",i+1); } } return 0; }
总结:数组要配合循环一块使用。
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
#include<stdio.h> #define N 11 int main() { int num[N]={1,3,5,7,9,11,13,15,17,19}; int a,b,i,j; printf("请输入一个数\n"); scanf("%d",&a); for(i=0;i<N-1;i++) { if(a>num[i]) { b=i; } } if(b==N-2) { num[10]=a; } else if(b==0) { for(j=9;j>=b;j--) { num[j+1]=num[j]; } num[b]=a; } else { for(j=9;j>=b;j--) { num[j+1]=num[j]; if(j==b) { num[b+1]=a; } } } for(i=0;i<N;i++) { printf("%d ",num[i]); } return 0; }
总结:一定要把情况考虑全。
3.用数组实现火柴棍等式.
#include<stdio.h> #define N 10 int main() { int match[10]={6,2,5,5,4,5,6,3,7,6}; int i,j,k; for(i=0;i<10;i++) { for(j=0;j<10;j++) { for(k=0;k<10;k++) { if(i+j==k&&match[i]+match[j]+match[k]==12) { printf("%d+%d=%d\n",i,j,k); } } } } return 0; }
总结:用数组处理这个问题比函数要简单。
二、知识点总结
1,数组名不可以赋值。
2,C语言不会对数组下标做越界检查,编数组一定要认真检查。
3,数组下标从0开始!!!
4,对数组数据的访问一定是跟循环结构分不开的,一般情况下,循环变量的值随数组元素的下标变化。
三、实验总结
1,要定义数组。
2,情况要想全,各种分类都要考虑到。
3,就火柴棍那个题我觉得数组要比函数简单。
第八次作业
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。