我坚持做一个循环练习。只要我只输入整数,该程序似乎工作正常。但是,如果我输入一个字符,一个带有小数的符号或实数(甚至是整数,如1.0),我会得到一个无限循环。
int main()
{
int num;
printf("Enter an odd number 1 and 10.");
while(1)
{
printf("\n\nEnter : ");
scanf("%d", &num);
if(num == 0)
break;
else if(num < 0 || num > 10)
printf("You entered number is beyond the range.");
else if(num % 2 == 0)
printf("You entered an even number.");
else
printf("You entered a correct number.");
}
printf("You are exiting the program.");
return 0;
}
答案 0 :(得分:0)
但是,如果我输入一个字符,一个符号或一个带小数的实数?那么你有未定义的行为,因为scanf()
期待{{1} }参数但你提供的不是int
参数。
甚至是整数,例如int
?不,1.0
不是1.0
它是真实数字。
检查integer
的返回值,以了解它是成功还是失败。打开scanf()
并进行分析。例如
man 3 scanf
int ret = 0;
ret = scanf("%d",&num);