1. 程式人生 > >ACMNO.8輸入一行字元,分別統計出其中英文字母、空格、數字和其他字元的個數。 輸入 一行字元 輸出 統計值 樣例輸入 aklsjflj123 sadf918u324 asdf91u32

ACMNO.8輸入一行字元,分別統計出其中英文字母、空格、數字和其他字元的個數。 輸入 一行字元 輸出 統計值 樣例輸入 aklsjflj123 sadf918u324 asdf91u32

題目描述

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

輸入

一行字元

輸出

統計值

樣例輸入

aklsjflj123 sadf918u324 asdf91u32oasdf/.';123

樣例輸出

23 16 2 4

來源/分類

C語言 

題目截圖:
題目中的空格 數字這兩個選項位置放反啦~
在這裡插入圖片描述思路:

我們只好通過一個getchar()函式逐個對輸入的字元進行修改啦~
一個一個進行判斷!
反正是這個函式!

getchar()是到緩衝區讀取第一個字元
首先,從鍵盤輸入許多字元,最後回車後,所有字元包括回車放到緩衝區
這時才開始迴圈執行getchar(),讀入一個字元判斷是否回車,不是就繼續讀。
是回車就退出迴圈(之所以說是順序接受一行字元,是因為它取的始終是緩衝區中第一個字元,
每取一個緩衝區的字元少一個,也就是順序讀取了!

程式碼:

#include<iostream>
 using namespace std;
 int main()
 {
 char c;int a,b,x,y;a=b=x=y=0;
 
 while((c=getchar())!='\n')
 {
 	if((c>='a'&&c<='z')||(c>'A'&&c<'Z'))
 		a++;
 	else
	 if(c==' ')
 		b++;
 	 else
	 	if(c>='0'&&c<='9')
 			x++;
 		else
 		y++;
 	

 }
 //cout<<a<<" "<<b<<" "<<x<<" "<<y<<" "<<endl;
	cout<<a<<" "<<x<<" "<<b<<" "<<y<<" "<<endl;
}

執行結果:
在這裡插入圖片描述
OJ結果:
在這裡插入圖片描述