输入格式: 输入包含多行,每行包含一个整数N。0≤N≤100 当输入行为N=0时,表示输入结束,且该行无需作任何处理。 输出格式: 对于每个输入整数N,输出一个满足要求的N阶二维数组。 每个数组占N行,每行包含N个用空格隔开的整数。 每个数组输出完毕后,输出一个空行。
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<stdio.h>
#include<math.h>
int main(){
int N,k;
while(scanf("%d",&N)!=0){
int a[N][N];
for(int i=0;i<N;i++){
for(int j=i,k=1;j<N;j++,k++){
if(i==j)
a[i][j]=1;
else{
a[i][j]=k;
a[j][i]=k;
}
}
}
for(int i=0;i<N;i++){
for(int j=0;j<N;j++)
printf("%d",a[i][j]);
printf("\n");
}
printf("\n");
}
}
修改处见注释,供参考:
#include<stdio.h>
//#include<math.h> 修改
#define N 101 //修改
int main(){
int n,k,a[N][N]; //修改
while(scanf("%d",&n)==1 && n !=0){ //while(scanf("%d",&N)!=0){ 修改
for(int i=0;i<n;i++){
for(int j=i,k=1;j<n;j++,k++){
if(i==j)
a[i][j]=1;
else{
a[i][j]=k;
a[j][i]=k;
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
printf(" %d",a[i][j]);//修改 每行包含N个用空格隔开的整数
printf("\n");
}
printf("\n");
}
return 0;
}