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
相关产品推荐
相关产品推荐

