我是C ++的新手。 我正在尝试创建一个程序,在输出中给我这样的
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
这是我的尝试
#include <iostream>
using namespace std;
int const n=10;
int main (){
int i,j,k,mat[n][n];
for(i=0;i<n;i++)
for(j=0;j<n;j++){
mat[i][j]=?
}
return 0;
}
答案 0 :(得分:2)
效率低下但似乎有效:
#include <iostream>
using namespace std;
int const n=10;
int main ()
{
int i, j, mat[n][n] = { 0 };
int indent;
for (indent = 0; indent <= n/2; indent++) {
for (i = indent; i < n-indent; i++) {
for (j = indent; j < n-indent; j++) {
mat[i][j]++;
}
}
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
cout << mat[i][j] << ' ';
}
cout << endl;
}
return 0;
}
答案 1 :(得分:1)
我只是为了好玩而给了它一个镜头,令人惊讶的是,我的回答非常接近你的:)只需写出相同数字的方块,每个循环都带来角落。
#include <iostream>
using namespace std;
int const n=5;
int main ()
{
int i, j, k, mat[n][n];
for (k = 0; k < n; k++)
{
for (i = k; i < n-k; i++)
{
for (j = k; j < n-k; j++)
{
mat[i][j] = k+1;
}
}
}
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
cout << mat[i][j] << ' ';
}
cout << endl;
}
return 0;
}