C语言练习题-C语言练习题实例96
题目:编写一个程序,计算一个字符串中指定子串出现的次数。
程序分析:这个程序中,我们使用两个字符串 T 和 P,其中 T 是母串,P 是子串。我们要计算子串 P 在母串 T 中出现的次数。
实例
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int i, j, k, TLen, PLen, count = 0;
char T[50], P[10];
printf("请输入两个字符串,以回车隔开,母串在前,子串在后:\n");
gets(T);
gets(P);
TLen = strlen(T);
PLen = strlen(P);
for (i = 0; i <= TLen - PLen; i++)
{
for (j = 0, k = i; j < PLen && P[j] == T[k]; j++, k++)
;
if (j == PLen)
count++;
}
printf("%d\n", count);
return 0;
}在这个程序中,我们首先声明了一些变量,包括 i、j、k、TLen、PLen 和 count。然后,我们使用 gets() 函数分别从用户输入获取母串 T 和子串 P。
接下来,我们使用 strlen() 函数获取母串和子串的长度,分别存储在变量 TLen 和 PLen 中。
然后,我们使用两个嵌套的循环遍历母串 T 的每个可能的起始位置,并逐个比较子串 P 和母串 T 对应位置的字符。如果子串完全匹配,则将计数器 count 加一。
最后,我们打印出子串出现的次数。
运行程序,输入示例中的字符串,输出结果为:
请输入两个字符串,以回车隔开,母串在前,子串在后:
abca
a
2这表示子串 "a" 在母串 "abca" 中出现了 2 次。