假设ch是数字字符,则ch- '0'是对应的数值
假设整形变量ch的值是0到9,则 ch+'0'是对应的数字字符
这两句话什么意思,求解
假设ch是数字字符,也就是'0','1','2'这些,那'1'-'0'=1,'2'-'0'=2,因为'0'的ASCII码是48,'1'是49,以此类推,
反过来也是一样,假设整形变量ch的值是0到9,那1+'0'='1',因为'0'的ASCII码是48,加1等于49,49对应的字符是'1'
若我们使用整数0转变为数值是0 转变为字符得话 那就要加上48了,因为ASCII表上 ‘0’ 表示得数值是 48 。 而字符 ‘0’ 再ASCII 表上数值是48,那么转变为我们想要得到得数值得话就需要减去48也就是‘0’,来得到数值0.
不知道你这个问题是否已经解决, 如果还没有解决的话:(1)写出上述编程思路。
(2)根据(1)思路编程序。
答:
(1)由ASCII码表可知ASCII值小于32的为控制字符,在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母,在“a”和“z”之间为小写字母,其余则为其它字符。 1)先从键盘接收一个字符。2)根据ASCII码表判断字符的类别。3)输出字符的类别。
(2)代码如下:
#include <stdio.h>
#include <string.h>
int main() {
char c;
printf("Input a character:\n");
fflush(stdout);
c = getchar();
if (c < 32) {
printf("This is a control character\n");
} else {
if (c >= '0' && c <= '9') {
printf("This is a digit\n");
} else {
if (c >= 'A' && c <= 'Z') {
printf("This is a capital letter\n");
} else {
if (c >= 'a' && c <= 'z') {
printf("This is a small letter\n");
} else {
printf("This is an other character\n");
}
}
}
}
return 0;
}