C语言:编程统计字符串s在字符串str中出现的次数

若输入字符串12 123 12345和23,则应输出2
若输入字符串33333和33,则应输出4
不要用指针的算法

以下是 C 语言实现统计字符串 s 在字符串 str 中出现的次数的程序:

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

// 统计字符串 s 在字符串 str 中出现的次数
int countSubstring(char str[], char s[]) {
int n = strlen(str); // 获取字符串 str 的长度
int m = strlen(s); // 获取字符串 s 的长度
int count = 0; // 计数器,初始化为 0

for (int i = 0; i <= n - m; i++) {
// 检查字符串 str 中以 i 开头、长度为 m 的子串是否等于 s
if (strncmp(str + i, s, m) == 0) {
count++; // 如果相等,则计数器加 1
}
}

return count;
}

int main() {
char str[100], s[100];
printf("请输入两个字符串:");
scanf("%s%s", str, s);

int count = countSubstring(str, s);
printf("%s 在 %s 中出现的次数是:%d\n", s, str, count);

return 0;
}
```

在上述代码中,我们首先定义了一个 `countSubstring()` 函数,该函数接受两个字符串作为参数,并返回字符串 `s` 在字符串 `str` 中出现的次数。在函数内部,我们使用一个循环依次检查 `str` 中每个长度为 `m` 的子串是否等于 `s`,如果相等,则计数器加 1。需要注意的是,在比较子串是否相等时,我们使用了 `strncmp()` 函数,它可以指定要比较的字符数,避免了因为字符串长度不同而导致的错误。

在 `main()` 函数中,我们首先使用 `scanf()` 函数获取用户输入的两个字符串,并将其保存到字符数组 `str` 和 `s` 中。然后,我们调用 `countSubstring()` 函数,并传入两个字符串作为参数,以获取字符串 `s` 在字符串 `str` 中出现的次数。最后,我们输出结果到控制台中。

需要注意的是,在实际应用中,可能需要对用户输入进行验证和处理,以确保程序的健壮性和安全性。另外,也可以使用其他方法(如标准库函数)来实现统计字符串出现次数的算法。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-10-23
#include <stdio.h>

int main()
{
char a[100], b[100];
int i=0, j=0, n=0;
gets(a);
gets(b);

while(a[j]!=0)
{
while((a[j+i]==b[i])&&b[i]!=0)
i++;

if(b[i]==0) n++;

i=0;
j++;

}
printf("%d", n);
}追问

为什么是j+1

追答

一位一位的往后比啊... 第一次比较从第一个开始 第二次从第二个开始啊..

追问

不好意思,看错了

本回答被提问者采纳
第2个回答  2012-06-06
for(i=1;;i++)
{
n=0;
for(j=i,k=1;;j++,k++)
{
if(s[k]=0) break;
if(str[j]=0) break;
if(str[j]<>s[k]) break;
}
if(s[k]=0) n=n+1;
}
相似回答