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 次。