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

C++二维数组函数问题:如何正确返回首个奇和行索引或-1

解决首个奇数行和的行索引问题

你的核心问题是把else放错了位置——如果在循环里每检查到一行和为偶数就返回-1,程序会在第一行符合条件时直接终止,根本没机会检查后面的行。正确逻辑是:遍历完所有行,确认没有奇数和的行,再返回-1。

修正后的代码如下:

#include <iostream>
using namespace std;

int rowOddSum(int arr[6][4])
{
    int r, c, sum = 0;
    // 计算每行的和
    for (r = 0; r < 6; r++) {
        for (c = 0; c < 4; c++){ 
            sum += arr[r][c];
        }

        if (sum % 2 != 0) {
            cout << "Sum of the row " << r << " is odd: " << sum << endl;
            return r; // 找到首个奇数行和,直接返回索引
        }

        sum = 0; // 重置sum,计算下一行
    }
    // 所有行遍历完毕,没有找到奇数和的行,返回-1
    return -1;
}

int main() {
    int arr[6][4] = {
        {2,0,2,2},
        {2,2,0,4},
        {2,2,0,4},
        {2,2,0,0},
        {2,7,0,2},
        {2,2,4,4} 
    };
    int result = rowOddSum(arr);
    cout << "Result: " << result << endl; // 打印结果验证
    return 0;
}

关键修改点:

  • 删掉循环内的else分支,避免提前终止程序
  • 在整个for循环结束后添加return -1;,这时候才说明所有行的和都是偶数
  • 给main函数加上返回值接收和打印,方便你看到最终结果

测试你提供的数组,第四行(索引4)的和是2+7+0+2=11,是奇数,所以程序会返回4,符合预期。如果把数组里的7改成偶数,所有行和都是偶数,程序就会返回-1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:13:37