#include <stdio.h> #include <conio.h> #include <time.h> void input(); void sum(); void av(); void find(); void output(); struct st { int en, math, com, sum, n; float av; char id[6]; } a[5] = { { 60,60,60},{ 70,70,70},{ 75,75,75},{ 80,80,80},{ 85,85,85} }; int main() { int n; while (1) { printf("1.input\n"); printf("2.sum\n"); printf("3.averag\n"); printf("4.find\n"); printf("5.output\n"); scanf("%d", &n); switch (n) { case 1:input(); break; case 2:sum(); break; case 3:av; break; case 4:find(); break; case 5:output(); break; } if (n < 1 || n > 6) break; } } void input() { int i; for (i = 0; i < 5; i++) scanf("%d%d%d", &a[i].en, &a[i].math, &a[i].com); } void output() { int i; printf("英语 高数 计算机 总分 平均分\n"); for (i = 0; i < 5; i++) printf("%5d%5d%5d%5d%5.2f\n", &a[i].en, &a[i].math, &a[i].com, &a[i].sum, &a[i].av); } void sum() { int i; for (i = 0; i < 5; i++) a[i].sum = a[i].en + a[i].math + a[i].com; } void av() { int i; for (i = 0; i < 5; i++) a[i].av = a[i].sum / 3.0; } void find() { float m; int i, j; printf("请输入查名次的学号"); scanf("%f", &m); for (i = 0; i < 5; i++) { if (m == a[i].av) break; if (i < 5) { printf("英语 高数 计算机 总分 平均分\n"); for (j = 0; j < 4; j++) printf("%5d", a[j]); printf("%.2f&.2f\n", a[i].sum, a[i].av); } else printf("该平均分不存在"); } }
时间: 2024-03-30 14:34:03 浏览: 81
这是一段 C 语言代码,实现了一个简单的学生成绩管理系统。程序提供了五个功能:输入学生成绩、统计总分、计算平均分、查找学生名次和输出学生成绩。具体实现方法如下:
1. 定义了一个结构体 st,用来存储每个学生的英语、高数、计算机成绩、总分、平均分和学号。
2. 定义了一个结构体数组 a,用来存储五个学生的成绩。
3. 实现了五个函数:输入、输出、统计总分、计算平均分和查找学生名次。
4. 在主函数中,使用循环语句和 switch 语句,让用户选择需要的功能,并调用相应的函数。
需要注意的是,代码中可能存在一些错误,比如:
1. 在输出函数中,格式控制符使用了取地址符 &,应该改为 %d 和 %f。
2. 在计算平均分函数中,应该将除数 3 改为 3.0,否则得到的结果是整数。
3. 在查找学生名次函数中,应该将输入的变量类型改为 int,而不是 float。
4. 在查找学生名次函数中,输出的学生信息应该使用 a[j].en 等成绩属性,而不是 a[j]。
以上是我对这段代码的简要分析,如果您有更具体的问题,欢迎继续提问。
阅读全文