依然649 2022-09-10 23:46 采纳率: 50%
浏览 44
已结题

如何将这个代码补充完整(语言-c语言)

img


输入学生成绩信息(包括学号、姓名、语文、英语、数学),计算出学生成绩总分,并按总分从高到低输出

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2022-09-11 09:15
    关注

    代码修改如下,供参考对照:

    #include <stdio.h>
    typedef struct {
        char no[20];
        char name[20];
        float yw;
        float sx;
        float yy;
        float sum;
    }Student;
    //Student stds[1000]; 这里全局变量定义多余了
    void input(Student s[], int* len)
    {
        int i, n;
        printf("请输入增加的人数:");
        scanf("%d", &n);
        for (i = (*len), (*len) += n; i < (*len); i++) {
            printf("学号:");
            scanf("%s", s[i].no);
            getchar();
            printf("姓名:");
            scanf("%s", s[i].name);
            getchar();
            printf("语文:");
            scanf("%f", &s[i].yw);
            getchar();
            printf("数学:");
            scanf("%f", &s[i].sx);
            getchar();
            printf("英语:");
            scanf("%f", &s[i].yy);
            getchar();
        }
    
    }
    void sum(Student s[], int len)
    {
        int i;
        for (i = 0; i < len; i++) {
            s[i].sum = s[i].yw + s[i].sx + s[i].yy;
        }
    }
    void swap(Student* a, Student* b)
    {
        Student tmp;
        tmp = *a;
        *a = *b;
        *b = tmp;
    }
    void sort(Student s[], int len)
    {
        int i, j;
        for (i = 0; i < len - 1; i++)
            for (j = i + 1; j < len; j++)
                if (s[i].sum < s[j].sum)
                    swap(&s[i], &s[j]);
    }
    void print(Student s[], int len)
    {
        int i;
        for (i = 0; i < len; i++)
            printf("%s,%s,%.2f,%.2f,%.2f,%.2f\n", 
                s[i].no, s[i].name, s[i].yw, s[i].sx, s[i].yy, s[i].sum);
    }
    int main()
    {
        Student stds[1000] = {
            {"1001","李三",100,100,100,0},
            {"1002","张三",80,80,85,0},
            {"1003","王二",70,95,87,0},
            {"1004","李四",60,90,82,0}
        };
        int len = 4;
        input(stds, &len);
        sum(stds, len);
        sort(stds, len);
        print(stds, len);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月1日
  • 已采纳回答 10月1日
  • 修改了问题 9月11日
  • 修改了问题 9月11日
  • 展开全部

悬赏问题

  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题