发布时间:2024-10-06 09:01
题目:
本题要求编写程序,顺序输出给定字符串中所出现过的大写英文字母,每个字母只输出一遍;若无大写英文字母则输出“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;
}
React + Typescript领域初学者的常见问题和技巧
python字典中添加、修改数据、删除数据和遍历数据、enumerate函数和公共方法
AR独角兽的死亡教训:融资3亿美元后,成投资人提线木偶,营销大于产品技术...
【大型电商项目开发】商城业务-首页搭建-thymeleaf模板引擎-36
【直播课】腾讯课堂------基于GO语言的云原生工具二次开发实战训练营-------Kubernetes Operator开发
python神经网络库识别验证码_基于TensorFlow 使用卷积神经网络识别字符型图片验证码...