#include <stdio.h> struct student { int num; char name[10]; int c, oop, db; float avg; }; void main() { int i, j; struct student s[5], temp; for(i = 0; i < 5; i++) { printf("请输入第%d个学生的信息,学号,姓名,性别,C语言,oop ,数据库:\n", i + 1); scanf("%d%s%d%d%d", &s[i].num, s[i].name,s[i].gender,&s[i].c, &s[i].oop, &s[i].db); s[i].avg = (float)(s[i].c + s[i].oop + s[i].db) / 3.0; } for(i = 0; i < 2; i++) { for(j = 0; j < 2 - i; j++) { if(s[j].avg < s[j+1].avg) { temp = s[j]; s[j] = s[j+1]; s[j+1] = temp; } } } printf("\n学号 姓名 c语言 oop 数据库 平均成绩\n"); for(i = 0; i < 5; i++) { printf("%-10d%-10s%-8d%-8d%-8d%-6.1f\n", s[i].num, s[i].name,s[i].gender,s[i].c, s[i].oop, s[i].db, s[i].avg); } }请修正
时间: 2024-03-08 11:49:35 浏览: 55
修正后的代码如下:
```c
#include <stdio.h>
struct student {
int num;
char name[10];
char gender;
int c, oop, db;
float avg;
};
int main() {
int i, j;
struct student s[5], temp;
for (i = 0; i < 5; i++) {
printf("请输入第%d个学生的信息,学号,姓名,性别,C语言,oop ,数据库:\n", i + 1);
scanf("%d%s %c%d%d%d", &s[i].num, s[i].name, &s[i].gender, &s[i].c, &s[i].oop, &s[i].db);
s[i].avg = (float)(s[i].c + s[i].oop + s[i].db) / 3.0;
}
for (i = 0; i < 4; i++) {
for (j = 0; j < 4 - i; j++) {
if (s[j].avg < s[j+1].avg) {
temp = s[j];
s[j] = s[j+1];
s[j+1] = temp;
}
}
}
printf("\n学号 姓名 性别 c语言 oop 数据库 平均成绩\n");
for (i = 0; i < 5; i++) {
printf("%-10d%-10s%-8c%-8d%-8d%-8d%-6.1f\n", s[i].num, s[i].name, s[i].gender, s[i].c, s[i].oop, s[i].db, s[i].avg);
}
return 0;
}
```
主要的修改内容包括:
1. 在结构体中添加一个 `char gender` 成员,用来储存学生的性别信息。
2. 在输入学生信息时,添加读取 `gender` 的语句,并修改输入格式。
3. 在输出学生信息时,添加输出 `gender` 的语句,并修改输出格式。
4. 将 `void main()` 改为 `int main()`,并添加 `return 0;` 语句。
阅读全文