字符串训练赛

A题 大写单词

题目链接 https://nyoj.online/problem/CF-281A

大写第一个单词

#include 
char a[1050];

int main()
{
    scanf("%s",a);//字符串不需要取地址符
    if(a[0]>='a') a[0]-=('a'-'A');//转化为大写
    printf("%s",a);
    return 0;
}

B题 乘1000

题目链接 https://nyoj.online/problem/NYOJ-1610

这题用longlong存会爆数据, 得用字符串输出

#include 
char str[50];

int main()
{
    scanf("%s",str);
    printf("%s000",str);
    return 0;
}

C题 对不对

题目链接 https://nyoj.online/problem/CF-1703A

注意到很多同学直接打表写法(自己手动吧全部可能性写出来)粗心写错了

这题直接把字母转化成大写在判断最好

#include 
char str[50];

int main()
{
   	int _;
    scanf("%d",&_);
    while(_--)
    {
        scanf("%s",str);
        for(int i=0;i<3;i++)
            if(str[i]>='a') str[i]-=('a'-'A');
        if(strcmp("YES",str)==0) puts("YES");
        else puts("NO");
    }
    return 0;
}

D题 我真的想不起来标题了

题目链接 https://nyoj.online/problem/NYOJ-1612

使用%c的时候记得在输入前使用getchar()把换行符吃掉, 不然会让%c读取你的换行符

#include 
char str[150];
char cnt;
int n;

int main()
{
    scanf("%d%s",&n,str);
    getchar();//吃换行符
    scanf("%c",&cnt);
    for(int i=0;i

E题 翻转吧字符串。

题目链接 https://nyoj.online/problem/NYOJ-1613

用for反着遍历输出即可

#include 
char str[150];
int n;

int main()
{
    scanf("%d%s",&n,str);
    for(int i=n-1;i>=0;i--)
        printf("%c",str[i]);
    return 0;
}

F题 回文串

题目链接 https://nyoj.online/problem/NYOJ-1614

利用了计算机除法向下取整的机制(忽略小数位)使奇偶长度字符串处理一致, 之后判断是否相等, 使用flag记录回文即可

#include 
char str[150];
int n,flag;//全局变量在堆中定义, 自动初始化为0

int main()
{
    scanf("%d%s",&n,str);
    for(int i=0;i

G题 lklklk = k

题目链接 https://nyoj.online/problem/NYOJ-1615

使用了哈希表的思想, hash[ str[i] ]记录了str[i]这个字母出现了几次, 最后使i从'a'到'z'遍历搜索最大值, 输出即可

#include 
char str[150];
int n,hash[150],mmax,ans;

int main()
{
    scanf("%d%s",&n,str);
    for(int i=0;i

H题 快来教教why学长用9键!

题目链接 https://nyoj.online/problem/NYOJ-1616

这题巧用switch打表会比if-else语句简便很多

#include 
#include 
char a[50];

int main()
{
    scanf("%s",a);
    int i=0;
    while(i

I题 输出亲朋字符串

题目链接 https://nyoj.online/problem/NYOJ-1608

这题注意输入是有空格的, 这题的数据空格也必须要被处理, 只有使用gets才能读入空格

c++中是使用fgets

#include 
#include 
char str[150];
int n;

int main()
{
    gets(str);//c++中为fgets
    n=strlen(str);
    for(int i=0;i

J题 rap序列(防ak?)

题目链接 https://nyoj.online/problem/NYOJ-1611

这题并不是简简单单的找有多少个r多少个a和p, 而是寻找有多少个rap组合

题解见注释

#include 
char str[150];
int n,r,ra,rap;

int main()
{
    scanf("%d%s",&n,str);
    for(int i=0;i

除此之外还可以三重循环暴力查找, 这题数据不大, 完全能暴力

#include 

int main()
{
	int n,cnt=0;
    char in[1000];
    scanf("%d%s",&n,in);
    int len=strlen(in);
    for(int i=0;i

你可能感兴趣的:(招新赛,c++,蓝桥杯,算法)