題目要求
輸入一行字符,分別統計出其中英文字母、空格、數字和其他字符的個數。
思路分析
作爲一個小白,鍵盤輸入我想到了scanf,然後判斷統計英語字母,空格,字符,和其他的字符
然後就會發現"回車"不大好弄,而且結果都不對
我????滿臉疑惑,摸不着頭腦????
查找資料得知:
scanf函數是格式輸入函數,即按用戶指定的格式從鍵盤上把數據輸入到指定的變量中。
getchar函數是鍵盤輸入函數,其功能是從鍵盤上輸入一個字符。
結束輸入的方式不同
scanf函數以空格、Enter、Tab結束一次輸入,不接受空格符。
getchar函數以Enter結束輸入(空格不結束),接受空格符。
知道這個就好辦了,
- 設置變量a,b,c,d a存儲英文字母個數,b存儲空格的個數,c存儲數字的個數,d存儲其他字符個數
- 設置變量x爲鍵盤輸入字符,分情況考慮
- 可以是a~z和A~Z ===> a
- 可以是'空格' ===> b
- 可以是數字0~9 ===> c
- 除'回車'之外,其他的字符 ===> d
- 注意,不能是'回車',題目要求是一行字符,'回車'鍵換行了
- 然後將a,b,c,d打印出來
實現代碼
#include<stdio.h>
int main()
{
int a=0,b=0,c=0,d=0;//a存儲英文字母個數,b存儲空格的個數,c存儲數字的個數,d存儲其他字符個數
char x;
printf("輸入一行字符串:\n");
while((x=getchar())!='\n')//對字符串中的每一個字符進行比較判斷
{
if(x>='a'&&x<='z'||x>='A'&&x<='Z')
a++;
else if(x==' ')
b++;
else if(x>='1'&&x<='9')
c++;
else d++;
}
printf("英文字母的個數爲:%d\n",a);
printf("空格的個數爲: %d\n",b);
printf("數字的個數爲: %d\n",c);
printf("其他字符的個數爲: %d\n",d);
return 0;
}
測試結果
簡單測試,隨意輸入數字123,*,空格,~abc