#include<stdio.h> struct student { int num; char name[10]; float score[3]; float sum; }; int main() { struct student stu,max; int i,j,n; max.sum=0; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d%s",&stu.num,stu.name); for(j=0;j<3;j++) { scanf("%f",&stu.score[j]); stu.sum+=stu.score[j]; } if(stu.sum>max.sum){ max=stu; } } printf("%d\n%s\n%f %f %f",max.num,max.name,max.score[0],max.score[1],max.score[2]); return 0; } 代码错误查询
时间: 2024-01-12 21:05:18 浏览: 167
这段代码看起来并没有明显的错误,但是为了保险起见,可以加上一些防止错误的措施,比如:
1. 为字符串数组 `name` 的最后一位留出空间存储字符串结束符 `\0`,即将 `char name[10]` 改为 `char name[11]`。
2. 在计算学生总成绩之前,要将 `sum` 初始化为 0,即加上 `stu.sum=0;`。
3. 在读入每个学生的信息时,应该将 `scanf("%d%s",&stu.num,stu.name);` 改为 `scanf("%d%s",&stu.num, &stu.name);`,即 `name` 前面要加上 `&`。
这样修改后的代码如下:
```
#include<stdio.h>
struct student {
int num;
char name[11];
float score[3];
float sum;
};
int main() {
struct student stu,max;
int i,j,n;
max.sum=0;
scanf("%d",&n);
for(i=0;i<n;i++) {
scanf("%d%s",&stu.num, &stu.name);
stu.sum=0;
for(j=0;j<3;j++) {
scanf("%f",&stu.score[j]);
stu.sum+=stu.score[j];
}
if(stu.sum>max.sum){
max=stu;
}
}
printf("%d\n%s\n%f %f %f",max.num,max.name,max.score[0],max.score[1],max.score[2]);
return 0;
}
```
阅读全文