机智如我么么哒 发表于 2019-9-29 17:29:47

为什么我的代码没有输出值

#include<stdio.h>
int main()
{
        int str,i,j,t;
        int (*p)=str;
        printf("请输入矩阵:\n");
        for(i=0;i<3;i++)
        {
                for(j=0;j<3;j++)
                scanf("%d",&str);
        }

        for(i=0;i<3;i++)
        {
                for(j=i;j<3;j++)//将值进行交换,如str与str交换
                t=*(*(p+i)+j);
                *(*(p+i)+j)=*(*(p+j)+i);
                *(*(p+j)+i)=t;
        }
        for(i=0;i<3;i++)
        {
                for(j=0;j<3;j++)
                {
                        printf("%d ",*(*(p+i)+j));
                }
                printf("\n");
        }
        return 0;
}




最后没有输出值

机智如我么么哒 发表于 2019-9-29 17:30:36

如果输入的矩阵是
1 2 3
4 5 6
7 8 9
要输出
1 4 7
2 5 8
3 6 9

lmnbvcxz1 发表于 2019-9-29 17:41:25

你难道没有发现以下代码FOR循环没有括号吗
               for(j=i;j<3;j++)//将值进行交换,如str与str交换
                t=*(*(p+i)+j);
                *(*(p+i)+j)=*(*(p+j)+i);
                *(*(p+j)+i)=t;

应该为
          for(j=i;j<3;j++)//将值进行交换,如str与str交换
          {
                t=*(*(p+i)+j);
                *(*(p+i)+j)=*(*(p+j)+i);
                *(*(p+j)+i)=t;
                }

jackz007 发表于 2019-9-29 17:45:03

    干嘛要把简单事情复杂化,始终用 str 不好吗,干嘛要引入指针 int (*p)
#include<stdio.h>

int main(void)
{
      int str , i , j , t                                                   ;
      printf("请输入矩阵:\n")                                                       ;
      for(i = 0 ; i < 3 ; i ++) for(j = 0 ; j < 3 ; j ++) scanf("%d" , & str) ;
      for(i = 0 ; i < 3 ; i ++) {
                for(j = i ; j < 3 ; j ++) {
                        t = str                                                 ;
                        str = str                                       ;
                        str = t                                                 ;
                }
      }
      for(i = 0 ; i < 3 ; i ++) {
                for(j = 0 ; j < 3 ; j ++) {
                        if(! (j % 3)) {
                              if(j) printf("\n")                                    ;
                              printf("\t\t")                                        ;
                        } else {
                              printf(" ")                                           ;
                        }
                        printf("%d ", str)                                    ;
                }
                printf("\n")                                                          ;
      }
}

机智如我么么哒 发表于 2019-9-29 17:52:21

jackz007 发表于 2019-9-29 17:45
干嘛要把简单事情复杂化,始终用 str 不好吗,干嘛要引入指针 int (*p)

抱歉,题目要求用指针{:5_96:}

机智如我么么哒 发表于 2019-9-29 17:53:02

lmnbvcxz1 发表于 2019-9-29 17:41
你难道没有发现以下代码FOR循环没有括号吗
               for(j=i;j

嗯,改了我运行正确了
页: [1]
查看完整版本: 为什么我的代码没有输出值