for循环,写一个产生每一行的函数,比如第i行,那么【1,i)是递增的,接着个(n-2xi)个i ,接着是(i,1)从i递减,这样你就得到了一行,最后加一个换行\n,循环结束就可以得到整个矩阵的字符串了。
int num = 0;
cin >> num ;
int x = 0;
int y = 0;
for (int i = 1; i <= num * 2; ++ i) {
for (int j = 1; j <= num * 2; ++j) {
if ( i > num ) {
x = num * 2 - i + 1;
}
else{
x = i;
}
if ( j > num) {
y = num * 2 - j + 1;
}
else{
y = j;
}
if ( x < y) {
cout << x << " ";
}else{
cout << y << " ";
}
}
cout <<endl;
}
结果:
6
1 1 1 1 1 1 1 1 1 1 1 1
1 2 2 2 2 2 2 2 2 2 2 1
1 2 3 3 3 3 3 3 3 3 2 1
1 2 3 4 4 4 4 4 4 3 2 1
1 2 3 4 5 5 5 5 4 3 2 1
1 2 3 4 5 6 6 5 4 3 2 1
1 2 3 4 5 6 6 5 4 3 2 1
1 2 3 4 5 5 5 5 4 3 2 1
1 2 3 4 4 4 4 4 4 3 2 1
1 2 3 3 3 3 3 3 3 3 2 1
1 2 2 2 2 2 2 2 2 2 2 1
1 1 1 1 1 1 1 1 1 1 1 1
如以下程序:
int main()
{
int num = 0;
int x = 0;
int y = 0;
int i,j;
printf("Please Enter:");
scanf("%d",&num);
for (i = 1; i <= num ; ++ i)
{
for (j = 1; j <= num ; ++j)
{
if ( i > num )
{
x = num - i + 1;
}
else
{
x = i;
}
if ( j > num)
{
y = num - j + 1;
}
else
{
y = j;
}
if ( x < y)
{
printf("%d ",x);
}
else
{
printf("%d ",y);
}
}
printf("\n");
}
return 0;
}