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

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();
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 请用MATLAB画含有二重积分和累加求和的随时间t变化的函数图像,不知如何把二重积分加到循环里,请解答一下
  • ¥15 kali终端update时出现这样的情况
  • ¥15 matlab调用stl文件时报错说内存不足
  • ¥20 医学图像格式、医学图像后处理
  • ¥15 MATLAB中的矩阵分离问题
  • ¥15 服务端可运行语言,解析unity文件
  • ¥15 英飞凌TC387使用MCAL唤醒TJA1145问题
  • ¥15 android tv图标显示异常
  • ¥20 (标签-AR|关键词-预测分析)
  • ¥15 QT IFW 自定义界面添加lineedit小键盘输入数字无效果