指针 答疑
图中的答案,我代码如下,为何运行结果全部错误?输入3 5 1和1 5 3 时,没有运行结果;输入5 3 1 时输出结果为1 <= 3 <= 1
#include <stdio.h>
int main()
{
int a,b,c;
int *d,*e,*f,*g;
printf("请输入三个数:");
scanf("%d%d%d",&a,&b,&c);
d=&a;
e=&b;
f=&c;
if(a>b)
{
d=e;
e=g;
g=d;
}
if(a>c)
{
d=f;
f=g;
g=d;
}
if(b>c)
{
e=f;
f=g;
g=e;
}
printf("%d <= %d <= %d\n",*d,*e,*f);
return 0;
} 本帖最后由 就是要努力呀 于 2021-4-20 10:17 编辑
你把你每一步的运行结婚写出来就可以找到错误了 把要交换的值最先赋给g啊,结果你都最后才赋。。。。。。 我把解释写注释里了
代码应该为
#include <stdio.h>
int main()
{
int a,b,c;
int *d,*e,*f,*g;
printf("请输入三个数:");
scanf("%d%d%d",&a,&b,&c);
d=&a;
e=&b;
f=&c;
if(a>b)
{
g=d;//把大的给g
d=e;//小的给d
f=g;//大的给f 下边同理就不解释了
}
if(a>c)
{
g=d;
d=f;
f=g;
}
if(b>c)
{
g=e;
e=f;
f=g;
}
printf("%d <= %d <= %d\n",*d,*e,*f);
return 0;
}
运行结果如下:
页:
[1]