C++实现矩阵查找上下左右四侧边界数值的问题求助
矩阵边界打印问题解决方法
你现有代码存在两个核心问题:
- 用四个单变量存储边界值,循环过程中会不断覆盖之前的结果,最终只能输出最后一个符合判断条件的数值,无法输出完整的边界序列
- 你编写的
i+j<m-1类判断条件和矩阵边界的定义完全不匹配,自然无法得到顶部边界的正确结果
正确实现逻辑
假设输入的矩阵有n行m列,行索引i取值范围为0n-1,列索引`j`取值范围为0m-1,四个边界的判断规则如下:
- 顶部边界:行索引
i == 0的所有元素 - 底部边界:行索引
i == n-1的所有元素 - 左侧边界:列索引
j == 0,且行索引i != 0、i != n-1的元素(该规则会排除上下边界的角元素避免重复,不需要去重可去掉后两个条件) - 右侧边界:列索引
j == m-1,且行索引i != 0、i != n-1的元素(同理可去掉去重条件)
修改后完整代码
#include <iostream> using namespace std; int main() { int a[10][10],i,j,m,n; // 输入矩阵列数m、行数n cin>>m>>n; // 输入矩阵元素 for(i=0;i<n;i++){ for(j=0;j<m;j++){ cin>>a[i][j]; } } // 打印顶部边界 cout<<"顶部边界:"; for(j=0;j<m;j++){ cout<<a[0][j]<<" "; } cout<<endl; // 打印底部边界 cout<<"底部边界:"; for(j=0;j<m;j++){ cout<<a[n-1][j]<<" "; } cout<<endl; // 打印左侧边界 cout<<"左侧边界:"; for(i=1;i<n-1;i++){ cout<<a[i][0]<<" "; } cout<<endl; // 打印右侧边界 cout<<"右侧边界:"; for(i=1;i<n-1;i++){ cout<<a[i][m-1]<<" "; } cout<<endl; return 0; }
内容的提问来源于stack exchange,提问作者Leaksy
相关产品推荐
相关产品推荐

