怎样用二维数组名实现三阶矩阵转置?

sxj0384 2009-05-28 07:52:31
我想实现三阶矩阵转置,经前辈讲解有少许改进,但仍然不能运行,
这是怎么回事??
#include <stdio.h>
#define N 3
void convert(int a[][]);
main()
{int a[N][N],i,j;
for(i=0;i <N;i++)
for(j=0;j <N;j++)
scanf("%d",&a[i][j]);
printf("You input:\n");
for(i=0;i <N;i++)
{for(j=0;j <N;j++)
{printf("%3d",a[i][j]);}
printf("\n");
}
convert(a);
printf("convert:\n");
for(i=0;i <N;i++)
{for(j=0;j <N;j++)
{printf("%3d",a[i][j]);}
printf("\n");

}
void convert(int a[N][N])
{int i,j,t;
for(i=0;i <N;i++)
for(j=i+1;j <N;j++)
{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}

}
}
...全文
197 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
光宇广贞 2009-05-28
  • 打赏
  • 举报
回复
我四楼错了,那种不对,见三楼的对。

[]里面必须指定常量。除非你上面有

#define N 3

或者

const int N = 3;

在全局声明。
光宇广贞 2009-05-28
  • 打赏
  • 举报
回复
或者

void convert(int a[][N], int N )

这样应该是对的。
光宇广贞 2009-05-28
  • 打赏
  • 举报
回复
……
别的我没看,只是这一点:

把你的函数声明改成:

void convert(int a[][], int N)
sxj0384 2009-05-28
  • 打赏
  • 举报
回复
不理解阿,能不能把程序改下,传上来~~谢谢!
光宇广贞 2009-05-28
  • 打赏
  • 举报
回复
有什么问题?


只有一个问题,你的void convert(int a[N][N]) ,这个N指定是没用的,你必须把这个N单独传进来……

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧