只争朝夕89 2022-12-11 18:51 采纳率: 100%
浏览 59
已结题

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

输入10个学生的成绩,输出高于平均的成绩和人数 c语言编写,谢谢

  • 写回答

1条回答 默认 最新

  • a5156520 2022-12-11 19:12
    关注

    我的思路如下:

    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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月27日
  • 已采纳回答 3月19日
  • 创建了问题 12月11日

悬赏问题

  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误