本题要求编写程序,顺序输出给定字符串中所出现过的大写英文字母,每个字母只输出一遍;若无大写英文字母则输出“Not Found”。
输入格式:
输入为一个以回车结束的字符串(少于80个字符)。
输出格式:
按照输入的顺序在一行中输出所出现过的大写英文字母,每个字母只输出一遍。若无大写英文字母则输出“Not Found”。
输入样例1:
FONTNAME and FILENAME
输出样例1:
FONTAMEIL
输入样例2:
fontname and filrname
输出样例2:
Not Found
#include <stdio.h>
int main(int argc, char *argv[]) {
char ch;//用来读入字符
char a[80];//用来存字符
int i=0;//用来计数
ch=getchar();
int flag=0;
while(ch!='\n'){
if(ch>='A'&&ch<='Z')
{
a[i++]=ch;
flag=1;//标志有大写字母,可以进行输出
}
ch=getchar();
}
// } 大写字母筛选完毕,存入数组,数组长度为i
int len=i;
for(int i=0;i<len;i++)
{
for(int j=i+1;j<len;j++)
{
if(a[i]==a[j])
{
// 出现相同的大写字母,数组整体前移。
for(int k=j;k<len-1;k++)
{
a[k]=a[k+1];
}
len=len-1;
j--;//j重新回到比较的位置,这里比较关键。因为整体前移了,还需要从刚才相同的地方开始比较。但是这次机会被使用掉了。
}
}
}
// 输出
if(flag==0)
printf("Not Found");
else{
for(int i=0;i<len;i++)
putchar(a[i]);
}
}