Chinaunix
标题:
[新手]为什么我的输入字符的时候会导致死循环
[打印本页]
作者:
whelysee
时间:
2009-11-20 23:09
标题:
[新手]为什么我的输入字符的时候会导致死循环
输入1-30之间的数字,输出金字塔。
如果输出的数字不在1-30之间,提示出错,正常。
可是一输入字母就会一直在while那里循环,满屏的Input wrong number! Please input again:
为什么字母不在判断之内啊?
/*输出数字金字塔*/
#include <stdio.h>
int main()
{
int number, lnumber, rnumber;
int rows,blank;
printf("Please input a number between 1 to 30:");
scanf("%d", &number);
while ( (number < 0 || number > 30) )
{
printf("Input wrong number! Please input again:");
scanf("%d", &number);
}
{
rows = (number - 1);
for (rows; rows >= 0; rows--)
{
for (blank = rows; blank >= 0; blank--)
printf(" ");
for (lnumber = 1; lnumber <= (number - rows); lnumber++)
printf("%d ", lnumber);
for (rnumber = (number - rows - 1); rnumber >= 1; rnumber--)
printf("%d ", rnumber);
printf("\n");
}
}
}
[
本帖最后由 whelysee 于 2009-11-20 23:32 编辑
]
作者:
amazingjxq
时间:
2009-11-21 09:08
字母的ascii码 >= 65
输入字母那变量值应该是他们的ascii码大小。你可以输出他们看看是多少。
作者:
whelysee
时间:
2009-11-21 09:26
我这个程序不是输出字母金字塔,而是数字塔。
就是因为字母的ascii值>=65,那应该提示错误让我重新输入啊,可是这个程序就一直循环提示错误。
作者:
xborant
时间:
2009-11-21 12:00
输入字母,scanf应该返回0,也就是读取number失败。你应该判断一下scanf的返回值吧。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2