输入10个学生的成绩,输出高于平均的成绩和人数 c语言编写,谢谢
我的思路如下:
1、用一个for循环来获取10个学生的成绩存入数组中,同时计算分数的和;
2、根据分数和求的平均分成绩,再用第二个for循环来遍历成绩数组,将高于平均分的成绩存入另外一个数组;
3、根据第二个for循环的计算结果来打印输出。(有个特例,当所有学生成绩都相同时,他们的分数即和平均分都相同,所以超过平均分的个数即为0)
代码如下:
参考链接:
c语言 int类型的可以和double类型的比较大小 - sky20080101 - 博客园
#include <stdio.h>
int main(void){
int scores[10];
float avg=0,sum=0;
int i;
printf("请输入10个学生的成绩:\n");
//获取10个学生的成绩到数组scores中
for(i=0;i<10;i++){
scanf("%d",&scores[i]);
sum+=scores[i]; // 把每个学生的成绩累加到和中,以便下面计算平均分
}
avg=sum/10; //根据分数的和来求平均分
int num=0; //超过平均分的成绩的个数,默认为0个
//printf("avg=%f\n",avg);
int greaterAvg[10]; //存储超过凭据分成绩的数组
for(i=0;i<10;i++){
// https://www.cnblogs.com/sky20080101/articles/6405404.html
if(scores[i]-avg>0){ // 如果当前分数大于平均分,则把这个分数存入 greaterAvg数组中
greaterAvg[num]=scores[i];
num++; // 超过平均分成绩的个数+1
}
}
// 打印结果
if(num>0){
printf("超过平均分的成绩有%d个,它们分别是:",num);
for(i=0;i<num;i++){
printf("%d ",greaterAvg[i]);
}
}else{ //这个是特例,即当所有学生成绩都相同时,他们的分数都是平均分,所以超过平均分的个数为0
printf("超过平均分的成绩有%d个.",num);
}
return 0;
}