我想问你们,我怎样才能打印出一个二维数组,这样它就像棋盘一样,只能打印出白色的数字。
#include <iostream>
using namespace std;
int main()
{
int m;
int n;
cout<<"Enter the amount of rows: "<<endl;
cin>>m;
cout<<"Enter the amount of columns: "<<endl;
cin>>n;
if(!cin){
cout<<"Error.Bad input."<<endl;
return 1;
}
double arr[m][n];
cout<<"Enter the element of the array: "<<endl;
for (int i=0;i<m;i++){
for(int x = 0;x<n;x++){
cin>>arr[i][x];
}
}
cout<<"Printed array like a chessboard: "<<endl;
for(int i=0;i<m;i++){
for(int x=0;x<n;x++){
cout<<arr[i][x]<<" ";
}cout<<endl;
}
}
如果我输入例如4行和4列,我输入以下数字,以便可以这样打印出来:
1 2 3 4
5 6 7 8
9 0 11 12
13 14 15 16
我想要这样的输出:
1 3
6 8
9 11
14 16
谢谢你提前!
答案 0 :(得分:1)
添加嵌套循环仅在i + x为偶数时打印:
for (int i=0;i<m;i++){
for(int x = 0;x<n;x++){
if ((i + x) % 2 == 0)
cout<<arr[i][x];
}
}
答案 1 :(得分:0)
您可以将此for循环用于打印:
Warning: Creating default object from empty value in D:\xampp\htdocs\moodel\server\moodle\config.php on line 5
这种方式for(int i = 0; i < m; i += 2){
for(int x = 0; x < n; x += 2){
cout << arr[i][x] << " ";
}
cout << endl;
for(int x = 1; x < n; x += 2){
cout << arr[i + 1][x] << " ";
}
cout << endl;
}
索引在每次迭代中前进2。并从每行的不同索引0或1开始
答案 2 :(得分:0)
使用模数检查每个单元格中索引的“等级”:
if((x+i)%2 == 0)
然后打印出来,当评估为真时,他会重视。
Lasoloz
答案 3 :(得分:0)
首先考虑到C ++中没有可变长度数组(VLA)。因此,您的代码可能无法使用其他编译器进行编译。
您要完成的任务可以非常简单地完成。:)
只需写下
for ( int i = 0; i < m; i++ )
{
for ( int x = i % 2; x < n; x += 2) cout << arr[i][x] <<" ";
^^^^^^ ^^^^^^
cout << endl;
}