PTA 实验7-5 输出大写英文字母(10 分)

PTA 实验7-5 输出大写英文字母(10分)

题目

本题要求编写程序,顺序输出给定字符串中所出现过的大写英文字母,每个字母只输出一遍;若无大写英文字母则输出“Not Found”。

输入格式

输入为一个以回车结束的字符串(少于80个字符)。

输出格式:
按照输入的顺序在一行中输出所出现过的大写英文字母,每个字母只输出一遍。若无大写英文字母则输出“Not Found”。

输入样例1

FONTNAME and FILENAME

输出样例1

FONTAMEIL

输入样例2

fontname and filrname

输出样例2

Not Found


思路分析:

1.定义两个字符数组
第一个用于存储输入首先输入的字符串,将所有小写的字符全部删去
第二个用于存储筛选过后的字符串,该数组应全部为大写字符
2.去除重复的大写字符
运用到数组0.1标记方法,先将数组全部标记为0,当有重复的出现时,将重复的其中一个标记为1,最后输出标记为0的字符,就可以避免输出重复的字符了
3.考虑到全为小写字符是不存储到第二个字符数组的,所以用到相当于计数器的变量来实现;


代码+注释

#include
#include
int main()
{
	/*输入*/
	char a1[80];//未做处理的数组 
	char a2[80];//处理后的数组 
	gets(a1);
	/*遍历*/
	int k1 = strlen(a1);//计算a1的长度 
	int i;
	int k2 = 0;
	for(i=0; i<k1; i++){
		if(a1[i]>='A'&&a1[i]<='Z'){
			 a2[k2] = a1[i];
			 k2++;//用来计算a2数组的长度
		}
	}
	/*如果全为小写字母,那么a2数组不可能存储
	那么K2不可能自增,会等于0;*/ 
	if(k2 == 0){//如果全为小写的情况 
		printf("Not Found");
	}
	/*此时a2数组中全部都是大写字母*/ 
	/*用0,1标记区别重复*/
	/*双重循环来检验*/ 
	int m,j;
	for(i=0; i<k2; i++){
		m = 0;
		for(j=0; j<i; j++){
			if(a2[i] == a2[j]){
				m = 1;
			}
		}
		if(m == 0){
			printf("%c",a2[i]);
		}
	}
	return 0; 
}


PTA 实验7-5 输出大写英文字母(10 分)_第1张图片

你可能感兴趣的:(c语言,每周算法,c语言,开发语言,后端)