对于蓝桥杯的字符问题,我们大致可以分为两类,求特殊的字符,求字符数。
不论上述那种问题,我们首先要对字符进行一个输入
这里我提供两种方式
//第一种是用scanf语句
char a[100001];
scanf("%s",a);
//第二种是gets语句
char a[1000001];
gets(a);
在大部分字符题中,都涉及到有关字符串的计数问题,即统计输入字符串的数目
在这里我提供如下解法,求字符串的数目
//求字符串数目的函数,可以记下来
#include<stdio.h>
int main()
{
char a[10001];
scanf("%s",a);
int i,sum=0;
for(i=0;a[i]!='\0';i++) //核心代码,注意观看
{
sum++;
}
printf("%d",sum);
}
//c语言函数库中,其实包含了一些子涵数,其中包括求字符串的字数,我们可以直接调用
#include<stdio.h>
#include<string.h> //注意,在调用C语言函数的时候,要修改头文件,即添加调用函数的函数库
int main() //sting.h 内有大部分的有关字符的函数库。如:字符求和,字符复制,字符比较
{
char str[10001]={0};
gets(str); //将输入的字符串,赋值到str字符数组中
int len;
len=strlen(str); //调用strlen函数
printf("%d",len);
retrun 0;
}
经过了上面的了解,我们开始进行实战演练
例:
问题描述
输入一个字符串,请判断这个字符串是否正好是 lanqiao
。在输入时如果只是大小写不同也算作相同。
输入格式
输入一行包含一个字符串。
输出格式
如果是 lanqiao
,输出全小写的字符串 yes
,否则输出全小写的字符串 no
。
样例输入
LanQiao
样例输出
yes
样例输入
QiaoLan
样例输出
no
评测用例规模与约定
对于所有评测用例,输入的字符串由大写或小写英文字母组成,长度至少为 11 个字符,不超过 2020 个字符。
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
#include<stdio.h>
#include<string.h>
int main()
{
char a[100001]={0};
char b[7]={'l','a','n','q','i','a','o'};
char c[7]={'L','A','N','Q','I','A','O'};
gets(a);
int len=0,i,sum=0;
len=strlen(a);
if(len!=7)
{
printf("no");
}
else
{
for(i=0;i<=6;i++)
{
if(a[i]==b[i]||a[i]==c[i])
{
sum++;
}
else
{
printf("no");
break;
}
}
if(sum==7)
{
printf("yes");
}
}
return 0;
}
接下来我们一起来看下面这到题
题目描述
小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。
现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。
输入描述
输入一行包含一个单词,单词只由小写英文字母组成。
对于所有的评测用例,输入的单词长度不超过 1000。
输出描述
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。
第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
输入输出样例
示例 1
输入
lanqiao
输出
a
2
示例 2
输入
longlonglongistoolong
输出
o
6
运行限制
- 最大运行时间:1s
- 最大运行
- 内存: 256M
#include<stdio.h>
int main()
{
char a[10001]={0};
char b[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int c[26]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
scanf("%s",a);
int i,j;
for(i=0;a[i]!='\0';i++)
{
for(j=0;j<26;j++)
if(a[i]==b[j])
{
c[j]++;
}
}
int max=0,k=0;
for(j=0;j<26;j++)
{
if(max<c[j])
{
max=c[j];
k=j;
}
}
printf("%c",b[k]);
printf("%d",max);
return 0;
}
希望可以帮助到大家,大家蓝桥杯加油