#include<stdio.h>
int main()
{
int n=0,i=0,j=0,a[30][30],b[30][30];
scanf("%d",&n);//输入阶数
if(n>0 && n<=20)
{
for(i=0;i<n;i++)//输入矩阵
{
for(j=0;j<n;j++)
{
scanf("%d",a[i]+j);
if(a[i][j]>99) printf("input error!");
}
}
}
for(i=0;i<n;i++)//矩阵转置
{
for(j=0;j<n;j++)
{
b[i][j]=a[j][i];
}
}
for(i=0;i<n;i++)//输出矩阵
{
for(j=0;j<n;j++)
printf("%3d",b[i][j]);
if(i<n-1)
printf("\n");
}
return 0;
}
(pta上显示答案错误,哪里错了?)
就输出来说,可以。但作业的目的可能是在同一个二维数组中转置,而不是产生一个新的二维数组吧
应该是输出矩阵的格式不对
printf("%3d",b[i][j]);
改成 printf("%d ",b[i][j]);看看
for(i = 0;i < n;i++)//矩阵转置
for(j = 0;j < i;j++)
{
int temp = a[i][j];
a[i][j] = a[j][i];
a[j][i] = temp;
}
可以这样写,在原数组进行转置~