761 2022-01-04 20:54 采纳率: 33.3%
浏览 81
已结题

成绩处理(1)求总分,输出总分最高的同学

描述
某个班级有n位学生(n不超过100)和m门功课(m不超过20)。现在输入每个学生的姓名和每门功课成绩。要求计算每个同学的总分,输出总高分的全部同学。 姓名最长不超20个字符。
输入
第一行输入两个整数,表示行数(n)和列数(m)。 接着n行,每行先输入姓名(姓名没有空格),然后输入m个整数,用空格分隔。每行代表一个同学的m门功课的分数
输出
输出全部最高分的同学,他们相对顺序不变。每个同学一行。 每行输出姓名,每门课成绩和总分。用一个空格分隔。
样例
输入
7 3
Jack 91 85 99
Allan 92 88 95
Tom 87 97 67
Deng 76 48 43
Jane 65 76 67
Ana 94 85 87
Anne 83 92 100
输出
Jack 91 85 99 275
Allan 92 88 95 275
Anne 83 92 100 275

  • 写回答

1条回答 默认 最新

  • bingbingyihao 2022-01-04 21:55
    关注

    回答:(采用DevC++编写,有些小警告,不影响运行,链表加结构体实现,效率并不是很高,但胜在容易理解,可以看看)

    img

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    typedef struct Student {
        char name[20];
        int arr[21];          //这里设置21个单位,就算有20门,也有位置放总分 
        struct Stu* next;
    }Stu;
    
    /*
    采用链表进行存储,空间预分配,会有剩余空间浪费,不过这样设计比较简单 ;这边采用尾插法初始化链表
    */
    void Init_list(Stu* head, int num, int lessons_num) {
        Stu* current = head;
        int i = 0;
        while (i < num) {
            Stu* new_node = (Stu*)malloc(sizeof(Stu));
    
            scanf("%s", new_node->name);
            int j;
            for (j = 0; j < lessons_num; j++) {
                scanf("%d", &new_node->arr[j]);
            }
            new_node->next = current->next;
            current->next = new_node;
    
            i++;
        }
    }
    
    Stu* Init_head() {
        Stu* head = (Stu*)malloc(sizeof(Stu));
    
        int i;
        for (i = 0; i < 20; i++) {
            head->arr[i] = -1;
        }
        strcpy(head->name, "");
        head->next = NULL;
    
        return head;
    }
    
    /*
    进行测试链表的代码
    */
    void Print_list(Stu* head, int lessons_num) {
        Stu* current = head->next;
    
        while (current) {
            printf("%s ", current->name);
            int i;
            for (i = 0; i < lessons_num; i++) {
                printf("%d ", current->arr[i]);
            }
    
            current = current->next;
            printf("\n");
        }
    }
    
    void Caculate_sum_score(Stu* head, int lessons_num){
        Stu* current = head->next;
    
        while (current) {
            int sum = 0;
            int i;
            for (i = 0; i < lessons_num; i++) {
                sum += current->arr[i];
            }
            current->arr[lessons_num] = sum;
    
            current = current->next;        
        }
    }
    
    int Get_max_score(Stu* head, int lessons_num){    
        Stu* current = head->next;
        int max = current->arr[lessons_num];
    
        while (current) {
            if(current->arr[lessons_num] > max)
                max = current->arr[lessons_num];
            
            current = current->next;        
        }
        return max;
    }
    
    void Print_max_score(Stu* head, int lessons_num, int max){
        Stu* current = head->next;
    
        while (current) {
            if (current->arr[lessons_num] == max) {
                printf("%s ", current->name);
                int i;
                for (i = 0; i < lessons_num+1; i++) {
                    printf("%d ", current->arr[i]);
                }
                printf("\n");
            }
            current = current->next;        
        }
    }
    
    /*
    7 3
    Jack 91 85 99
    Allan 92 88 95
    Tom 87 97 67
    Deng 76 48 43
    Jane 65 76 67
    Ana 94 85 87
    Anne 83 92 100
    */
    
    int main() {
        int n, m;
        scanf("%d%d", &n, &m);
        Stu* head = Init_head();
        Init_list(head, n, m);    
        Caculate_sum_score(head, m);
        int max = Get_max_score(head, m);
        Print_max_score(head, m, max);
    }
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月5日
  • 已采纳回答 1月4日
  • 创建了问题 1月4日

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法