求助 三个数比大小报错
#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)
{
b = t;
b = a;
a = t;
}
if (a > c)
{
c = t;
c = a;
a = t;
}
if (b > c)
{
c = t;
c = b;
b = c;
}
printf("%d <= %d <= %d\n",*pa,*pb,*pc);
return 0;
}
问题出在交换变量值的地方。在代码中,使用了一个未初始化的变量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 (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 = t;
}
printf("%d <= %d <= %d\n", *pa, *pb, *pc);
return 0;
}
在交换变量值的地方,我们使用了临时变量t来保存需要交换的值。首先将b的值赋给t,然后将a的值赋给b,最后将t的值赋给a。同样的方法也用于交换a和c的值,以及b和c的值。
这样修改后,代码就能正确比较三个数的大小并输出结果了。 问题在于代码中的交换操作有误。请修改下面的部分:
if (a > b)
{
b = t;
b = a;
a = t;
}
if (a > c)
{
c = t;
c = a;
a = t;
}
if (b > c)
{
c = t;
c = b;
b = 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 = 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 (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 = t;
}
printf("%d <= %d <= %d\n", *pa, *pb, *pc);
return 0;
}
这样修改后的代码可以正确比较三个数的大小,并按照从小到大的顺序输出。希望能帮到你!
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页:
[1]