ghjhkniob 2020-05-18 17:22 采纳率: 93.3%
浏览 1592
已采纳

C语言有10个学生,每个学生数据包括学号、姓名和成绩,前8个学生的数据采用初始化,后2个学生键盘输入?

63.
编程题
有10个学生,每个学生数据包括学号、姓名和成绩,前8个学生的数据采用初始化,后2个学生键盘输入。编写一个程序,将这10个学生的信息按成绩由高到低的顺序排序并保存后输出所有学生的全部信息。
请认真测试程序的正确性。将源代码以文本方式提交,不要直接提交文件。

  • 写回答

1条回答 默认 最新

  • Huoon 2020-05-20 22:35
    关注
    
    #include <random>
    #include <stdio.h>
    #define STUDENT_COUNT  10
    #define NAME_LEN  64
    
    struct Student
    {
        int no;
        char name[NAME_LEN];
        int score;
    };
    
    void sort(struct Student* students, int count)
    {
        int i = 0;
        int j = 0;
        struct Student temp;
        for (i = 0; i < count; i++)
        {
            for (j = 0; j < count - 1; j++)
            {
                if (students[j].score < students[j + 1].score)
                {
                    temp = students[j];
                    students[j] = students[j + 1];
                    students[j + 1] = temp;
                }
            }
        }
    }
    
    void main()
    {
        int i = 0;
        const char* name_prefix = "name";
        struct Student* students = (struct Student*)malloc(sizeof(struct Student) * STUDENT_COUNT);
    
        for (i = 0; i < STUDENT_COUNT - 2; i++)
        {
            students[i].no = i;
    
            memset(students[i].name, 0, NAME_LEN);
            memcpy(students[i].name, name_prefix, strlen(name_prefix));
            students[i].name[strlen(name_prefix)] = i + '0';
    
            students[i].score = rand() % 100;
        }
    
        printf("输入学号,姓名,分数:\n");
        scanf("%d%s%d", &students[i].no, students[i].name, &students[i].score);
        i++;
    
        printf("输入学号,姓名,分数:\n");
        scanf("%d%s%d", &students[i].no, students[i].name, &students[i].score);
    
    
        sort(students, STUDENT_COUNT);
    
        for (i = 0; i < STUDENT_COUNT; i++)
        {
            printf("no:%d  name:%s  score:%d\n", students[i].no, students[i].name, students[i].score);
        }
    
        getchar();
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵