1、实验7 数组学生成绩管理系统V1.0实验目的:1. 熟悉一维数组编程 2. 掌握排序,查找,统计分析等常用方法 实验题目:某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,用一维数组 编程实现如下学生成绩管理:1. 录入每个学生的学号和考试成绩; 2. 计算课程的总分和平均分; 3. 按成绩由高到低排出名次表; 4. 按学号由小到大排除成绩表; 5. 按学号查询学生排名及其考试成绩; 6. 按优秀(90100),良好(8089),中等(7079),及格(6069),不及格(059)5个类别,统计每个类别的人数以及所占的百分比; 7. 输出每个学生的学号,考试成绩,课程总分和平均分
2、. 程序如下:#includedefine N 30void main()int i,n;long numberN;float scoreN; void input(long number,float score,int n); void sa(float score,int n); void sb(long number,float score,int n); void sc(long number,float score,int n); void sd(long number,float score,int n); void se(float score,int n); void sf(l
3、ong number,float score,int n);printf(”输入学生人数:”);scanf(”d,&n);input(number,score,n); for(i=0;in;i+)printf(”学号:%ld,成绩:%fn”,numberi,scorei);sa(score,n); sb(number,score,n); sc(number,score,n); sd(number,score,n); se(score,n); sf(number,score,n);void input(long number,float score,int n)int i;for(i=0;in;
4、i+)printf(请输入第d位学号和成绩:如(000000,90.0):”,i+1); scanf(”%ld,f”,numberi,&scorei);void sa(float score,int n)int i;float sum=0;for(i=0;in;i+) sum=sum+scorei;printf(”课程的总分为:fn”,sum);printf(”课程的平均分为:%fn”,sum/n);void sb(long number,float score,int n)int i,j;float temp;long m;for(i=1;in;i+)for(j=0;jni;j+)if(sc
5、orejscorej+1)temp=scorej;m=numberj;scorej=scorej+1; numberj=numberj+1;scorej+1=temp; numberj+1=m; for(i=0;in;i+) printf(”成绩第%d名成绩为:ld,%fn”,i+1,numberi,scorei);void sc(long number,float score,int n)int i,j;float temp;long m;for(i=1;in;i+)for(j=0;jn-i;j+)if(numberjnumberj+1)m=numberj; temp=scorej; num
6、berj=numberj+1; scorej=scorej+1; numberj+1=m; scorej+1=temp; for(i=0;in;i+) printf(学号由小到大为:%ld,fn,numberi,scorei);void sd(long number,float score,int n)int i,j;float temp;long m,sn;for(i=1;in;i+)for(j=0;jn-i;j+)if(scorejscorej+1)temp=scorej;m=numberj;scorej=scorej+1; numberj=numberj+1;scorej+1=temp;
7、 numberj+1=m; printf(”请输入要查询的学生学号:”); scanf(”%ld,&sn); for(i=0;in;i+) if(numberi=sn) printf(”查询学生的学号%ld,成绩为%fn,sn,scorei);void se(float score,int n)int a=0,b=0,c=0,d=0,e=0,i;for(i=0;in;i+)switch((int)scorei/10)case 10:case 9:a=a+1;break;case 8:b=b+1;break;case 7:c=c+1;break;case 6:d=d+1;break;defaul
8、t:e=e+1;printf(优秀(90100)的人数为:%dn”,a);printf(优秀率:%d%n,(100*a)/n); printf(”良好(8089)的人数为:%dn”,b);printf(良好率:%d%n,(100*b)/n); printf(”中等(7079)的人数为:dn,c); printf(中等率:d%n”,(100c)/n); printf(”及格(6069)的人数为:dn,d);printf(”及格率:d%n”,(100*d)/n); printf(不及格(059)的人数为:dn,e); printf(”不及格率:d%n,(100e)/n);void sf(long number,float score,int n)int i;for(i=0;in;i+)printf(”学生学号为%ld的成绩是:%fn,numberi,scorei);void sa(float score,int n);sa(score,n);