C语言:编程统计字符串s在字符串str中出现的次数
若输入字符串1212312345和23,则应输出2若输入字符串33333和33,则应输出4不要用指针的算法...
若输入字符串12 123 12345和23,则应输出2
若输入字符串33333和33,则应输出4
不要用指针的算法 展开
若输入字符串33333和33,则应输出4
不要用指针的算法 展开
3个回答
展开全部
以下是 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` 中出现的次数。最后,我们输出结果到控制台中。
需要注意的是,在实际应用中,可能需要对用户输入进行验证和处理,以确保程序的健壮性和安全性。另外,也可以使用其他方法(如标准库函数)来实现统计字符串出现次数的算法。
```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` 中出现的次数。最后,我们输出结果到控制台中。
需要注意的是,在实际应用中,可能需要对用户输入进行验证和处理,以确保程序的健壮性和安全性。另外,也可以使用其他方法(如标准库函数)来实现统计字符串出现次数的算法。
展开全部
#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);
}
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
追答
一位一位的往后比啊... 第一次比较从第一个开始 第二次从第二个开始啊..
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
{
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询