输入8个学生某门功课的成绩,用函数判断成绩等级求出平均分,并在…

【要求】原题在219页
输入10个学生5门课的成绩,分别用函数实现下列功能:
计算每个学生的平均分;
计算每门课的平均分;
找出所有50个分数中最高的分数所对应的学生和课程;
计算平均分方差:
  &=&xi2/n-(&xi/n)2
  其中,xi为某一学生的平均分。
人类已经无法阻止我把一个简单程序写复杂了,哈哈。先贴代码再说吧。
1 #include&stdio.h&
//实现自定义学生数
3 int main()
int ctu=0;
float Savg(float a[][5],int);
//每个学生平均成绩
void Cavg(float a[][5]);
//每门课平均成绩
void max(float a[][5]);
//最高分数
float var(float a[][5]);
//平均方差 10
void pc(int);
//输出课程名 11
float a[100][5];int i,j;
//定义二维数组 12
printf("设定5门课依次是:\n语文、数学、英语、物理、化学\n"); 13
//begin 15
printf("plez input number of student:\n"); 16
scanf("%d",&M);
//自定义学生数 17
printf("plez intput %d student's score,\ngrounp by student:\n\n",M); //按学生输入成绩 18
for(i=0;i&M;i++) 19
for(j=0;j&5;j++) 20
scanf("%f",&a[i][j]); 21
printf("\naverage by student:\n\n");
//提示下面输出学生平均成绩 22
for(i=0;i&M;i++) 23
printf("student %d:%.2f\n",i+1,Savg(a,i)); 24
printf("\naverage by course:\n\n");
//提示下面输出课程平均成绩 25
//计算并输出课程平均成绩 26
printf("\nthe max score is:\n\n");
//提示下面输出最高成绩 27
//找出并输出最高成绩 28
printf("\nthe variance is %.2f\n\n",var(a));
//计算并输出方差 29
printf("press 1 to continue, or any key to quit\n");
scanf("%d",&ctu); 31
}while(ctu==1); 32
return 0; 33 } 34
35 float Savg(float a[100][5],int i)
//学生平均成绩 36 { 37
intfloat 38
for(j=0,b=0;j&5;j++) 39
b=b+a[i][j]; 40
return (b/5); 41 } 42
43 void Cavg(float a[100][5])
//计算并输出课程平均成绩 44 { 45
void ptintCavg(int,float); 46
floatint i,j; 47
for(j=0;j&5;j++) 48
for(i=0,b=0;i&M;i++) 50
b=b+a[i][j]; 51
pc(j);printf(":%.2f\n",b/M); 52
}; 53 } 54
55 void pc(int j)
//输出课程名 56 { 57
switch(j) 58
case 0:printf("语文");break; 60
case 1:printf("数学");break; 61
case 2:printf("英语");break; 62
case 3:printf("物理");break; 63
case 4:printf("化学");break; 64
67 void max(float a[100][5])
//找最高成绩 68 { 69
int b,i,j,p,q; 70
for(i=0;i&M;i++) 71
for(j=0;j&5;j++) 72
//每次比较前重置b 74
for(p=0;p&M;p++) 75
for(q=0;q&5;q++) 76
if(a[i][j]&a[p][q])b=0; 77
if(b==0)continue; 78
printf("%.2f\tstudent %d\t",a[i][j],i+1); 79
pc(j);printf("\n"); 80
}; 81 } 82
83 float var(float a[100][5]) 84 { 85
float Exi2(float a[][5]); 86
float Exi(float a[][5]); 87
b=Exi2(a)/M-(Exi(a)*Exi(a))/(M*M); 89
return 90 } 91
92 float Exi2(float a[][5]) 93 { 94
float b=0;int 95
for(i=0;i&M;i++) 96
b=b+Savg(a,i)*Savg(a,i); 97
return 98 } 99 100 float Exi(float a[][5])101 {102
float b=0;int103
for(i=0;i&M;i++)104
b=b+Savg(a,i);105
return106 }
首先,我做了一个小的变动,即可以自己定义学生的人数(这才符合一个程序)。虽然说在C语言里数组的大小不能自由地自定义,但是变通变通,还是可以&自定义&的,具体怎么实现,好好看看上面的代码,就会明白了(提示,好好研究其中的全局变量M)。
本来每一个小问题写的是独立的函数,但是后面发现在第4个问题里也要用到求每个学生的平均分,于是就重新写了一下第1个问题里的函数,使之独立出来,可供后面使用。这样一来,在第1个问题里调用是,就要显得麻烦一些(见22、23行)。
至于在一个数组,甚至是多维数组里找最值,并要输出其下标的方法,可以参见void max(float a[][5])(第8行),以及从第67行到第81行,其中第73行要特别主要,必不可少,否则将导致程序发生让你抓狂的错误。相同的例子可以看我的另一篇博文。
其他的,就先不再说了。
阅读(...) 评论()写一个统计学生成绩的程序,分别用子函数求出,输入n个学生m门功课的成绩,每个学生的平均分,每门功课的平均分【程序设计吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:22,619贴子:
写一个统计学生成绩的程序,分别收藏
写一个统计学生成绩的程序,分别用子函数求出,输入n个学生m门功课的成绩,每个学生的平均分,每门功课的平均分,找出最高分所对应的学生和功课。要求,由四个单独的子函数完成上述功能
用动态存储分配思想完成数组的定义哪位大神帮帮忙呗,真的很急希望能用c++写出来多谢多谢
登录百度帐号推荐应用C语言问题,输入10个学生5门课成绩,分别用函数实现下列功能:_百度知道
C语言问题,输入10个学生5门课成绩,分别用函数实现下列功能:
计算每个学生平均分
计算每科平均分
找出五十个分数中最高分,和对应的学生和课程。
我编的是这样:
#include&stdio.h&
int main()
void max(int [][]);
void averagek(int [][]);
void averages(int [][]);
int a[10][5],z,x,i,j...
#include&stdio.h&int main(){
void max(int [][5]);//注意二位数组传递参数时,行数信息可以省略,但一定列数不能
void averagek(int [][5]);
void averages(int [][5]);
int a[10][5],i;//后面很多没用上的变量就不需要了
for(i=0;i&=9;i++)
printf(&请输入第%d名学生五科成绩(中间用空格隔开):&,i+1);
scanf(&%d %d %d %d %d&,&a[i][0],&a[i][1],&a[i][2],&a[i][3],&a[i][4]);
averages(a);
averagek(a);
return 0;}void averages(int a[][5]){
for(i=0;i&=9;i++)
m=(a[i][0]+a[i][1]+a[i][2]+a[i][3]+a[i][4])/5;
printf(&第%d名学生平均分为:%d\n&,i+1,m);
}}void averagek(int a[][5]){
for(i=0;i&=4;i++)
m=(a[0][i]+a[1][i]+a[2][i]+a[3][i]+a[4][i]+a[5][i]+a[6][i]+a[7][i]+a[8][i]+a[9][i])/10;
printf(&第%d科成绩平均分为%d\n&,i+1,m);//帮你加了个换行符,开始没加时好乱,信息全一起
}}void max(int a[][5]){
int i,j,max,k,g;//你这里g后面多了逗号,小错误不要犯
max=a[0][0];
for(i=0;i&=9;i++)
for(j=0;j&=4;j++)
if(a[i][j]&max)
max=a[i][j];
printf(&第%d名学生的第%d科成绩取得最高分:%d\n&,k+1,g+1,max);//帮你加了个换行符,开始没加时好乱,信息全一起,还有就是个数要比数组下标多1,所以要加上去}
采纳率:50%
为您推荐:
其他类似问题
c语言的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 用函数判断成绩等级 的文章

 

随机推荐