題目:求一段任意字符串中各字符種類的數量(指定為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 }