編程小白C語言統計鍵盤輸入個數

題目要求

輸入一行字符,分別統計出其中英文字母、空格、數字和其他字符的個數。

思路分析 

作爲一個小白,鍵盤輸入我想到了scanf,然後判斷統計英語字母,空格,字符,和其他的字符

然後就會發現"回車"不大好弄,而且結果都不對

我????滿臉疑惑,摸不着頭腦????

查找資料得知:

scanf函數是格式輸入函數,即按用戶指定的格式從鍵盤上把數據輸入到指定的變量中。

getchar函數是鍵盤輸入函數,其功能是從鍵盤上輸入一個字符。

結束輸入的方式不同

scanf函數以空格、Enter、Tab結束一次輸入,不接受空格符。

getchar函數以Enter結束輸入(空格不結束),接受空格符。

知道這個就好辦了,

  • 設置變量a,b,c,d a存儲英文字母個數,b存儲空格的個數,c存儲數字的個數,d存儲其他字符個數
  • 設置變量x爲鍵盤輸入字符,分情況考慮
  1. 可以是a~z和A~Z  ===> a
  2. 可以是'空格'        ===> b
  3. 可以是數字0~9      ===> c
  4. 除'回車'之外,其他的字符  ===> d
  5. 注意,不能是'回車',題目要求是一行字符,'回車'鍵換行了
  • 然後將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 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章