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

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

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

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

输入样例1:
FONTNAME and FILENAME

输出样例1:
FONTAMEIL

输入样例2:
fontname and filrname

输出样例2:
Not Found

#include<stdio.h>
#include<string.h>
#define N 85
//思路一:存储输入的字符串;找到所有大写字母;剔除所有相等的元素。此程序使用:思路一
//思路二:定义两个数组a[]  b[]  依次用a[]中的数组元素和b[]中的数组元素比较,如果是a[]是大写字母且
//        与b[]中的字母相等则不输出,否则输出a[]中的数组元素。

int main(void)
{
	int i, j, temp, flag, len1=0, len2=0, cnt=0;
	char ch;
	char str1[N];  //存储输入的字符串
	char str2[N];  //存储处理后的字符串

	ch = getchar();  //输入字符串
	for (i = 0; ch != '\n'; i++)
	{
		str1[i] = ch;
		len1++; //记录输入字符串的长度
		ch = getchar();
	}
	for (i = 0; i < len1; i++) //初步处理字符串,得到含有大写字母的字符数组str2
	{
		if (str1[i] >= 'A' && str1[i] <= 'Z')
		{
			str2[len2] = str1[i];  //经典:存储所有大写字母。设置计数器,只有发现大写字母时len2才进行加1 处理
			len2++;                //记录大写字母的长度
		}
	}
	for (i = 0; i < len2; i++) //双重循环,检测str2 中相等的元素,进行剔除
	{
		flag = 0;    //每次开始循环都更新flag
		for (j = 0; j < i; j++)
		{
			if (str2[i] == str2[j])
			{
				flag = 1;
			}
		}
		if (flag == 0)
		{
			printf("%c",str2[i]);
			cnt++;
		}
	}
	if (cnt == 0)
	{
		printf("Not Found");
	}

	return 0;
}

猜你喜欢

转载自blog.csdn.net/aa11224488/article/details/80207661
今日推荐