繁体   English   中英

如何在 C++ 中使用数组 2D 创建矩阵输出模式

[英]How to create matrix output pattern with array 2D in C++

我在用 C++ 编程以使用 2D 数组进行模式化输出时有一点困难,我使输出像这样的矩阵:输入 4(用于第 4 列和第 4 行)

I I I I
0 0 I 0
0 I 0 0
I I I I

我试过这个我的程序。 对于顶行和底行,我设法将值更改为 1

   #include <iostream>
using namespace std;

int main(){
    int elemen[100][100], n, i, j, k;
    
    cout <<"input element = ";
    cin >>n;
    
    for(i = 0;i < n;i++){
        for(j = 0;j < n;j++){
            elemen[0][j] = 1;
            elemen[n-1][j] = 1;
            elemen[n-i][n-j] = 1;           
            cout <<elemen[i][j]<<" ";
        }   
        cout<<endl;
    }
    
}

但是上面程序中出现的输出是这样的:

I I I I
0 0 0 0
0 0 I I
I I I I

而逻辑上它是正确的,我已经在非输入数组上试过了。而逻辑上它是正确的,我已经在非输入数组上试过了。 因为如果我们输入数组元素=5,那么循环会自动将5的值一一递减。 有没有人可以帮忙,抱歉,如果你不明白,因为我目前仍在学习磨练我的逻辑

除非您实际上将elemen用于打印此图案以外的任何其他用途,否则我建议将其丢弃并直接打印该图案。

例子:

#include <cstddef>  // size_t
#include <iostream>
#include <string>

int main() {
    std::size_t n = 4;
    
    std::cout << std::string(n, 'I') << '\n';

    for(std::size_t i=1; i < n - 1; ++i) {
        std::cout
            << std::string(n - i - 1, '0') 
            << 'I'
            << std::string(i, '0')
            << '\n'
        ; 
    }

    std::cout << std::string(n, 'I') << '\n';
}

输出:

IIII
00I0
0I00
IIII

尝试这个

 for(i = 0;i < n;i++){
      for(j = 0;j < n;j++){
            if (i == 0 || i == n-1 || i == n-j-1)
                elemen[i][j] = 1;
            else
                elemen[i][j] = 0;
            ...
       }
       ...
  }
  • i = 0给你第一行
  • i = n-1给你最后一行
  • i = nj-1给你反向对角线

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM