c语言编程:输入一个无空格字符串和一个长度为2的子串,求该子串在该字符串中出现的次数,如果查找子串是相同的2个字符,那么记过次数的字母不再计入。 例如:输入abacaacdaaacd,再输入aa,结果输出2
时间: 2024-03-11 21:50:09 浏览: 93
C语言编程-编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数;
5星 · 资源好评率100%
好的,下面是一个C语言的实现,可以解决你提出的问题:
```c
#include <stdio.h>
#include <string.h>
int count_substring(char *string, char *sub) {
if (strlen(sub) != 2) {
return -1; // 如果子串长度不为2,返回-1表示无法计算
}
int count = 0;
char last_char = '\0'; // 用于记录上一次匹配到的字符
for (int i = 0; i < strlen(string) - 1; i++) {
if (strncmp(string+i, sub, 2) == 0) {
if (last_char != '\0' && last_char != string[i]) {
count++;
}
last_char = string[i];
}
}
return count;
}
int main() {
char string[100];
char sub[3];
printf("请输入一个字符串:");
scanf("%s", string);
printf("请输入一个长度为2的子串:");
scanf("%s", sub);
int result = count_substring(string, sub);
if (result == -1) {
printf("无法计算\n");
} else {
printf("子串在原字符串中出现的次数为:%d\n", result);
}
return 0;
}
```
代码中的`count_substring`函数接收两个参数,分别为原字符串和子串。如果子串长度不为2,则返回-1表示无法计算。否则,函数会遍历原字符串,每次取出长度为2的子串进行匹配。如果匹配到了子串,就判断上一次匹配到的字符是否与当前字符相同,如果不相同则计数器加1。最后返回计数器的值就是子串在原字符串中出现的次数。
在`main`函数中,首先让用户输入一个字符串和一个子串,然后调用`count_substring`函数计算子串在原字符串中出现的次数,并输出结果。
阅读全文