多组数据的标准骨架
把整份输入想成一列车厢,一节一节往里读。外层写 while (scanf("%d", &n) == 1):scanf 返回成功读入的项数,读到 1 个数返回 1,撞到文件尾返回 EOF(负值),不等于 1 就自动跳出。循环体里先 sum = 0 重置,再读 n 个数累加,最后输出这一组的和——读一组、算一组、输出一组。
为什么不写 != EOF
有人爱写 while (scanf("%d", &n) != EOF),但输入里混进非法字符时 scanf 匹配失败返回 0,0 也不等于 EOF,循环会原地死转。判「返回值 == 要读的项数」既挡 EOF 也挡坏输入,是机试最稳的多组写法。
常用格式符对照
int 配 %d;long long 配 %lld(用 %d 读写 long long 是未定义行为,值会错);double 读入用 %lf、打印用 %f;字符串配 %s。特例:数组名本身就是首元素地址,所以 scanf("%s", s) 读 char 数组不加 &,读普通数字变量则必须加。