1.C语言二分法猜数字:无法跳出循环,输入部分数字会卡死
2.
#include <stdio.h>
int main()
{
int c;
int a;
int b;
int num;
char one;
char two;
one = 0;
printf("Please enter your number(from '0'to'100'):");
scanf("%d",&num);
b=0;
a=100;
c = (a+b)/2.0;
while(one!= 'y')
{
KK:
if((num >= '0')&&(num <= '100'))
{
RE:
printf("%d'Y'or'N'\n",c);
printf("Up is %d,Down is %d\n",a,b);
one=getchar();
if(one == 'n')
{
GG:
two=getchar();
if(two == 'b')
{
b=c;
c=(a+c)/2.0;
goto RE;
}
else
if(two == 's')
{
a=c;
c=(b+c)/2.0;
goto RE;
}
else
{
printf("Please enter 'b' or 's'\n");
goto GG;
}
}
else
if((a != 'N') && (a != 'Y'))
{
goto RE;
}
}
else
if((num <= '0')&&(num >= '100'))
{
goto KK;
}
}
printf("The number is %d",c);
return 0;
}
3.
num >= '100'
这种写法不合法
应该是
int num;
scanf(("%d", &num);
if (num >= 100)
字符不能这么比较
不好比较,输入的是字符可以和字符比较,num是数字不好和字符比较!
字符和数字可以一一对应,但是,'0' 是一个字符,不是数字0,而是数字48.
C:\MinGW\test>gcc example1.c -Wall
example1.c: In function 'main':
example1.c:19:39: warning: multi-character character constant [-Wmultichar]
19 | if((num >= '0')&&(num <= '100'))
| ^~~~~
example1.c:56:40: warning: multi-character character constant [-Wmultichar]
56 | if((num <= '0')&&(num >= '100'))
| ^~~~~
https://tool.ip138.com/ascii_code/