题目:求一段任意字符串中各字符种类的数量(指定为ASas,./,[;];[]da cpwjok54511kv ;[]vkvkkkkk)
解题思路:首先要明白,各字符种类在ASCII中分布的区间,例如:数字0~9是48~57,a~z是97~122等。其次,字符是以整数形式(字符ASCII码十进制)在内存单元中存储的,可以通过整数来和字符相互转化。
还要了解getchar()和putchar()的用法!
注意事项:1.要注意while循环控制条件中 (c=getchar())最外层括号不可省略,具体可参考C语言运算符优先级参考表。
2.if选择结构中也可不采用ASC||码,可直接用对应字符作为判断条件
1 //代码: 2 #include<stdio.h> 3 int main() 4 { 5 int letter=0,number=0,nul=0,other=0; 6 int c; 7 while((c=getchar())!='\n') 8 { 9 if(65<=c&&c<=90||c>=97&&c<=122) //字母在ASCII表中在的区间 10 { 11 letter++; 12 } 13 else if(48<=c&&c<=57) //数字在ASCII表中所在的区间 14 { 15 number++; 16 } 17 else if(c==32) //空格在ASCII是32 18 { 19 nul++; 20 } 21 Else //其他 22 other++; 23 } 24 printf("%d %d %d %d\n",letter,number,nul,other); 25 return 0; 26 }