zyh1104 发表于 2023-11-4 22:09:13

求助 三个数比大小报错

#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 = b;
      b = a;
      a = t;
      }

      if (a > c)
      {
      t = c;
      c = a;
      a = t;
      }

isdkz 发表于 2023-11-4 22:09:24

这段代码是用来比较三个数的大小并进行排序的。但是在比较的过程中可能会出现错误。请问你遇到了什么错误?

Mike_python小 发表于 2023-11-4 22:10:53

在这份代码中,存在一个问题,即在比较a和c的大小时,由于之前的交换操作,a的值已经被修改为了原本的b的值,因此比较的结果不正确。

需要将比较a和c的大小的代码修改为:

++
if (*pa > *pc)
{
    t = *pc;
    *pc = *pa;
    *pa = t;
}


改为使用指针的方式访问变量,避免在之前的交换操作中修改变量的值。

修正后的代码如下:

++
#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 (*pa > *pb)
    {
      t = *pb;
      *pb = *pa;
      *pa = t;
    }

    if (*pa > *pc)
    {
      t = *pc;
      *pc = *pa;
      *pa = t;
    }

    if (*pb > *pc)
    {
      t = *pc;
      *pc = *pb;
      *pb = t;
    }

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

    return 0;
}


经过修改后的代码可以正确地比较三个数的大小,并输出结果。希望对你有帮助!

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 求助 三个数比大小报错