不知道错在哪里?
#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;
}
if (b > c)
{
t = c;
c = b;
b = c;
}
printf("%d <= %d <= %d\n",*pa,*pb,*pc);
return 0;
}
问题在于第三个if语句中的交换操作。在交换b和c的值时,代码中错误地使用了错误的变量名。正确的代码应该是:
if (b > c)
{
t = c;
c = b;
b = t;
}
在交换b和c的值时,应该使用临时变量t来保存c的值,然后将b的值赋给c,最后将t的值赋给b。
这样修改后的代码就能正确地按升序打印出输入的三个数了。 这段代码存在两个问题:
1. 在第三个交换操作中,变量的赋值顺序有误。导致交换操作不正确。
2. 输出结果时,使用了错误的变量进行打印。
以下是修正后的代码:
++
#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", *pa, *pb, *pc);
return 0;
}
经过修改后的代码可以正确比较三个数的大小,并输出结果。希望对你有帮助!
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页:
[1]