鱼C论坛

 找回密码
 立即注册
查看: 1549|回复: 5

[已解决]刚学指针,有问题不懂,来请教

[复制链接]
发表于 2018-3-18 16:28:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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;
   
}
最佳答案
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;
   
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-18 16:43:06 | 显示全部楼层
if(*x<*y)   if(a<b) 是一个意思。 if(*x<*y)行,那么 if(a<b)也行。如果 if(a<b)不行,那么 if(*x<*y)也不行。。。。不知道你所在的问题在哪。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-18 16:48:25 | 显示全部楼层

那请问我这个程序为什么无法实现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-18 16:55:06 | 显示全部楼层
wpcbobo 发表于 2018-3-18 16:48
那请问我这个程序为什么无法实现

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

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

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

  3. void main()

  4. {
  5.         int a,b,c;
  6.                 int *x,*y,*z;

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

  8.                 x=&a;
  9.          y=&b;
  10.          z=&c;

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

  18.         }
  19.                 if(*y<*z)
  20.         {
  21.           exchange(y,z);
  22.         }

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

  25. void exchange(int *x, int *y)
  26. {
  27.       int temp;

  28.       temp=*x;
  29.       *x=*y;
  30.       *y=temp;
  31.    
  32. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-18 17:18:25 | 显示全部楼层
ba21 发表于 2018-3-18 16:55
那请问哪里无法实现了?
难道 你输入 1 2 3 。if(*x

哈哈哈谢谢大佬   但是 我还是不明白  为什么定义exchange()的时候,()里面一定要有参数。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
   
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 12:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表