从键盘输入三名学生某课程的分数,将三名学生的分数按从小到大的顺序输出,再输出成绩最好的学生的等级和绩点
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 函数计算出学生的等级和绩点。
注意:这仅是一个示例代码,实际应用中可能会有更多的要求和细节需要注意。例如,你可能需要使用不同的输入输出函数,或者考虑到学生的名字可能很长,需要使用更加灵活的方式来存储学生的名字。
希望对您有所帮助本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥20 测距传感器数据手册i2c
- ¥15 RPA正常跑,cmd输入cookies跑不出来
- ¥15 求帮我调试一下freefem代码
- ¥15 matlab代码解决,怎么运行
- ¥15 R语言Rstudio突然无法启动
- ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
- ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
- ¥15 用windows做服务的同志有吗
- ¥60 求一个简单的网页(标签-安全|关键词-上传)
- ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法