矩阵转制不能转。。。。。。。求教为什么
#include<stdio.h>int main()
{
void move(int * pointer);
int a,*p,i;
printf("input matrix:\n");
for(i=0;i<3;i++)
scanf("%d %d %d",&a,&a,&a);
p=&a;
move(p);
printf("Now,matrix:\n");
for(i=0;i<3;i++)
printf("%d %d %d",&a,&a,&a);
printf("201541110115李娅婷\n");
return 0;
}
void move(int * pointer)
{
int i,j,t;
for(i=0;i<3;i++)
for(j=i;j<3;j++)
{t=*(pointer+3*i+j);
*(pointer+3*i+j)=*(pointer+3*j+i);
*(pointer+3*j+i)=t;
}
} 本帖最后由 离子云 于 2016-6-2 18:50 编辑
二维数组不能这样定义指针。给你改好的:
#include<stdio.h>
int main()
{
void move(int (* pointer)[]);
int a,i;
int (*p)=a;
printf("input matrix:\n");
for(i=0;i<3;i++)
scanf("%d %d %d",&a,&a,&a);
move(p);
printf("Now,matrix:\n");
for(i=0;i<3;i++)
printf("%d %d %d\n",a,a,a);
printf("201541110115李娅婷\n");
return 0;
}
void move(int (* pointer))
{
int i,j,t;
for(i=0;i<3;i++)
for(j=i;j<3;j++)
{
t=*(*(pointer+i)+j);
*(*(pointer+i)+j)=*(*(pointer+j)+i);
*(*(pointer+j)+i)=t;
}
} 离子云 发表于 2016-6-2 18:49
二维数组不能这样定义指针。给你改好的:
#include
谢了,好人啊 {:5_98:}{:5_98:} 写得不错 思路还是通的
源代码中的算法有点绕 但是结果是对的, 就是你在打印转置后的时 干嘛加个&求地址阿打印出来的当然就是地址了,,,,,在后面再加个\n就很完美了
页:
[1]