2301_76840089 2023-03-20 23:00 采纳率: 100%
浏览 64
已结题

关于#c语言#的问题:随机产生30个学生的C语言成绩(成绩范围在[0,100]之间),统计并输出不及格(<60分)的人数,并按照从大到小的顺序将数组所有元素进行排序,分别显示排序前和排序后的结果

随机产生30个学生的C语言成绩(成绩范围在[0,100]之间),统计并输出不及格(<60分)的人数,并按照从大到小的顺序将数组所有元素进行排序,分别显示排序前和排序后的结果,每行输出10个。

  • 写回答

3条回答 默认 最新

  • 爱音斯坦牛 全栈领域优质创作者 2023-03-20 23:27
    关注

    回答如下,记得采纳!

    img

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    #define N 30
    
    int main() {
        int scores[N];
        int i, j, temp;
        int fail_count = 0;
    
        // 随机生成成绩
        srand((unsigned)time(NULL));
        for (i = 0; i < N; i++) {
            scores[i] = rand() % 101;
        }
    
        // 统计不及格的人数
        for (i = 0; i < N; i++) {
            if (scores[i] < 60) {
                fail_count++;
            }
        }
        printf("不及格的人数:%d\n", fail_count);
    
        // 排序并输出结果
        printf("排序前的结果:\n");
        for (i = 0; i < N; i++) {
            printf("%d ", scores[i]);
            if ((i+1) % 10 == 0) printf("\n");
        }
        printf("\n");
    
        for (i = 0; i < N-1; i++) {
            for (j = 0; j < N-i-1; j++) {
                if (scores[j] < scores[j+1]) {
                    temp = scores[j];
                    scores[j] = scores[j+1];
                    scores[j+1] = temp;
                }
            }
        }
    
        printf("排序后的结果:\n");
        for (i = 0; i < N; i++) {
            printf("%d ", scores[i]);
            if ((i+1) % 10 == 0) printf("\n");
        }
        printf("\n");
    
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月29日
  • 已采纳回答 3月21日
  • 创建了问题 3月20日

悬赏问题

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