C++的程序问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 22:08:37
给方阵中所有边上的元素和两条对角线上的元素置1,其它元素置0,要求对每个元素只限置一次值,最后按矩阵的形式输出,以下的程序错在哪了?
#include <iostream>
#include <iomanip>
#define max 10
using namespace std;
int main()
{
int a[max][max],i,j;
j=max;
for(i=0;i<max;i++)
{
a[i][i]=1;
a[i][i]=1;
}
for(i=1;i<max-1;i++)
a[0][i]=1;
for(i=1;i<max-1;i++)
a[i][0]=1;
for(i=max-2;i>0;i--)
a[max-1][i]=1;
for(i=max-2;i>0;i--)
a[i][max-1]=1;
for(i=1;i<max-1;i++)
for(j=1;j<max-1;j++)
if(i!=j&&(i+j)!=(max-1))
a[i][j]=0;
for(i=0;i<max;i++)
{
for(j=0;j<max;j++)
cout<<setw(2)<<a[i][j];
cout<<endl;
}
return 0;
}

#include <iostream>
#include <iomanip>
#define max 10
using namespace std;

int main()
{
int a[max][max],i,j;
j=max;
for(i=0;i<max;i++)
{
a[i][i]=1;//左上右下对角线
a[i][j-i-1]=1;//右上左下对角线,这里错了
}
for(i=1;i<max-1;i++)//上横线
a[0][i]=1;
for(i=1;i<max-1;i++)//左竖线
a[i][0]=1;
for(i=max-1;i>0;i--)//下横线
a[max-1][i]=1;
for(i=max-2;i>0;i--)//右竖线
a[i][max-1]=1;
for(i=1;i<max-1;i++)
for(j=1;j<max-1;j++)
if(i!=j&&(i+j)!=(max-1))
a[i][j]=0;
for(i=0;i<max;i++)
{
for(j=0;j<max;j++)
cout<<setw(2)<<a[i][j];
cout<<endl;
}
return 0;
}

dxlhq_bdzd 正解