C++如何打印矩阵中所有非零偶数?代码运行结果错误怎么解决?
错误原因
- 核心错误:
return 0放置位置错误。你将返回语句写在了外层遍历矩阵行的for循环内部,程序执行完第一行的元素遍历后就会直接退出,不会处理第二行及之后的所有行,这是输出结果缺失的主要原因。 - 输出格式问题:符合条件的偶数输出时没有加分隔符,所有符合要求的数字会连在一起,无法区分独立数值。
- 笔误问题:原代码输出提示里的
even vectors表述错误,你要打印的是偶数,对应英文表述为even numbers,vector指代向量,不符合需求场景。 - 潜在越界风险:C/C++ 数组默认下标从0开始,原代码用下标1~N/M访问100长度的数组,当输入的N/M等于100时会出现数组越界,触发未定义行为。
修正后代码
#include<iostream> using namespace std; int main () { int i,j,N,M; int a[100][100]; cout << "输入矩阵行数 = "; cin >> N; cout << "输入矩阵列数 = "; cin >> M; // 调整为下标从0开始的规范写法,避免越界 for (i = 0; i < N; i++) { for(j = 0; j < M; j++) { cin >> a[i][j]; } } cout << "矩阵中不等于0的偶数如下:" << endl; for (i = 0; i < N; i++) { for(j = 0; j < M; j++) { if (a[i][j] != 0 && a[i][j] % 2 == 0) { // 输出后加空格分隔不同数值 cout << a[i][j] << " "; } } } // return 0移到所有逻辑执行结束的位置 return 0; }
内容的提问来源于stack exchange,提问作者user16554781
相关产品推荐
相关产品推荐

