题目
输入整数 N,输出一个 N 阶的二维数组。
数组的形式参照样例。
输入格式
输入包含多行,每行包含一个整数 N。
当输入行为 N=0 时,表示输入结束,且该行无需作任何处理。
输出格式
对于每个输入整数 N,输出一个满足要求的 N 阶二维数组。
每个数组占 N 行,每行包含 N 个用空格隔开的整数。
每个数组输出完毕后,输出一个空行。
数据范围
0≤N≤100
输入样例:
1
2
3
4
5
0
输出样例:
1
1 2
2 1
1 2 3
2 1 2
3 2 1
1 2 3 4
2 1 2 3
3 2 1 2
4 3 2 1
1 2 3 4 5
2 1 2 3 4
3 2 1 2 3
4 3 2 1 2
5 4 3 2 1
?源代码
#include<iostream>
using namespace std;
int main()
{
int N;
while(cin>>N,N!=0)//多实例输入,N=0结束输入
{
int a[100][100]={0},i,j;//开辟数组创建空坑位0
a[0][0]=1;
for(i=0;i<N;i++)//对于二维数组进行最上边和最左边数据的补入
{
for(j=0;j<N;j++)
{
a[0][j]=j+1;
a[i][0]=i+1;
if(i==j)a[i][j]=1;
}
}
for(i=0;i<N;i++)//因二重for循环是从上往下从左到右遍历二维数组
{
for(j=0;j<N;j++)
{
if(a[i+1][j-1]==0)a[i+1][j-1]=a[i][j];//对于下一行凡是对角线且空坑位的元素进行数据补充
if(a[i+1][j+1]==0)a[i+1][j+1]=a[i][j];
}
}
for(i=0;i<N;i++)//输出二维数组
{
for(j=0;j<N;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
printf("\n");//记得对应输出格式
}
}
|