谁能帮我解决一个C语言的小问题

来源:百度知道 编辑:UC知道 时间:2024/04/30 03:57:02
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
int a,b,c,x,y,z;
scanf("%d,%d,%d",&a,&b,&c);
if (a>b)
{
x=a,y=b;
}
else
{
x=b,y=a;
}
if (y>c)
z=c;
else
if(x>c)
z=y,y=c;
else
{
z=y;
y=x;
x=c;
}
if( a==b||b==c||c==a)
printf ("wrong!\n");
else
printf ("the order:%d>%d>%d\n",x,y,z);
system("pause");

return 0;
}

这个题目我做出答案本身没什么问题```

也就是说如果按正规要求的话输入3个数字不会出错```

但是如果只输入1个数字.比如说2

他就会出现" 64>2>0 这个结果..

谁能帮我解释一下为什么````并且告诉我那个64是哪来的`?

谁能帮我解释一下为什么````并且告诉我那个64是哪来的`?

这个64是系统的垃圾值,因为你没有输入变量的值.
但是系统在运算的时候,还是去变量所在的地方读取变量的值,这个地方存储的是垃圾值,所以会出现这样莫名其妙的情况

例如输入 1,2,3 就会输出3>2>1
输入2 就会输出64>2>0 是吧.
64 对应的字符是d.我也搞不明白,按理说应该报错.

如果只输入一个数,则这个数赋给a,而b和c是系统自动赋给的一个初值,一般来说是最小负数,因此b和c会相等,。至于你的运行结果可能与你用的编译器有关吧

给变量先赋个初值,再增加判断输入个数的语句
64什么的可能是以前内存里保留的数据??……

定义数据的时候最好初始化一下,否则很容易出现这样莫名其妙的东西