順序輸出給定字符串中所出現過的大寫英文字母,每個字母只輸出一遍;若無大寫英文字母則輸出“Not Found”。
輸入格式:
輸入為一個以回車結束的字符串(少於80個字符)。
輸出格式:
按照輸入的順序在一行中輸出所出現過的大寫英文字母,每個字母只輸出一遍。若無大寫英文字母則輸出“Not Found”。
輸入樣例1:
FONTNAME and FILENAME
輸出樣例1:
FONTAMEIL
輸入樣例2:
fontname and filrname
輸出樣例2:
Not Found
(摘自pintia.cn)
解答:
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 bool isMajuscule(char); //用於判斷字符類型的形參是否為大寫字母 5 int main() 6 { 7 string str,result; //str為輸入的字符串,result為結果 8 unsigned i(0),j(0); //定義無符號類型變量,可以替換為int型 9 getline(cin,str); //獲取一整行字符串,用於接收帶有空格的字符串 10 while(i<str.length()) 11 { 12 if(isMajuscule(str[i])) 13 { 14 bool flag(true); //str[i]已經存在(不需要添加)則為false,不存在(需要添加)則為true 15 for(unsigned k(0);k<j;k++) //判斷str[i]是否在result中存在 16 { 17 if(str[i]==result[k]) 18 flag=false; 19 } 20 if(flag) 21 { 22 char ch(str[i]); 23 result=result+ch; //向result添加字符 24 j++; 25 } 26 } 27 i++; 28 } 29 if(result.length()) cout<<result; //如果result不為空,則輸出result 30 else cout<<"Not Found"; //result為空,則輸出"Not Found" 31 return 0; 32 } 33 inline bool isMajuscule(char ch) 34 { 35 if(ch>='A'&&ch<='Z') return true; //判斷ch是否在'A'和'Z'之間,即判斷ch是否為大寫 36 else return false; 37 }
解析:
見代碼注釋。
由於string.length()的返回值為unsigned類型變量,因此使用返回值於int型變量比較時,編譯器會報‘warning’,但不影響正確性。
字符串類型的變量可以使用'+',用於連接字符串。