成绩处理c语言,《C语言及程序设计》实践参考——成绩处理

【项目2- 成绩处理】

在数组score中将要存储某小组C程序设计的成绩,请完成下面的处理:

(1)输入小组人数及成绩,要保证成绩在0-100之间;

(2)输出该小组的最高成绩、最低成绩、平均成绩;

(3)输出考得最高成绩和最低成绩的同学的人数;

(4)输出考得最高成绩和最低成绩的同学的学号(设数组下标即学号,可能有相同的成绩)。

(5)(选做)求出所有同学成绩的标准偏差,标准偏差公式为

ce73d9291bcf8199a860bdee0a24bbfb.png,其中为样本(即某同学成绩),为均值(前面已经求出),为样本数目;

提示1:可以采用“渐进式”策略,实现一个功能后调试通过,再实现下一个功能。

提示2:界面参考见图

81ebd4921077d67498014fe85a603a16.png

提示3:请思考,如果这里的同学人数很多,例如500、10000名,这个程序中通过键盘输入的方式,已经显得无能为力!如何解决?

int main()

{

int score[50]; //保存成绩的数组,不会超过50名

int num,i; //小组人数

printf("小组共有多少名同学?";

scanf("%d", &num);

printf("请输入学生成绩:\n")

//输入num名同学的成绩

//求出并输出最高成绩、最低成绩和平均成绩

//求出并输出考得最高成绩和最低成绩人数以及学号

//求出并输出标准偏差(选做)

return 0;

}[参考解答]

#include

#include

int main( )

{

int score[50]; //保存成绩的数组,不会超过50名

int num,i; //小组人数

printf("小组共有多少名同学?");

scanf("%d", &num);

printf("请输入学生成绩:\n");

//输入num名同学的成绩

for(i=0; i

do

{

printf("输入第 %d 位同学的成绩:", i);

scanf("%d", &score[i]);

}

while(score[i]<0||score[i]>100);

//求最高成绩、最低成绩和平均成绩

int max = -1,min=999,sum=0, ave;

for(i=0; i

{

sum+=score[i];

if(max

max= score[i];

if(min>score[i])

min = score[i];

}

ave=sum/num;

printf("\n");

printf("最高成绩为:%d,最低成绩为:%d,平均成绩为:%d\n", max, min, ave);

//求考得最高成绩和最低成绩人数

int max_num = 0, min_num =0;

for(i=0; i

{

if(max==score[i])

max_num++;

if(min==score[i])

min_num++;

}

//输出考得最高成绩的人数和学号

printf("取得最高成绩 %d 分的共 %d 人,他们的学号是:", max, max_num);

for(i=0; i

{

if(max==score[i])

printf("%d ", i);

}

printf("\n");

printf("取得最低成绩 %d 分的共 %d 人,他们的学号是:", min, min_num);

//输出考得最低成绩的人数和学号

for(i=0; i

{

if(min==score[i])

printf("%d ", i);

}

printf("\n");

//求出并输出标准偏差(选做)

sum = 0;

int x; //x表示成绩与均值之差

for(i=0; i

{

x=score[i]-ave;//ave是前面求出的平均成绩

sum+=x*x;

}

printf("标准偏差为:%.4f\n", sqrt((double)(sum)/(num-1)));

return 0;

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值