在线编译器 C

#include <stdio.h> int main() { int n; int sum1 = 0; int sum2 = 0; while (scanf("%d", &n) == 1) { if (n == 0) { break; } if (n > 0) { sum1 += n; } if (n < 0) { sum2 += n; } } printf("%d %d",sum1,sum2); return 0; }
这段代码的作用是:从输入中不断读取整数,直到遇到0为止,然后分别计算所有正数的和与所有负数的和,最后输出这两个和。

代码逻辑基本正确,但有一个小问题需要注意:

- 当输入为0时,程序会跳出循环,但0本身既不是正数也不是负数,所以不会被累加,这符合预期。

- 不过,你的代码在读取整数时,如果输入的不是整数(比如字母),scanf会返回0,循环也会结束。但题目可能只要求遇到0结束,这点可以接受。

提示:

- 检查一下输出格式是否与题目要求完全一致,比如两个数字之间是否有空格,以及是否有多余的空格或换行。

- 考虑一下如果输入中根本没有0,程序会一直读取直到输入结束(EOF),这种情况下你的代码也能正常工作,但可以思考一下是否需要处理这种情况。