求助 三个数比大小报错
#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;
}
这段代码是用来比较三个数的大小并进行排序的。但是在比较的过程中可能会出现错误。请问你遇到了什么错误? 在这份代码中,存在一个问题,即在比较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]