修改这段代码的错误void sort_by_num() { int i, j; for (i = 0; i < num_students - 1; i++) { for (j = 0; j < num_students - 1 - i; j++) { if (students[j].num > students[j + 1].num) { // 交换两个学生的位置 student temp = students[j]; students[j] = students[j + 1]; students[j + 1] = temp; } } } printf("按学号递增排序结果:\n"); printf("学号\t姓名\t性别\t出生日期\t高数\tC语言\t大学物理\t总分\t平均分\n"); for (i = 0; i < num_students; i++) { student student = students[i]; printf("%s\t%s\t%s\t%d-%d-%d\t%d\t%d\t%d\t%10d\t%.2f\n", student.num, student.name, student.sex, student.birthday.year, student.birthday.month, student.birthday.day, student.score[0], student.score[1], student.score[2], student.total, student.average); } }
时间: 2024-01-28 14:05:46 浏览: 113
这段代码有一个明显的错误:在输出按学号递增排序结果时,格式控制符`%s`用来格式化字符串类型的数据,但是却用来格式化整型数据`student.num`,会导致输出错误。
正确的代码如下:
```c
void sort_by_num() {
int i, j;
for (i = 0; i < num_students - 1; i++) {
for (j = 0; j < num_students - 1 - i; j++) {
if (students[j].num > students[j + 1].num) {
// 交换两个学生的位置
student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
printf("按学号递增排序结果:\n");
printf("学号\t姓名\t性别\t出生日期\t高数\tC语言\t大学物理\t总分\t平均分\n");
for (i = 0; i < num_students; i++) {
student student = students[i];
printf("%d\t%s\t%s\t%d-%d-%d\t%d\t%d\t%d\t%10d\t%.2f\n", student.num, student.name, student.sex, student.birthday.year, student.birthday.month, student.birthday.day, student.score[0], student.score[1], student.score[2], student.total, student.average);
}
}
```
在输出学号时,使用了整型的格式控制符`%d`,可以正确输出学号。
阅读全文
相关推荐


















