我是c语言的新手,并且堆栈溢出,如果有...请原谅我的业余错误。
我正在尝试在代码中接受0到9之间的数字,大写字母和小写字母。因此,ASCII码介于48-57或65-90或98-122之间。代码的上半部分也包含菜单。为了简洁起见,我没有将其包括在内。
这是我尝试的第一件事:
int main()
{
char n;
printf("\n\nWhich code will you use?: ");
scanf("%c",&n);
if (n<=57 && n>=57 || n<=65 && n>=95 || n<=98 && n>= 122)
printf("Binary equivalent..");
/*there is supposed to be a whole another
section here.. however i haven't completed
that yet. I put a print statement to make
sure if the if statement would work...*/
else
printf("Wrong input..");
}
...
无论我输入了什么(输入了c,a和4),这都会给出“错误输入”的结果。
我尝试的第二件事是加上括号:
...
if ((n<=48 && n>=57 )||( n<=65 && n>=95 )||( n<=98 && n>= 122))
...
然后我尝试将“%c”更改为“%d”,但也没有任何改变。
...
printf("\n\nWhich code will you use?: ");
scanf("%d",&n);
...
唯一有效的方法是将每个关系分成三个不同的if语句。但是我将在每个if语句中编写相同的内容,这会让我的代码不必要地长...
答案 0 :(得分:2)
您弄乱了关系方向,也可以使用字符文字。试试这个
if ((n >= '0' && n <= '9') || (n >= 'A' && n <= 'Z' ) || (n >= 'a' && n <= 'z'))
答案 1 :(得分:1)
数字(0-9
):48
-57
大写字母(A-Z
):65
-90
小写字母(a-z
):97
-122
c >= 48 && c <= 57
:如果true
是数字,则c
c >= 65 && c <= 90
:如果true
是大写字母,则为c
c >= 97 && c <= 122
:如果true
是小写字母,则c
(c >= 48 && c <= 57) || (c >= 65 && c <= 90) || (c >= 97 && c <= 122)
:如果c
是字母数字(字母或数字),则为true
但是使用'a'
而不是97
要容易得多,因为您不需要那样地学习整个ASCII表。
n<=48 && n>=57
将始终为false
。如果暂停一秒钟,您将意识到(无论是否在ASCII表中)数字不能同时小于48
并大于57
。