@[Loving_coding](/user/919727) 姓名是多个字符,不能用 `char`
by InversionShadow @ 2023-01-13 17:36:58
@[Loving_coding](/user/919727) 你的姓名应该使用char数组来表示
by AndyPomeloMars @ 2023-01-13 17:39:49
而且,以后您不要一有不会的题就发帖,先自己调试
by MicroSun @ 2023-01-13 17:53:12
@[AndyPomeloMars](/user/820210) 好的谢谢您解答
by Loving_coding @ 2023-01-13 18:01:37
@[yuandingquan1101](/user/672281) 十分感谢您您解答
by Loving_coding @ 2023-01-13 18:02:03
@[MicroSun](/user/514700) 不好意思,我有时候看几十分钟都找不到错哪了,我以后尽量先自己再仔细看几遍,实在不懂再发帖。
by Loving_coding @ 2023-01-13 18:03:46
给你调好了
看看注释
```cpp
#include<bits/stdc++.h>//竞赛用万能头
using namespace std;
#define sum(a) (a.Chinese+a.Math+a.English)
//在定义宏的时候记得加括号,因为系统只是无脑替换,有时会导致顺序错误
int N;//i在循环内定义可以在循环结束时让空间及时得到释放
struct student {
char name[10];
int Chinese;
int Math;
int English;
//没有必要加sum
}maxa,temp;
int main() {
scanf("%d", &N);
for (int i = 0; i < N; i++) {
scanf("%s", temp.name);
scanf("%d", &temp.Chinese);
scanf("%d", &temp.Math);
scanf("%d", &temp.English);
if(sum(temp)>sum(maxa)||maxa.name[0]=='\0')//坑点!当数据为1 \n abc 0 0 0 时如果不加"||maxa.name[0]=='\0'"会直接输出0 0 0
maxa=temp;//结构体的优点:整体赋值
}//循环输入
//有没有一种可能,这里不需要全部把信息存下来,也不需要排序,只需要知道最大?
printf("%s %d %d %d", maxa.name, maxa.Chinese,maxa.Math, maxa.English);
return 0;
}
```
by MicroSun @ 2023-01-13 18:14:16
@[Loving_coding](/user/919727)
by MicroSun @ 2023-01-13 18:14:45
~~同时也感谢你帮我找到一道水题~~
by MicroSun @ 2023-01-13 18:16:08
@[MicroSun](/user/514700) 谢谢dl,目前初学C语言,还在慢慢摸索哈哈
by Loving_coding @ 2023-01-13 18:53:57