输出大写英文字母

顺序输出给定字符串中所出现过的大写英文字母,每个字母只输出一遍;若无大写英文字母则输出“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’,但不影响正确性。

  字符串类型的变量可以使用'+',用于连接字符串。

posted @ 2019-03-28 13:59  菜鸟plus  阅读(3483)  评论(0编辑  收藏  举报