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

C++实现矩阵查找上下左右四侧边界数值的问题求助

矩阵边界打印问题解决方法

你现有代码存在两个核心问题:

  1. 用四个单变量存储边界值,循环过程中会不断覆盖之前的结果,最终只能输出最后一个符合判断条件的数值,无法输出完整的边界序列
  2. 你编写的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 14:15:04