统计分数
已知共有 30名学生,每名学生有数学、语文、物理、化学、英语5门功课,班主任需要统计总分在前 10名的同学的姓名和学号,另外特别关注这10名同学中有某门功课低于 80分的同学,请编写程序实现上述功能。
1 #include <stdio.h> 2 #include <string.h> 3 4 // 定义学生结构体 5 struct Student { 6 char name[50]; 7 int id; 8 int scores[5]; // 数学、语文、物理、化学、英语 9 int totalScore; 10 }; 11 12 int main() { 13 struct Student students[30]; 14 int i, j; 15 16 // 输入学生信息 17 for (i = 0; i < 30; i++) { 18 printf("请输入第%d名学生的姓名: ", i + 1); 19 scanf("%s", students[i].name); 20 printf("请输入第%d名学生的学号: ", i + 1); 21 scanf("%d", &students[i].id); 22 23 // 输入五门功课成绩 24 for (j = 0; j < 5; j++) { 25 printf("请输入%s的%s成绩: ", students[i].name, 26 j == 0 ? "数学" : (j == 1 ? "语文" : (j == 2 ? "物理" : (j == 3 ? "化学" : "英语")))); 27 scanf("%d", &students[i].scores[j]); 28 } 29 30 // 计算总分 31 students[i].totalScore = 0; 32 for (j = 0; j < 5; j++) { 33 students[i].totalScore += students[i].scores[j]; 34 } 35 } 36 37 // 对学生按总分降序排序 38 for (i = 0; i < 30 - 1; i++) { 39 for (j = 0; j < 30 - i - 1; j++) { 40 if (students[j].totalScore < students[j + 1].totalScore) { 41 // 交换学生信息 42 struct Student temp = students[j]; 43 students[j] = students[j + 1]; 44 students[j + 1] = temp; 45 } 46 } 47 } 48 49 // 输出总分前10名的学生信息 50 printf("总分前10名的学生信息:\n"); 51 for (i = 0; i < 10; i++) { 52 printf("姓名: %s, 学号: %d, 总分: %d\n", students[i].name, 53 students[i].id, students[i].totalScore); 54 } 55 56 // 检查是否有某门功课低于80分的学生 57 printf("总分前10名中以下学生有某门功课低于80分:\n"); 58 for (i = 0; i < 10; i++) { 59 for (j = 0; j < 5; j++) { 60 if (students[i].scores[j] < 80) { 61 printf("姓名: %s, 学号: %d, 低于80分的功课: ", students[i].name, 62 students[i].id); 63 switch (j) { 64 case 0: 65 printf("数学\n"); 66 break; 67 case 1: 68 printf("语文\n"); 69 break; 70 case 2: 71 printf("物理\n"); 72 break; 73 case 3: 74 printf("化学\n"); 75 break; 76 case 4: 77 printf("英语\n"); 78 break; 79 } 80 break; 81 } 82 } 83 } 84 85 return 0; 86 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现