輸入三行文字,每行最多 80 字符,分別統計大寫字母、小寫字母、數字、空格及其他字符的個數。
#includeusing namespace std; int main() { int upper = 0, lower = 0, digit = 0, space = 0, other = 0; char text[3][81]; // 80 字符 + '\0' for (int i = 0; i < 3; i++) { cout << "請輸入第 " << i+1 << " 行:"; cin.getline(text[i], 81); // 安全讀取整行含空格 } for (int i = 0; i < 3; i++) { for (int j = 0; text[i][j] != '\0'; j++) { char ch = text[i][j]; if (ch >= 'A' && ch <= 'Z') upper++; else if (ch >= 'a' && ch <= 'z') lower++; else if (ch >= '0' && ch <= '9') digit++; else if (ch == ' ') space++; // 注意:原代碼誤用 '=',此處修正為 '==' else other++; } } cout << "大寫字母個數:" << upper << endl; cout << "小寫字母個數:" << lower << endl; cout << "數字個數:" << digit << endl; cout << "空格個數:" << space << endl; cout << "其他字符個數:" << other << endl; return 0; }
cin >> 遇空格截斷。 標準函數 isupper、islower、isdigit、isspace,支援本地化。'\0' 為終止條件,兼容不足 80 字符的行。else if (ch = ' ') 為賦值而非比較,導致所有非字母數字字符全歸類為空格,此處已修正為 ==。#include#include #include void countChars(const string& s, int& u, int& l, int& d, int& sp, int& o) { u = count_if(s.begin(), s.end(), [](char c){ return isupper(c); }); l = count_if(s.begin(), s.end(), [](char c){ return islower(c); }); d = count_if(s.begin(), s.end(), [](char c){ return isdigit(c); }); sp = count_if(s.begin(), s.end(), [](char c){ return isspace(c); }); o = s.length() - u - l - d - sp; }
字符統計是基礎編程訓練的經典題目。掌握 getline 安全輸入、ASCII 區間判斷或 標準函數、邊界條件處理,能寫出健壯、可移植的 C++ 代碼。