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

C语言数组偶数累加奇数累减程序输出0而非预期值2问题求解

核心问题原因

你的代码中仅执行了total + data[i]和total - data[i]两个表达式运算,但没有将运算结果赋值回total变量,这类无赋值的表达式不会改变total的取值,因此total永远是初始值0,最终返回结果恒为0。

修复方法

将对应行的运算改为赋值操作即可,推荐使用C语言的复合赋值运算符简化写法:

  • 偶数分支的total + data[i];修改为total += data[i];
  • 奇数分支的total - data[i];修改为total -= data[i];

如果不使用复合赋值,也可以写为完整的赋值语句:

  • 偶数分支:total = total + data[i];
  • 奇数分支:total = total - data[i];
修复后完整代码
#include <stdint.h>
#include <stdio.h>

int add_even_sub_odd(const int data[], int n)
{
    int total = 0;
    // 可选优化:将i的类型改为int,避免size_t和int类型比较的编译警告
    for (int i = 0; i < n; i++)
    {
        if (data[i] % 2 == 0) {
            total += data[i];
            printf("%d\n", data[i]);
        }
        else {
            total -= data[i];
            printf("%d\n", data[i]);
        }
    }
    return total;
}

int main(void)
{
    int data[4] = {1, 2, 3, 4};
    printf("%d\n", add_even_sub_odd(data, 4));
}
结果验证

针对测试用例{1,2,3,4},偶数和为2+4=6,奇数和为1+3=4,6-4=2,和预期输出完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:09:02