我们老师的话说就是,你学长睡了四年的床板子你不收拾收拾就往上躺着睡觉吗???一定要记得用到计数变量时首先要赋初值0或者其他,按题目要求来。
用
输入样例 1:
Hello!
are you there?
wantta chi1 huo3 guo1?
that's so li hai le
our story begins from chi1 huo3 guo1 le
.
输出样例 1:
5
3 2
输入样例 2:
Hello!
are you there?
wantta qi huo3 guo1 chi1huo3guo1?
that's so li hai le
our story begins from ci1 huo4 guo2 le
.
输出样例 2:
5
-_-#
用到的知识在链接里:字符串知识1
用到函数strstr,strncmp
char t[] = "chi1 huo3 guo1";
char s[85];
int tt = 0;//记录发了几条
int st=-1;//记录第一次出现的位置
int cnt = 0;//记录出现了多少次
if(strlen(s) >= 14)//因为要对比的长度只有14,必需要比14长才有可能包含
{
for(int i = 0; i <= strlen(s) - 14; i ++){
//以输入的语句为基准,从下标0开始寻找
if(0 == strncmp(&s[i],&t[0],14))//意思是从si和t0开始向后比较14个字符,若全部相同,则返回0
{
if(st == -1){
st = tt;
}
cnt++;
break;
}
}
}
}
代码:
#include<stdio.h>
#include<string.h>
#include<math.h>int main()
{char t[] = "chi1 huo3 guo1";char s[85];int tt = 0;//记录发了几条int st=-1;//记录第一次出现的位置int cnt = 0;//记录出现了多少次while(1){gets(s);//输入的语句中有空格,要用gets// printf("$$$%s\n",s);if(s[0] == '.' && strlen(s) == 1)//如果只有一个符号 . ,跳出whilebreak;tt ++;if(strlen(s) >= 14)//因为要对比的长度只有14,必需要比14长才有可能包含{for(int i = 0; i <= strlen(s) - 14; i ++){//以输入的语句为基准,从下标0开始寻找if(0 == strncmp(&s[i],&t[0],14))//意思是从si和t0开始向后比较14个字符,若全部相同,则返回0{if(st == -1){st = tt;}cnt++;break;}}}}printf("%d\n",tt);if(st == -1)//如果没更新过st,也就是没有出现字符串"chi1 huo3 guo1",{printf("-_-#");}else{printf("%d %d",st,cnt);}return 0;
}