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<stdio.h>
#include<string.h>
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; 
}


请添加图片描述

  • 67
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值