输入10个学生的成绩,输出高于平均的成绩和人数(c++))

输入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;
} 

img