2025 年是蛇年,大家都在用“蛇”造好玩的谐音梗,比如“蛇我其谁,年年有为”,还有略转音的如“蛇全蛇美”、“蛇来运转”等…… 喜欢编程的你也想造梗,于是直接写个程序,从一万句话里把带了汉语拼音 she
和 shi
的句子都自动挑出来备选。
输入格式:
输入第一行给出正整数 n(≤10^4),随后 n 行,每行给出一句话,即长度不超过 10^3 个字符、由英文字母和空格组成的字符串,以回车结束。
输出格式:
按照输入的顺序扫描每句话,如果句子中带有 she
或是 shi
(不区分大小写),则在一行中原样输出这句话。题目保证至少有一句输出。
输入样例:
4
she wo qi shui nian nian you wei
zhe ju hua li mei you xie yin zi
shi quan shi mei
SHILaiYunZhuan
输出样例:
she wo qi shui nian nian you wei
shi quan shi mei
SHILaiYunZhuan
注意样例输出的第 2 句末尾有空格,必须原样输出。
代码长度限制
16 KB
Java (javac)
时间限制
1000 ms
内存限制
256 MB
其他编译器
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
思路:注意到题目中说“如果句子中带有 she
或是 shi
”,she和shi的共同点是前两个字母是sh,可以通过判断字符串中是否有连续的三个字母为“sh”+“e” or “i”(记得包含大小写)
从这方面破题的话个人在写这道题的时候一开始用了strstr函数(现在看来非常之蠢),后来用指针写才对。
#include <stdio.h>
int main(){
int n;
scanf("%d\n",&n);
char c[1001],*p;
while (n--){
gets(c);
for (p=c;*(p+2);p++){//*(p+2)是为了定位第三个字符在字符串长度范围内
if ((*p=='s'||*p=='S')&&(*(p+1)=='h'||*(p+1)=='H')&&(*(p+2)=='i'||*(p+2)=='I'||*(p+2)=='E'||*(p+2)=='e')){
puts(c);
break;
}
}
}
}
如有错误,敬请指出