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
{
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,表示只成功读取了一个数字