字符串和日期
字符串中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;
}