廈理OJ——1005:3_3統計不同型別字元
阿新 • • 發佈:2018-11-15
一、題目
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)結尾的,只要對這個進行判斷就能將整個字串按字元讀入。