一阳 发表于 2016-6-1 23:47:26

矩阵转制不能转。。。。。。。求教为什么

#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:49:22

本帖最后由 离子云 于 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 22:44:36

离子云 发表于 2016-6-2 18:49
二维数组不能这样定义指针。给你改好的:

#include


谢了,好人啊

李星 发表于 2016-6-7 15:14:17

{:5_98:}{:5_98:}   写得不错   思路还是通的   
   源代码中的算法有点绕   但是结果是对的,    就是你在打印转置后的时   干嘛加个&求地址阿打印出来的当然就是地址了,,,,,在后面再加个\n就很完美了
页: [1]
查看完整版本: 矩阵转制不能转。。。。。。。求教为什么