首页 > 代码库 > 第八次作业
第八次作业
1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
#include<stdio.h> #define N 100 int main() { double average; int score[N],i,sum,max,index1,min,index2,index3,n,grade,a; printf("请输入学生人数\n"); scanf("%d",&a); sum=0; for(i=0;i<a;i++) { printf("请输入学生成绩\n"); scanf("%d",&score[i]); if(score[i]<=0) { break; } sum+=score[i]; } average=(double)sum/a; printf("average=%.2lf\n",average); max=score[0]; index1=0; for(i=0;i<a;i++) { if(score[i]>max) { max=score[i]; index1=i+1; } } printf("max=%d,index1=%d\n",max,index1); min=score[0]; index2=0; for(i=0;i<a;i++) { if(score[i]<min) { min=score[i]; index2=i+1; } } printf("min=%d,index2=%d\n",min,index2); printf("请输入一个人的成绩"); scanf("%d",&grade); n=0; for(i=0;i<a;i++) { if(grade==score[i]) { printf("index=%d\n",i+1); break; } } return 0; }
2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
#include <stdio.h> #define N 11 int main() { int a[N]={1,3,5,7,9,11,13,15,17,19},num,i,m=10; printf("请输入一个数字\n"); scanf("%d",&num); for(i=0;i<=N-1;i++) { if(num<a[i]) { m=i; break; } } for(i=N-1;i>m;i--) { a[i]=a[i-1]; } a[i]=num; for(i=0;i<N;i++) { printf("%d ",a[i]); } printf("\n"); return 0; }
3.用数组实现火柴棍等式
复制代码 #include<stdio.h> int main() { int match[10]={6,2,5,5,4,5,6,3,7,6},x,y,z,sum; for(x=0;x<=9;x++) for(y=0;y<=9;y++) { z=x+y; if(z>9) { break; } sum=match[x]+match[y]+match[z]; if(sum==12) { printf("%d+%d=%d\n",x,y,z); } } return 0; }
实验总结:第一题,用负数结束开始不知道怎么结束,想了很久,问了问别人才知道让成绩小于0然后break就可以了。很多点其实特别简单,是自己把它想的太复杂化了。问题可以简单的处理。然后第二题的插入,也是开始做总是替换后面的值,后来看了看别人的程序,才发现自己的问题。然后第三个火柴棍做过很多次了,但是每一次做都有新的发现,可能是因为做的方法不一样,所以程序理解的还是不够透彻不然也不会觉得很新。总之程序千篇一律,要把握住规律技巧和方法才能写对写好。
知识点总结:1.一般在主函数前定义#define N[*],便于改变N值。
2.定义的元素要记得赋初值。
3.数组必须先定义然后再使用。
第八次作业
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。