某人需要对某班学生成绩进行处理,生成班级成绩单。假设班级人数为N(为了方便调试程序,N取5),学生的学号、姓名均不超过10个字符,输入每个学生的学号、姓名、4科成绩(例如:英语、数学、体育、计算机),计算每个学生的总分、平均分,然后按照总分由高到低排名,输出原始的成绩单和排名后的成绩单。利用一维、二维数组 c语言
4条回答 默认 最新
- CSDN专家-link 2023-04-11 08:50关注
#include <stdio.h> #include <stdlib.h> #define NUM 5 //5个学生,方便修改 typedef struct _Student { char id[11]; // 学号 char name[11]; // 姓名 float score[4]; // 4科成绩 float total; // 总分 float avg; // 平均分 }Student; int main() { Student stu[NUM]; // 学生信息数组 int i, j; // 输入学生信息和成绩 for (i = 0; i < NUM; i++) { printf("请输入第%d个学生的学号:",i+1); scanf("%s",stu[i].id); printf("请输入第%d个学生的姓名:",i+1); scanf("%s",stu[i].name); stu[i].total = 0; for (j = 0; j < 4; j++) { printf("请输入第%d个学生的第%d门课成绩:",i+1,j+1); scanf("%f", &stu[i].score[j]); stu[i].total += stu[i].score[j]; } stu[i].avg = stu[i].total/4; } printf("原始成绩单:\n"); printf("%12s%12s%10s%10s%10s%10s%10s%10s\n","学号","姓名","英语","数学","体育","计算机","总分","平均分"); for (i = 0; i < NUM; i++) { printf("%12s%12s", stu[i].id, stu[i].name); for (j = 0; j < 4; j++) { printf("%10.1f", stu[i].score[j]); } printf("%10.1f%10.1f", stu[i].total, stu[i].avg); } for (i = 0; i < NUM - 1; i++) { for (j = 0; j < NUM - i - 1; j++) { if (stu[j].total < stu[j+1].total) { Student temp = stu[j]; stu[j] = stu[j+1]; stu[j+1] = temp; } } } printf("\n排序后成绩单:\n"); printf("%12s%12s%10s%10s%10s%10s%10s%10s\n","学号","姓名","英语","数学","体育","计算机","总分","平均分"); for (i = 0; i < NUM; i++) { printf("%12s%12s", stu[i].id, stu[i].name); for (j = 0; j < 4; j++) { printf("%10.1f", stu[i].score[j]); } printf("%10.1f%10.1f", stu[i].total, stu[i].avg); } system("pause"); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 ciflog-smart磁性定位子系统
- ¥100 python 调用 cgps 命令获取 实时位置信息
- ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
- ¥15 C语言使用vscode编码错误
- ¥15 用KSV5转成本时,如何不生成那笔中间凭证
- ¥20 ensp怎么配置让PC1和PC2通讯上
- ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
- ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
- ¥15 请各位帮我看看是哪里出了问题
- ¥15 vs2019的js智能提示