依然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 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么