字符串和日期

字符串中A的数量

输入一个字符串,统计其中字符 A 的数量并且输出。

输入格式

输入共有一行,为一个不带空格的字符串(其中字符数不超过 100)。

输出格式

输出一行,包含一个整数,?为输入字符串中的 A 的数量。

样例输入1

AabdkeaoektA

样例输出1

2

样例输入2

sdaopjsapojr

样例输出2

0

#include<stdio.h>
#include<cstring>
char a[105];
int main()
{
    int len,cnt=0;
    scanf("%s",a);
    len=strlen(a);
    for (int i = 0; i < len; i++)
    {
        if (a[i]=='A')
        {
            cnt++;
        }
    }
    printf("%d",cnt);
    return 0;
}

最长的名字

小蒜的课外班上有 N 个同学,每个同学的名字长度都不一样。小蒜想知道班上谁的名字最长,你能不能帮他找出来呢?

输入格式

输入第一行为小蒜的同学数 N(0≤N≤100)。 接下来 N 行每行是一个同学的名字(中间没有空格)。

输出格式

输出一行,为名字最长的同学的名字。

样例输入1

3

Tom

Gaofei

Lobs

样例输出1

Gaofei

样例输入2

1 Jsknme

样例输出2

Jsknme

#include <stdio.h>
#include <cstring>
char a[105], ans[105];
int main()
{
    int n, len;
    int anslen = 0;
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        scanf("%s", a);
        len = strlen(a);
        if (len > anslen)
        {
            anslen = len;
            strcpy(ans, a);
        }
    }
    printf("%s", ans);
    return 0;
}

字符串

从键盘输入一个长度大于 10 的字符串,现要求:将字符串中的所有大小写字母都改写成该字母的下一个字母。如:最后一个小写字母 z 改写成字母 a;最后一个大写字母 Z 改写成 A,其他字符依照原有顺序不变。

输入格式

输入只有一行,包含 1 个任意的不带有空格的字符串(其长度在 10 到 1000 之间)。

输出格式

输出只有一行,即为满足条件的字符串。

样例输入

ABCDZ123abcdefz

样例输出

BCDEA123bcdefga

#include <stdio.h>
#include <cstring>
char s[1005];
int main()
{
    int len;
    scanf("%s", s);
    len = strlen(s);
    for (int i = 0; i < len; i++)
    {
        if (s[i] == 'z')
        {
            s[i] = 'a';
        }
        else if (s[i] == 'Z')
        {
            s[i] = 'A';
        }
        else if ((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z'))
        {
            s[i]++;
        }
    }
    printf("%s", s);
    return 0;
}

大数的奇偶性判断

从键盘输入一个位数可能最多达到 10000 的整数,判断它是否是一个偶数,如果是偶数则输出 YES 否则输出 NO。

注意:long long也存不下这么大的数字。

输入格式

输入只有一行,包含 1个正整数(其长度在 1 到 10000)。

输出格式

输出只有一行,如果是偶数则输出 YES 否则输出 NO。

样例输入

1231393713904

样例输出

YES

#include <stdio.h>
#include <cstring>
char a[10005];
int main()
{
    scanf("%s", a);
    int len = strlen(a);
    if ((a[len - 1] - '0') % 2 == 0)
    {
        printf("YES\n");
    }
    else
    {
        printf("NO\n");
    }

    return 0;
}

字符反转

输入一个字符串,然后把这个字符串反转输出。

输入格式

输入一行一个字符串,不包含空格。

输出格式

输出这个字符串的反转。

样例输入

1234567890

样例输出

0987654321

#include <stdio.h>
#include <cstring>
char a[10005];
int main()
{
    scanf("%s", a);
    int len = strlen(a);
    for (int i = len - 1; i >= 0; i--)
    {
        printf("%c", a[i]);
    }

    return 0;
}

最后一个单词

给定由大写,小写字母和空格组成的字符串,返回最后一个单词的长度。 如果输入中不存在单词,返回 0。

注意:

“单词”是指不包含空格符号的字符串

例如: 对于字符串"hello World"(不带引号), 那么返回的结果是 5;

对于字符串"abc abc "(不带引号),那么返回的结果就是 3。

输入格式

输入仅一行,为字符串 s(长度不超过 10000)。

输出格式

输出 s 中最后一个单词的长度。

样例输入1

Today is a nice day

样例输出1

3

样例输入2

The quick brown fox jumps over the lazy dog 样例输出2

3

#include <stdio.h>
#include <cstring>
char a[10005];
int main()
{
    while ((scanf("%s",a))!=EOF);
    int len=strlen(a);
    printf("%d\n",len);
    return 0;
}

蓝桥杯真题:十字图

本题是蓝桥杯往届真题。

https://blog.csdn.net/pack__pack/article/details/57089360

#include<stdio.h>
char s[150][150];
int main()
{
    int n;
    int x=0,y=0;
    scanf("%d",&n);
    for (int i = 0; i < 4*n+5; i++)
    {
        for (int j = 0; j < 4*n+5; j++)
        {
            s[i][j]='.';
        }
        
    }
    for (int i = 0; i < n+1; i++)
    {
        for (int j = y+2; j<=y+4*(n-i)+2; j++) //1
        {
            s[x][j]='$';
        }
        for(int j=x;j<=x+2;j++)  //2
        {
            s[j][y+2]='$';
        }
        for (int j = x; j<= x+2; j++)  //3
        {
            s[j][x+4*(n-i)+2]='$';
        }
        for(int j=y;j<=y+2;j++)      //4
        {
            s[x+2][j]='$';
        }
        for(int j=y+4*(n-i)+2;j<=y+4*(n-i)+4;j++)  //5
        {
            s[x+2][j]='$';
        }
        for(int j=x+2;j<=x+4*(n-i)+2;j++)  //6
        {
            s[j][y]='$';
        }
        for(int j=x+2;j<=x+4*(n-i)+2;j++) //7
        {
            s[j][y+4*(n-i)+4]='$';
        }
        for (int j = y+2; j<=y+4*(n-i)+2; j++) //8
        {
            s[x+4*(n-i)+4][j]='$';
        }
        for(int j=x+4*(n-i)+2;j<=x+4*(n-i)+4;j++)  //9
        {
            s[j][y+2]='$';
        }
        for(int j=x+4*(n-i)+2;j<=x+4*(n-i)+4;j++)  //10
        {
            s[j][y+4*(n-i)+2]='$';
        }
        for(int j=y;j<=y+2;j++)      //11
        {
            s[x+4*(n-i)+2][j]='$';
        }
        for(int j=y+4*(n-i)+2;j<=y+4*(n-i)+4;j++)  //12
        {
            s[x+4*(n-i)+2][j]='$';
        }
        x+=2;
        y+=2;
    }
    for (int i = 0; i < 4*n+5; i++)
    {
        printf("%s\n",s[i]);
    }
    
    return 0;
}

节假日

日历有 阳历(公历) 和 阴历(农历) 之分。每年都有法定节假日,这些分成三类——双休、阳历节假日、阴历节假日。

1.双休

周六和周日 2 天

2.阳历节假日

1)元旦:阳历每年 1 月 1 日,放假 1 天

2)劳动节:阳历每年 5 月 1 日,放假 1 天

3)国庆节:阳历每年 10 月 1 日,放假 3 天

4)圣诞节:阳历每年 12 月 25 日,放假 1 天 3.阴历节假日

1)春节:阴历每年 1 月 1 日,放假 3 天

2)清明节:阳历每年 4 月 4 - 6 日之间的某天,放假 1 天

3)端午节:阴历每年 5 月 5 日,放假 1 天

4)中秋节:阴历每年 8 月 15 日, 放假 1 天

当节假日和双休重合时,双休 不延后 也 不提前,保证节假日之间不会重合。现在给你某年的所有阴历节假日的 阳历 日期,以及当年的 1 月 1 日是星期几,请你计算出这一年(阳历 1 月 1 日到 12 月 31 日)放了多少天假(包括双休、阳历节假日和阴历节假日)。

输入格式

第一行输入年份y(1900<y≤2050)。

接下来 4 行,每行输入两个整数 m,d, 依次表示春节、清明节、端午节和中秋节的阳历日期。 最后一行一个整数表示当年 1 月 1 号是星期几(一周内的第几天,每周从星期一开始计数,即星期一为第一天)。

输出格式

输出一个整数,表示当年放假的天数。

样例输入

2017

1 28

4 4

5 30

10 4

7

样例输出

113

#include <stdio.h>
int day[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int mm[10] = {1, 5, 10, 10, 10, 12};
int dd[10] = {1, 1, 1, 2, 3, 25};
int nextday(int &m, int &d)
{
    if (d == day[m])
    {
        m++;
        d = 1;
    }
    else
    {
        d++;
    }
    return 0;
}
int main()
{
    int y, w, m, d, f, ans; //f春节
    m = 1;
    d = 1;
    ans = 0;
    f = 0;
    scanf("%d", &y);
    if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
    {
        day[2]++;
    }
    for (int i = 6; i < 10; i++)
    {
        scanf("%d %d", &mm[i], &dd[i]);
    }

    scanf("%d", &w);
    while (m != 13)
    {
        if (m == mm[6] && d == dd[6])
        {
            ans++;
            f = 2;
        }
        else if (f)
        {
            ans++;
            f--;
        }
        else if (w == 6 || w == 7)
        {
            ans++;
        }
        else
        {
            for (int i = 0; i < 10; i++)
            {
                if (m == mm[i] && d == dd[i])
                {
                    ans++;
                }
            }
        }
        nextday(m, d);
        if (w == 8)
        {
            w = 1;
        }
        w++;
    }
    printf("%d\n", ans);
    return 0;
}
posted @ 2020-02-23 12:46  凯在想peach  阅读(378)  评论(0编辑  收藏  举报