C语言,求3×3矩阵的转置矩阵(在自身进行转置)

#include<stdio.h>
void main()
{
int a,b;
int a[3][3];
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("矩阵为");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%d ",a[i][j]);
if(j=2)
printf("\n");
}
for(i=0;i<2;i++)
for(j=1;j<3;j++)
{
a=a[i][j];
b=a[j][i];
a[i][j]=b;
a[j][i]=a;
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%d ",a[i][j]);

if(j=2)
printf("\n");
}
}
为什么编译不通过?

#include<stdio.h>

int main()

{

int a1,b1;

int a[3][3];

int i,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);

printf("矩阵为\n");

for(i=0;i<3;i++)

for(j=0;j<3;j++)

{

printf("%d ",a[i][j]);

if(j==2)

printf("\n");

}

printf("\n");

for(i=0;i<2;i++)

for(j=1;j<3;j++)

{

a1=a[i][j];

b1=a[j][i];

a[i][j]=b1;

a[j][i]=a1;

}

for(i=0;i<3;i++)

for(j=0;j<3;j++)

{

printf("%d ",a[i][j]);


if(j==2)

printf("\n");

}

return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-20
if(j=2)的地方应该改成if(j==2)
if后面应该跟的是判断真假的boolean类型或者表达式
第2个回答  推荐于2016-08-12
#include<stdio.h>
void main(){
int a,b;
int c[3][3];
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&c[i][j]);
printf("转置前矩阵为\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%d ",c[i][j]);
if(j==2)
printf("\n");
}
printf("转置后矩阵为\n");
for(i=0;i<2;i++)
for(j=1;j<3;j++)
{
a=c[i][j];
b=c[j][i];
c[i][j]=b;
c[j][i]=a;
}

for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%d ",c[i][j]);
if(j==2)
printf("\n");
}}
你把数组定义错了,前面刚定义了一个整型的a后面又把a拿来当做数组名,这样的话编译器会报错的。你这个代码稍微帮你改了下,你看现在是不是好点了。本回答被提问者和网友采纳
第3个回答  2015-05-20
int a,b了又int a[3][3]? 我不知道题主想表达什么