|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #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;
- d = e;
- e = g;
- }
- 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;
- }
复制代码
答案代码如上,输入三个数比较大小,当第一个数最大,第二个数最小,第三个数在中间的时候,比较结果如图是错误的,这个是什么情况呢?
这答案有误。
如果是使用*g来变换 efg所指向的地址,那么就不能再用 abc来比大小了,原因很简单,因为每做一次交换efg所指向的就不是原来的地址了。
代码就应该是:
- #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 (*d > *e)
- {
- g = d;
- d = e;
- e = g;
- }
- if (*d > *f)
- {
- g = d;
- d = f;
- f = g;
- }
- if (*e > *f)
- {
- g = e;
- e = f;
- f = g;
- }
- printf("%d <= %d <= %d\n", *d, *e, *f);
- return 0;
- }
复制代码
|
|