# define m 3
# define n 2
#include<stdio.h>
void input(int a[m][n])
{
int i,j;
printf("请输入数据:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
}
void output(int a[m][n])
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf(" %d",a[i][j]);
printf("\n");
}
}
void zhuanzhi(int a[m][n])
{
int i,j;
int b[n][m];
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
b[j][i]=a[i][j];
}
output(b);
}
void main()
{
int a[m][n];
input(a);
zhuanzhi(a);
}
#define m 3
#define n 2
#include<stdio.h>
void output(int a[m][n])
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf(" %d",a[i][j]);
printf("\n");
}
}
void input(int a[m][n])
{
int i,j;
printf("请输入数据:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
output(a);
}
void zhuanzhi(int a[m][n])
{
int i,j;
int b[2][3];
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
b[j][i]=a[i][j];
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf(" %d",b[i][j]);
printf("\n");
}
}
void main()
{
int a[m][n];
input(a);
zhuanzhi(a);
}
你的输出函数调用
output(b);
实参的类型和形参不匹配。
我这是两个数组,不是一样的吧
追答不好意思,看错啦~这样,是输出的问题,你看output(b),这个时候传递的参数是一个两行三列的,而output中的形参则是三行两列的,你将output中参数a[m][n]改为a[n][m]就可以啦~这个里面是值传递的问题,不是刚才说的转置的问题,你再试一下~
能不能说一下怎么改
追答在函数转置中输出数组b
追问我不就是这么写的么
追答不是通过函数调用输出,而是用for循环输出
追问谢谢
本回答被提问者采纳