|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#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;
- }
复制代码
经过修改后的代码可以正确地比较三个数的大小,并输出结果。希望对你有帮助!
球一个最佳答案谢谢啦!这对我非常重要!  
|
|