奶油不加泡芙 2022-12-17 01:06 采纳率: 100%
浏览 32
已结题

C语言判断学生等级和绩点

img


从键盘输入三名学生某课程的分数,将三名学生的分数按从小到大的顺序输出,再输出成绩最好的学生的等级和绩点

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2022-12-17 05:12
    关注

    以下回复来自ChatGPT
    首先,你需要定义一个数据结构来存储学生的信息,包括学生的名字、分数、等级和绩点。

    然后,你需要使用循环读入三名学生的分数,并根据分数计算出学生的等级和绩点。

    接着,你需要使用某种排序算法(例如冒泡排序)将学生的分数从小到大排序。

    最后,你可以使用循环输出三名学生的分数,并输出成绩最好的学生的等级和绩点。

    以下是一个示例代码,你可以根据需要进行修改:

    #include <stdio.h>
    #include <string.h>
    
    #define MAX_NAME_LEN 50  // 学生名字的最大长度
    #define MAX_STUDENTS 3   // 最多学生数
    
    // 定义学生信息的数据结构
    typedef struct {
      char name[MAX_NAME_LEN + 1];  // 学生名字
      int score;                     // 学生分数
      char grade;                    // 学生等级
      double gpa;                    // 学生绩点
    } Student;
    
    // 计算学生等级和绩点的函数
    void calc_grade_and_gpa(Student *s) {
      if (s->score >= 90) {
        s->grade = 'A';
        s->gpa = 4.0;
      } else if (s->score >= 80) {
        s->grade = 'B';
        s->gpa = 3.0;
      } else if (s->score >= 70) {
        s->grade = 'C';
        s->gpa = 2.0;
      } else if (s->score >= 60) {
        s->grade = 'D';
        s->gpa = 1.0;
      } else {
        s->grade = 'F';
        s->gpa = 0.0;
      }
    }
    
    // 交换两个学生信息的函数
    void swap_students(Student *s1, Student *s2) {
      Student temp = *s1;
      *s1 = *s2;
      *s2 = temp;
    }
    
    int main(void) {
      // 定义学生信息数组
      Student students[MAX_STUDENTS];
    
      // 读入学生信息
      for (int i = 0; i < MAX_STUDENTS; i++) {
        printf("输入第%d名学生的信息:\n", i + 1);
        printf("名字:");
        scanf("%s", students[i].name);
        printf("分数:");
        scanf("%d", &students[i].score);
    
        // 计算学生的等级和绩点
        calc_grade_and_gpa(&students[i]);
      }
    
      // 对学生信息进行排序
      for (int i = 0; i < MAX_STUDENTS - 1; i++) {
        for (int j = 0; j < MAX_STUDENTS - 1 - i; j++) {
          if (students[j].score > students[j + 1].score) {
            swap_students(&students[j], &students[j + 1]);
          }
        }
      }
    
      // 输出学生信息
      printf("\n排序后的学生信息:\n");
      for (int i = 0; i < MAX_STUDENTS; i++) {
        printf("名字:%s,分数:%d,等级:%c,绩点:%.1f\n", students[i].name, students[i].score, students[i].grade, students[i].gpa);
      }
    
      // 输出成绩最好的学生的信息
      printf("\n成绩最好的学生信息:\n");
      printf("名字:%s,分数:%d,等级:%c,绩点:%.1f\n", students[MAX_STUDENTS - 1].name, students[MAX_STUDENTS - 1].score, students[MAX_STUDENTS - 1].grade, students[MAX_STUDENTS - 1].gpa);
    
      return 0;
    }
    

    在上述代码中,我们使用了 scanf 函数从键盘读入学生的分数,并使用 printf 函数输出学生的信息。我们还使用了冒泡排序算法将学生的分数从小到大排序,并使用 calc_grade_and_gpa 函数计算出学生的等级和绩点。

    注意:这仅是一个示例代码,实际应用中可能会有更多的要求和细节需要注意。例如,你可能需要使用不同的输入输出函数,或者考虑到学生的名字可能很长,需要使用更加灵活的方式来存储学生的名字。
    希望对您有所帮助

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月25日
  • 已采纳回答 12月17日
  • 创建了问题 12月17日

悬赏问题

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