You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中如何忽略指定整数输入?在线编程题求解

解决忽略指定整数的求和问题

嘿,我来帮你揪出代码里的问题!你的思路方向是对的,但几个关键细节没处理好,导致第二个样例没通过,咱们一步步来梳理:

1. 求和变量未初始化

你定义了int num,sum;但没给sum赋初始值,它一开始会是内存里的随机垃圾值,这直接会导致最终求和结果错乱,这是新手很容易踩的小坑~

2. 条件判断逻辑完全错误

你的判断语句if(num != 1 || 0 )完全不符合预期:

  • 这个表达式等价于(num !=1) || 0,意思是只要num不等于1就会执行求和,既没排除0和10,逻辑或的用法也完全错了。
  • 正确逻辑应该是:当num不是1、不是0、也不是10的时候,才把它加到sum里,对应的条件是if(num != 1 && num != 0 && num != 10)

3. 循环终止条件不可靠

你用while(ch != 10)判断输入结束,但10是换行符的ASCII值,可输入里的分隔符可能是空格、制表符,而且如果输入不是以换行结束(比如重定向输入),这个循环就会出问题。更可靠的方式是用scanf的返回值:scanf("%d", &num)成功读取一个整数时会返回1,没有更多输入时返回EOF,所以循环可以写成while(scanf("%d", &num) != EOF),这样不管输入怎么结束都能正确处理。

修正后的完整代码

#include <stdio.h>  // 别忘了加标准输入输出头文件,很多编译器需要这个

int main() {
    int num, sum = 0;  // 初始化sum为0,这步很关键
    // 用scanf的返回值判断是否还有输入
    while(scanf("%d", &num) != EOF) {
        // 同时排除1、0、10三个数
        if(num != 1 && num != 0 && num != 10) {
            sum += num;
        }
    }
    printf("%d", sum);
    return 0;
}

验证样例

  • 样例输入1:1 -184,代码会忽略1,把-184加到sum里,输出-184,符合要求。
  • 样例输入2:10 439 298 -935 72 636 774 -509 -568 228 47,忽略10后,计算剩下的数的和:439+298-935+72+636+774-509-568+228+47 = 482,完全匹配样例输出。

另外补充个小细节:原代码里的main()最好写成int main(),这是C标准规定的写法,兼容性更好~

内容的提问来源于stack exchange,提问作者Rach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:27:57