如果孤独感 发表于 2020-4-7 16:11:17

所以说这个课后作业的答案什么鬼是我太捞了么完全看不懂

https://xxx.ilovefishc.com/forum/201605/20/164324w8eee3ounxexv18z.png
#include <stdio.h>

int main(void)
{
      int a, b, c, t;
      int *pa, *pb, *pc;
      
      printf("请输入三个数:");
      scanf("%d%d%d", &a, &b, &c);
      
      pa = &a;
      pb = &b;
      pc = &c;
      
      if (a > b)
      {
                t = *pa;
                *pa = *pb;
                *pb = t;
      }
      
      if (a > c)
      {
                t = *pa;
                *pa = *pc;
                *pc = t;
      }
      
      if (b > c)
      {
                t = *pb;
                *pb = *pc;
                *pc = t;
      }
      
      printf("%d <= %d <= %d\n", *pa, *pb, *pc);
      printf("%d <= %d <= %d\n", a, b, c);
      
      return 0;
}
求解释一下

BngThea 发表于 2020-4-7 16:15:15

不就是交互两个变量的值吗,有什么看不懂的

晚晚今天秃了吗 发表于 2020-4-7 16:15:27

同求!!!qwqqqq

qiuyouzhi 发表于 2020-4-7 16:16:12

就是一个交换值的代码啊
t是一个临时变量,剩下俩指针就
交换值就好了嘛

sunrise085 发表于 2020-4-7 16:28:09

这就是进行值交换,用不用指针都一样,不知道你哪里不理解
我猜这个题目的原意应该不是进行值交换,而是指针交换。
#include <stdio.h>

int main(void)
{
    int a, b, c;
    int *pa, *pb, *pc,*p;
   
    printf("请输入三个数:");
    scanf("%d%d%d", &a, &b, &c);
   
    pa = &a;
    pb = &b;
    pc = &c;
   
    if (a > b)
    {
      p = pa;
      pa = pb;
      pb = p;
    }
   
    if (a > c)
    {
      p = pb;
      pb = pc;
      pc = p;
    }
   
    if (b > c)
    {
      p = pa;
      pa = pc;
      pc = p;
    }
   
    printf("%d <= %d <= %d\n", *pa, *pb, *pc);
    printf("a=%d, b=%d, c=%d\n", a, b, c);
   
    return 0;
}

4goodworld 发表于 2020-4-7 16:29:43

通过指针的解引用来获得值,通过指针指向地址上的值进行交换,然后实现换值

liuzhengyuan 发表于 2020-4-7 16:42:27

3数排序呀,应该能理解

然后比较交换
页: [1]
查看完整版本: 所以说这个课后作业的答案什么鬼是我太捞了么完全看不懂