#include<iostream>//观察图像,图形沿主对角线对称,各点到对角线的距离+1即为该点的值
#include<cmath>//图形题,与距离相关(i=j为对角线)
using namespace std;//**
int main(){
int n;
while(cin>>n,n){//读入n(!=0)
int arr[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
arr[i][j]=fabs(i-j)+1;//到对角线的距离+1
cout<<arr[i][j]<<" ";//对当前构建的数组(i,j坐标)进行同步输出!
}
cout<<endl;
}
cout<<endl;
}
}
直接从行列的角度描述
#include<iostream>//观察图像,图形沿主对角线对称,各点到对角线的距离+1即为该点的值
#include<cmath>//图形题,与距离相关(i=j为对角线)
using namespace std;//**
int main(){
int n;
while(cin>>n,n){//读入n(!=0)
int arr[n][n];
for(int i=0;i<n;i++){//灵活
arr[i][i]=1; //对主对角线的值进行描述
for(int j=i+1,k=2;j<n;j++,k++){arr[i][j]=k; arr[j][i]=k;}
//每个对角线上的点对横行和竖列进行描述,arr[i][j]与arr[j][i]关于主对角线对称
}
//数组的构建是随心所欲的,没有顺序规定,只要符合逻辑就行
//能够描述清楚数组的每个变量为何值,即要数组填空完成即可!!
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)cout<<arr[i][j]<<" ";
cout<<endl;
}
cout<<endl;
}
}