输出大写英文字母
顺序输出给定字符串中所出现过的大写英文字母,每个字母只输出一遍;若无大写英文字母则输出“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’,但不影响正确性。
字符串类型的变量可以使用'+',用于连接字符串。