使用C语言输入一个无空格字符串和一个长度为2的子串,求该子串在该字符串中出现的次数,如果查找子串是相同的2个字符,那么记过次数的字母不再计入。
时间: 2024-03-10 13:49:53 浏览: 56
c语言文章编辑
好的,我明白了你的问题。下面是使用C语言解决该问题的代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
char substr[3];
int count = 0;
int len;
printf("请输入字符串:");
scanf("%s", str);
printf("请输入子串:");
scanf("%s", substr);
len = strlen(substr);
for (int i = 0; i < strlen(str) - len + 1; i++) {
int flag = 0;
for (int j = 0; j < len; j++) {
if (str[i+j] != substr[j]) {
flag = 1;
break;
}
}
if (flag == 0) {
count++;
for (int j = i; j < i+len; j++) {
if (substr[0] != substr[1] || str[j] != substr[0]) {
str[j] = '*'; // 标记已匹配过的字母
}
}
}
}
printf("子串在字符串中出现的次数为:%d\n", count);
return 0;
}
```
该程序首先输入一个字符串和一个子串,然后遍历整个字符串,查找子串出现的次数。在匹配子串时,如果子串中的两个字符相同,则只计算第一次匹配时的出现次数。为了避免重复计数,程序使用了一个标记为已匹配过的字母。
阅读全文