检查以下C语言代码的错误 #include <stdio.h> #include <string.h> //输入5位同学的信息,然后按照年龄从小到大输出 struct student { char name[100]; int age; }; int main(void){ struct student arr[5]={ {"xy",14}, {"xe",12}, {"xsan",15}, {"xsi",11}, {"xwu",10} }; int i,j; for(int i=0;i<5;i++); scanf("%s%d",arr[i].name,arr[i].age); for(int i=0;i<4;i++){ for (int j=0;j<4-i;j++){ if (arr[j].age > arr[j+1].age){ struct student temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } for(int i=0;i<5;i++); printf("%s%d",arr[i].name,arr[i].age); return 0; }
时间: 2024-01-16 19:03:17 浏览: 70
这段代码中有两个错误,分别是:
1. 第一个for循环语句中有一个多余的分号,导致下面的scanf语句无法正确执行。
2. 最后一个for循环语句中也有一个多余的分号,导致下面的printf语句无法正确执行。
以下是修改后的代码:
```
#include <stdio.h>
#include <string.h>
struct student {
char name[100];
int age;
};
int main(void){
struct student arr[5]={
{"xy",14},
{"xe",12},
{"xsan",15},
{"xsi",11},
{"xwu",10}
};
int i,j;
for(int i=0;i<5;i++)
scanf("%s%d",arr[i].name,&arr[i].age);
for(int i=0;i<4;i++){
for (int j=0;j<4-i;j++){
if (arr[j].age > arr[j+1].age){
struct student temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int i=0;i<5;i++)
printf("%s %d\n",arr[i].name,arr[i].age);
return 0;
}
```
注意,我将原来的printf语句修改为了"%s %d\n",这是为了在输出时使每个学生的信息分行显示。
阅读全文