菜鸟537 2021-12-22 20:58 采纳率: 73.1%
浏览 84
已结题

关于#键盘输入#的问题,如何解决?

(4)有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩、平均分数)。

  • 写回答

4条回答 默认 最新

  • qzjhjxj 2021-12-22 21:48
    关注
    获得1.30元问题酬金

    供参考:

    #include<stdio.h>
    #include<stdlib.h>
    #include<malloc.h>
    #define N 10      //学生人数
    #define LEN  sizeof(struct student)
    typedef struct student
    {
        int   No;         //学号
        char  name[21];   //姓名
        float score1, score2, score3, aver;//成绩
        struct student* next;
    }STU;
    void input_info(STU** head, int n)//输入10个学生数据
    {
        int i;
        STU* p, * pt = (*head);
        printf("学号  姓名  成绩1 成绩2 成绩3\n");
        for (i = 0; i < n; i++)
        {
            p = (struct student*)malloc(LEN);
            p->next = NULL;
            scanf("%d %s %f %f %f", &p->No, p->name, &p->score1, &p->score2, &p->score3);
            p->aver = (p->score1 + p->score2 + p->score3) / 3;
            if (i == 0)
                (*head) = p;
            else
                pt->next = p;
            pt = p;
        }
    }
    void output_score_aver(STU* head)//打印出3门课的总平均成绩,以及最高分的学生的数据
    {                                //(包括学号、姓名、3门课成绩、平均分数)
        int   i=0;
        float avg[3] = { 0 }, max1 = 0, max2 = 0, max3 = 0;
        STU* maxp[3] = { 0 }, * p = head;
        while (p)
        {
            if (p->score1 > max1) {
                max1 = p->score1;
                maxp[0] = p;
            }
            if (p->score2 > max2) {
                max2 = p->score2;
                maxp[1] = p;
            }
            if (p->score3 > max3) {
                max3 = p->score3;
                maxp[2] = p;
            }
            avg[0] += p->score1; avg[1] += p->score2; avg[2] += p->score3;
            p = p->next;
        }
        avg[0] /= N; avg[1] /= N; avg[2] /= N;
        for (i = 0; i < 3; i++) {
            printf("课程:%d %5.1f\n最高分学生:%5d %s %5.1f %5.1f %5.1f %5.1f\n",
                               i + 1, avg[i],maxp[i]->No,maxp[i]->name, maxp[i]->score1,
                                       maxp[i]->score2, maxp[i]->score3,maxp[i]->aver);
        }
    }
    int main()
    {
        STU* head = NULL;
        input_info(&head, N);//输入学生信息
        output_score_aver(head); //输出信息
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 系统已结题 12月30日
  • 创建了问题 12月22日

悬赏问题

  • ¥15 什么设备可以研究OFDM的60GHz毫米波信道模型
  • ¥15 不知道是该怎么引用多个函数片段
  • ¥15 爬取1-112页所有帖子的标题但是12页后要登录后才能 我使用selenium模拟登录 账号密码输入后 会报错 不知道怎么弄了
  • ¥30 关于用python写支付宝扫码付异步通知收不到的问题
  • ¥50 vue组件中无法正确接收并处理axios请求
  • ¥15 隐藏系统界面pdf的打印、下载按钮
  • ¥15 基于pso参数优化的LightGBM分类模型
  • ¥15 安装Paddleocr时报错无法解决
  • ¥15 python中transformers可以正常下载,但是没有办法使用pipeline
  • ¥50 分布式追踪trace异常问题