C语言逻辑问题

来源:百度知道 编辑:UC知道 时间:2024/07/07 14:57:38
main()
{
int a,b;
scanf("%d%d",&a,&b);
if((a<=30&&b>=5000)||(a>30&&b>=30000))
{
printf("he ni jie hun ");

}
else
{
printf("no men");

}
getch();

}
为什么输入23,300001还是输出 no men

b没有值,初始化是是-8XXXXX的
所以不复合前面的if条件。
从而输出no men

输入用空格隔开,不要用逗号
23 300001

输入格式必须与scanf中的格式匹配,所以不能输入23,300001
而应该用空格,也就是23 300001来输入

如果输入23,300001
运行到scanf("%d%d",&a,&b)时,把23赋值给a,然后读到','找不到一个整型值,所以b没有读进来。
scanf读整型数时,会自动跳过空白符(空格,换行,回车等等),但是不会跳过',',你可以检查一下scanf的返回值,应该是1,表示只成功读取了一个数字