1. 程式人生 > >廈理OJ——1005:3_3統計不同型別字元

廈理OJ——1005:3_3統計不同型別字元

一、題目

Description

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

Input

鍵盤上的任意字串,以;結束。

Output

character= ,blank= ,digit= ,other= ;

Sample Input

case 1:printf("very good!");

Sample Output

character=18,blank=2,digit=1,other=6;

二、解析

本題主要考察字元的操作。思路很簡單,因為題目中說了字串以;結尾(以特定符號結尾的字串都可以考慮用這種方法操作),使用一個while迴圈,不斷進行getchar()操作,判斷得到的字元是否為‘;’,如果是則跳出迴圈,否則對得到的字元進行判斷,建立四個變數分別儲存四種字元型別,根據得到的字元對相應變數進行+1,最後按格式輸出即可。

三、原始碼

#include <iostream>

using namespace std;

int main()
{
	//分別儲存各字元的個數
	int character = 0, blank = 0, digit = 0, other = 0;
	char ch_in;//接受輸入的字元
	//迴圈計算直到檢測到分號
	while ((ch_in = getchar()) != ';')
	{
		if (ch_in >= 'a'&&ch_in <= 'z' || ch_in >= 'A'&& ch_in <= 'Z')
			character++;
		else if (ch_in == ' ')
			blank++;
		else if (ch_in >= '0'&&ch_in <= '9')
			digit++;
		else
			other++;
	}
	cout << "character=" << character << ",blank=" << blank << ",digit=" << digit << ",other=" << other << ";";
	
	return 0;
}

四、深入研究

這裡說一下,要是沒有特定的符號作為結尾卻要用這種方法的時候,可以使用字串變數將整個字串讀入(字串中有空格的話可能不適用),如果使用while+getchar的話需要對檔案尾進行判斷,在OJ上提供的資料是以EOF(End of File)結尾的,只要對這個進行判斷就能將整個字串按字元讀入。