用C语言编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数

 我来答
风若远去何人留
2015-12-22 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450134
专业C/C++软件开发

向TA提问 私信TA
展开全部

1 传入两个字符串作为参数。

2 对源字符串进行遍历。

3 逐个判断字符串是否为字串,如是,则累加。

4 返回结果。

代码:

int calc_sub(char *s, char *p)
{
    int r = 0;
    while(*s)
    {
        if(p[0] == s[0] && p[1] == s[1]) r++;//由于限定p只有2个字符,所以直接比较即可。
        s++;
    }
    
    return r;
}
匿名用户
2008-01-02
展开全部
用标准库函数实现:
//输入一个字符串(保存在数组b中),查找字符串a(*a="ab")出现的次数,将出现次数保存到c中
//---------------------------------------------------------------------------

#include <stdio.h>
#include <string.h>

int main(int argc, char* argv[])
{
char b[80];
char *p=b,*a="ab",*s;
int c=0;
gets(b);
do{
if ((s=strstr(p,a)))
c++;
p=(s+2);
}while (s) ;
printf("%d",c);

return 0;
}
//---------------------------------------------------------------------------

不用库函数

#include <stdio.h>

int strc(const char *a,const char *b)//统计在a中b出现的次数
{
int c=0;
const char *s,*p,*ts;
p=a,ts=b;
do
{
//if (*p*(*(p+1))==0) break;
if (*p==*ts&&*(p+1)==*(ts+1)) c++;
p+=2; //b的长度为2
}
while (*p&&*(p+1));
return c;
}

int main(void)
{
char *b="ab";
char a[80];
scanf("%s",a);
puts(a);
printf("%d",strc(a,b));
return 0;
}

参考资料: 测试环境 loongson-2E + Debian linux + gcc

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
朱19910718
2012-09-17
知道答主
回答量:4
采纳率:0%
帮助的人:6282
展开全部
# include <stdio.h>
# include <string.h>
void main ()
{
char *a="ab",b[20],*p=a,*q=b,*r;
int n=0;
gets (b);
while (*q)
{
r=q;
p=a;
while (*p)
{
if (*p==*r)
{
p++;r++;
}
else
break;
}
if (*p=='\0')
n++;
q++;
}
printf ("出现的次数为%d\n",n);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式