<戳我进原题地址>
- 先按照从左到右 斜向上的方式在二维数组中存放需要的数据
int a[n][n]={0};
m = 1;
for(i = 0; i < n; i++)
{
row = i;
for(col = 0; col <= i; col++)
a[row--][col] = m++;
}
- 然后依此输出就完事了(注意每一行最后一个输出后面不要跟空格,这里我引入了一个first标志:只有每行的第一个输出前不加空格,其他的都要在前面加空格)
for(i = 0; i < n; i++)
{
first = 1;
for(j = 0; j < n; j++)
{
if(a[i][j])
{
if(first)
{
printf("%d",a[i][j]);
first = 0;
}
else
printf(" %d",a[i][j]);
}
}
- 整体代码如下:
#include <stdio.h>
int main()
{
int n,m,i,j,row,col,first;
while(scanf("%d",&n)!=EOF)
{
int a[n][n]={0};
m = 1;
for(i = 0; i < n; i++)
{
row = i;
for(col = 0; col <= i; col++)
a[row--][col] = m++;
}
for(i = 0; i < n; i++)
{
first = 1;
for(j = 0; j < n; j++)
{
if(a[i][j])
{
if(first)
{
printf("%d",a[i][j]);
first = 0;
}
else
printf(" %d",a[i][j]);
}
}
printf("\n");
}
}
return 0;
}