• C语言,基于结构体,编写一个班级成绩排序系统。


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 2401_84148105 2024-06-04 23:10 采纳率: 0% 浏览 8 首页/ 编程语言 / C语言,基于结构体,编写一个班级成绩排序系统。 c语言 C语言,填写程序,定义一个结构体 Student ,包含姓名( name ,字符串)、学号( id , int 型)、3门课程成绩( score , double 数组)、平均成绩( avg _ score , double 型)。输入每个学生的姓名、学号、3门课程成绩。计算平均成绩,按平均成绩由高到低排序后输出。 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    1条回答 默认 最新

    • 阿里嘎多学长 2024-06-04 23:32
      关注

      以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


      根据您提供的程序框架和需求,我将帮您完成这个C语言程序。以下是完整的代码实现:

      #include 
      #define N 3 /* 学生人数 */
      
      struct Student {
          char name[50];
          int id;
          double score[3];
          double avg_score;
      };
      
      void input_student_info(struct Student *p, int n) {
          int i;
          for (i = 0; i < n; i++, p++) {
              printf("\nStudent %d info:\n", i + 1);
              printf("name: ");
              scanf("%s", p->name);
              getchar(); // 清除缓冲区中的换行符
              printf("id: ");
              scanf("%d", &p->id);
              printf("scores: ");
              scanf("%lf %lf %lf", &p->score[0], &p->score[1], &p->score[2]);
          }
      }
      
      void calculate_avg_score(struct Student *p, int n) {
          int i;
          for (i = 0; i < n; i++, p++) {
              p->avg_score = (p->score[0] + p->score[1] + p->score[2]) / 3;
          }
      }
      
      void print_student_info(struct Student *p, int n) {
          int i;
          printf("\nSorted by average score:\n");
          printf("%-15s %-8s %-8s %-8s %-12s\n", "Name", "ID", "Score1", "Score2", "Score3");
          for (i = 0; i < n; i++, p++) {
              printf("%-15s %-8d %-8.1f %-8.1f %-8.1f\n", p->name, p->id, p->score[0], p->score[1], p->score[2]);
          }
      }
      
      void sort_by_avg_score(struct Student *p, int n) {
          int i, j;
          struct Student temp;
          for (i = 0; i < n - 1; i++) {
              for (j = i + 1; j < n; j++) {
                  if (p[i].avg_score < p[j].avg_score) {
                      temp = p[i];
                      p[i] = p[j];
                      p[j] = temp;
                  }
              }
          }
      }
      
      int main() {
          struct Student students[N];
          input_student_info(students, N);
          calculate_avg_score(students, N);
          sort_by_avg_score(students, N);
          print_student_info(students, N);
          return 0;
      }
      

      代码说明:

      1. input_student_info 函数用于输入学生信息,包括姓名、学号和三门课程的成绩。
      2. calculate_avg_score 函数计算每个学生的平均成绩,并将其存储在 avg_score 成员中。
      3. print_student_info 函数打印排序后的学生信息,包括姓名、学号和三门课程的成绩。
      4. sort_by_avg_score 函数使用冒泡排序算法按平均成绩从高到低对学生进行排序。
      5. main 函数调用上述函数以完成整个程序的运行。

      注意事项:

      • 程序中使用了 getchar() 来清除输入缓冲区中的换行符,以避免读取姓名时出现问题。
      • 定义了 N 宏来指定学生人数,可以根据需要修改。
      • print_student_info 函数中,使用了格式化输出来美化打印结果。

      参考资料:

      希望这个程序能够满足您的需求。如果您有任何问题或需要进一步的帮助,请随时告诉我。

      展开全部

      评论 编辑记录
      编辑
      预览

      报告相同问题?

    • 相关阅读:
      【RocketMQ系列十四】RocketMQ中消息堆积如何处理
      window.postMessage - 前端跨域通信
      Excel中怎么求排名
      『Linux - gcc / g++』c程序翻译过程
      Failed to execute org.scala-tools:maven-scala-plugin:2.15.2解决
      【MyBatis】五、MyBatis的缓存机制与逆向工程
      pygame实现飞机大战游戏
      应急响应—溯源反制
      35分钟了解sql注入-盲注(三)
      java项目之咖啡馆管理系统ssm+jsp
    • 原文地址:https://ask.csdn.net/questions/8114137