下列程序的功能是:统计字符串substr在字符串str中出现的次数。例如,若字符串str为aaas bkaas,子串substr为aas,应输出sum=2。请改正程序中的错误,使它能得出正确的结果,将错误所在行的正确写法填写在指定位置。注意:不得增行或删行,也不得更改程序的结构。 #include <stdio.h> #include <string.h> void main( ) { char str[80],substr[80]; int i,k,sum=0; printf("Input a string:"); gets(str); printf("Input a substring:"); gets(substr); for(i=0;str[i];i++) { for(k=0,substr[k]==str[i+k],k++) /* error4 */ if(substr[k+1]= '\0') /* error5 */ { sum++; break; } } printf("sum=%d\n",sum); }
时间: 2023-12-03 20:42:25 浏览: 136
```
#include <stdio.h>
#include <string.h>
void main( ) {
char str[80],substr[80];
int i,k,sum=0;
printf("Input a string:");
gets(str);
printf("Input a substring:");
gets(substr);
for(i=0;str[i];i++) {
for(k=0;substr[k] && substr[k]==str[i+k];k++) /* error4 */
if(substr[k+1]== '\0') /* error5 */
{
sum++;
break;
}
}
printf("sum=%d\n",sum);
}
```
错误4:应该是substr[k] && substr[k]==str[i+k],即子串substr[k]不为空且子串的第k个字符等于主串中对应位置的字符。
错误5:应该是substr[k+1]=='\0',即子串已经匹配到了最后一个字符,即子串已经匹配完了。
相关问题
下列给定程序函数fun的功能是:统计子字符串substr在字符串str中出现的次数。例如,若字符串aaas lkaaas,子字符串为as,则应输出2。
函数`fun`的主要功能是通过遍历字符串`str`,查找子字符串`substr`在`str`中出现的位置,并计算子字符串出现的总次数。它通常会采用循环结构,每次搜索子字符串开始位置,如果找到匹配的部分,计数器加一,然后继续搜索直到字符串结束。这个过程可能会用到字符串处理函数如`find()`或`indexOf()`来定位子字符串。
下面是一个简单的伪代码示例:
```python
def fun(str, substr):
count = 0
start = 0
while True:
index = str.find(substr, start)
if index == -1: # 如果找不到子串,返回当前计数
return count
count += 1 # 找到子串,计数加一
start = index + 1 # 更新搜索起始位置,跳过已找到的部分
# 示例:
str = "aaas lkaaas"
substr = "as"
result = fun(str, substr)
print("子字符串", substr, "在", str, "中出现了", result, "次")
```
阅读全文