[英]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.