c语言用指针实现矩阵转置----小弟新手,大侠帮帮忙

dabianzhixing 2011-06-27 06:18:32

#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
void main()
{
void tran(int a[3][3]);
printf("请输入一个三阶矩阵\n");
int a[3][3],(*b)[3];
b=a; /*这里地址相同,但是到后面地址就不同了,变成了a=b+1的地址了,我没改过a的地址啊!!崩溃了
for(int j=0;j<9;j++)
{
printf("请输入a[%d][%d]\n",j/3,j%3);
scanf("%d",&b+j);
}
tran(a);
}
void tran(int a[3][3])
{
for(int i=0;i<3;i++)
{
for(int j=i+1;j<3;j++)
{
int p;
p=*(*(a+i)+j);
*(*(a+i)+j)=*(*(a+j)+i);
*(*(a+j)+i)=p;
}
}
for(int o=0;o<3;o++)
{
for(int t=0;t<3;t++)
{
printf("%5d",a[o][t]);
}
printf("\n");
}
}
...全文
511 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dabianzhixing 2011-06-28
  • 打赏
  • 举报
回复
谢谢二楼tosoftware,确实是那里的问题,本来一个转置的问题不用这么麻烦,只是为了练习指针才这样做的。
jixingzhong 2011-06-27
  • 打赏
  • 举报
回复
这样的问题,断点后单步调试看看比较合适。
ToSoftWare 2011-06-27
  • 打赏
  • 举报
回复
scanf("%d",&b+j); --这有问题吧

void tran(int a[3][3])
{
for(int i=0;i<3;i++)
{
for(int j=i+1;j<3;j++)
{
int p;
p=*(*(a+i)+j);
*(*(a+i)+j)=*(*(a+j)+i);
*(*(a+j)+i)=p;
}
a是数组的首地址,而后面用指针。也许这里没有问题,但这不是一个好的写法
}
金刚葫芦娃 2011-06-27
  • 打赏
  • 举报
回复
b=a;

你把a给了b, 相当于a和b都指向一个地址,你在后边改变b的值,a的值也变了.

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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