输入学生成绩信息(包括学号、姓名、语文、英语、数学),计算出学生成绩总分,并按总分从高到低输出
3条回答 默认 最新
- qzjhjxj 2022-09-11 09:15关注
代码修改如下,供参考对照:
#include <stdio.h> typedef struct { char no[20]; char name[20]; float yw; float sx; float yy; float sum; }Student; //Student stds[1000]; 这里全局变量定义多余了 void input(Student s[], int* len) { int i, n; printf("请输入增加的人数:"); scanf("%d", &n); for (i = (*len), (*len) += n; i < (*len); i++) { printf("学号:"); scanf("%s", s[i].no); getchar(); printf("姓名:"); scanf("%s", s[i].name); getchar(); printf("语文:"); scanf("%f", &s[i].yw); getchar(); printf("数学:"); scanf("%f", &s[i].sx); getchar(); printf("英语:"); scanf("%f", &s[i].yy); getchar(); } } void sum(Student s[], int len) { int i; for (i = 0; i < len; i++) { s[i].sum = s[i].yw + s[i].sx + s[i].yy; } } void swap(Student* a, Student* b) { Student tmp; tmp = *a; *a = *b; *b = tmp; } void sort(Student s[], int len) { int i, j; for (i = 0; i < len - 1; i++) for (j = i + 1; j < len; j++) if (s[i].sum < s[j].sum) swap(&s[i], &s[j]); } void print(Student s[], int len) { int i; for (i = 0; i < len; i++) printf("%s,%s,%.2f,%.2f,%.2f,%.2f\n", s[i].no, s[i].name, s[i].yw, s[i].sx, s[i].yy, s[i].sum); } int main() { Student stds[1000] = { {"1001","李三",100,100,100,0}, {"1002","张三",80,80,85,0}, {"1003","王二",70,95,87,0}, {"1004","李四",60,90,82,0} }; int len = 4; input(stds, &len); sum(stds, len); sort(stds, len); print(stds, len); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
- ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
- ¥15 手机接入宽带网线,如何释放宽带全部速度
- ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
- ¥15 ETLCloud 处理json多层级问题
- ¥15 matlab中使用gurobi时报错
- ¥15 这个主板怎么能扩出一两个sata口
- ¥15 不是,这到底错哪儿了😭
- ¥15 2020长安杯与连接网探
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么