wpcbobo 发表于 2018-3-18 16:28:28

刚学指针,有问题不懂,来请教

#include <stdio.h>
void exchange(a,b);                                    想要实现 输入三个整形,然后将三个数从大到小排序,然后输出

int *x,*y,*z,a,b,temp;
       

void main()

{
        int a,b,c;
        scanf("%d%d%d",&a,&b,&c);
   x=&a;
       y=&b;
       z=&c;
        if(*x<*y)                   问题:将这里改成if(a<b)为什么不行,希望大佬教我!!!!            
        {
           exchange(x,y);
        }
    if(*x<*z)
        {
          exchange(x,z);

        }
    if(*y<*z)
        {
          exchange(y,z);
        }
    printf("%d%d%d",a,b,c);
}

void exchange()
{
      
          temp=*x;
          *x=*y;
          *y=temp;
   
}

ba21 发表于 2018-3-18 16:43:06

if(*x<*y)   if(a<b) 是一个意思。 if(*x<*y)行,那么 if(a<b)也行。如果 if(a<b)不行,那么 if(*x<*y)也不行。。。。不知道你所在的问题在哪。

wpcbobo 发表于 2018-3-18 16:48:25

ba21 发表于 2018-3-18 16:43
if(*x

那请问我这个程序为什么无法实现

ba21 发表于 2018-3-18 16:55:06

wpcbobo 发表于 2018-3-18 16:48
那请问我这个程序为什么无法实现

那请问哪里无法实现了?
难道 你输入 1 2 3 。if(*x<*y)就是正确的吗?

对比下下面代码:
#include <stdio.h>

void exchange(int *x,int *y);                                    //想要实现 输入三个整形,然后将三个数从大到小排序,然后输出      

void main()

{
      int a,b,c;
                int *x,*y,*z;

      scanf("%d %d %d",&a,&b,&c);

                x=&a;
         y=&b;
         z=&c;

      if(a<b)                  // 问题:将这里改成if(a<b)为什么不行,希望大佬教我!!!!            
      {
         exchange(x,y);
      }
                if(*x<*z)
      {
          exchange(x,z);

      }
                if(*y<*z)
      {
          exchange(y,z);
      }

    printf("%d %d %d\n",a,b,c);
}

void exchange(int *x, int *y)
{
      int temp;

      temp=*x;
      *x=*y;
      *y=temp;
   
}

wpcbobo 发表于 2018-3-18 17:18:25

ba21 发表于 2018-3-18 16:55
那请问哪里无法实现了?
难道 你输入 1 2 3 。if(*x

哈哈哈谢谢大佬   但是 我还是不明白为什么定义exchange()的时候,()里面一定要有参数。。

ba21 发表于 2018-3-18 17:41:45

wpcbobo 发表于 2018-3-18 17:18
哈哈哈谢谢大佬   但是 我还是不明白为什么定义exchange()的时候,()里面一定要有参数。。

代码你爱怎么写怎么写。没说一定要参数。

你能用全局变量你就用全局变量(能不用最好不要用)
以你的逻辑思维能把代码写出,完成要求就行。

我可没有说一定要有参数;只是给你代码参考。(能用传参实现的功能干嘛要用全局变量)

另:再说了,你声明的时候有参数,   为什么 在定义的时候又没参数了。这算那门子的事????
void exchange(a,b);// 声明 处
void exchange() // 定义 处
{
      
          temp=*x;
          *x=*y;
          *y=temp;
   
}
页: [1]
查看完整版本: 刚学指针,有问题不懂,来请教