我新学了一种在输入次数不确定的时候可以使用以下方法:
while(cin >> n,n!=0),循环条件取n!=0这个表达式的布尔值。
我在写右上角的时候错写成了左上角,错在内循坏j的初始值错写为:j=0,应该写成j=i。
#include<iostream>
using namespace std;
const int N=100;
int a[N][N];
int main()
{
//freopen("xxx.in","r",stdout);
//freopen("yyy.out","w",stdout);
int n,num=1;
while(cin >> n,n!=0)
{
for(int i=0;i<n;i++)
{
num=1;
for(int j=i;j<n;j++)
{
a[i][j]=num;
a[j][i]=num;
num++;
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout << a[i][j] << " ";
}
cout << endl;
}
cout << endl;
}
//fclose(stdin);
//fclose(stdout);
return 0;
}
上面是主对角线对称,下面是次对角线对称。
#include<iostream>
using namespace std;
const int N=100;
int a[N][N];
int main()
{
//freopen("xxx.in","r",stdout);
//freopen("yyy.out","w",stdout);
int n,num=1;
while(cin >> n,n!=0)
{
for(int i=0;i<n;i++)
{
num=1;
for(int j=0;j<n-i;j++)
{
a[i][j]=num;
a[n-j-1][n-i-1]=num;
num++;
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout << a[i][j] << " ";
}
cout << endl;
}
cout << endl;
}
//fclose(stdin);
//fclose(stdout);
return 0;
}