早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->软考中级 -->

●试题四 请补充函数fun(),该函数可以统计一个长度为n的字符串在另一个字符串中出现的次数。例如,

题目

●试题四

请补充函数fun(),该函数可以统计一个长度为n的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asd ascasdfg asd as asd mlosd,子字符串为asd,则应输出4。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

试题程序:

#include<stdio.h>

#include<string.h>

#include<conio.h>

int fun(char *str,char *substr)

{

int n;

char *p,*r;

(1) ;

while(*str)

{

p=str;

r=substr;

while(*r)

if( (2) )

{

r++;

p++;

}

else

break;

if( (3) )

n++;

str++;

}

return n;

}

main()

{

char str[81],substr[3];

int n;

clrscr();

printf("输入主字符串:");

gets(str);

printf("输入子字符串:");

gets(substr);

puts(str);

puts(substr);

n=fun(str,substr);

printf("n=%d\n",n);

}

参考答案
正确答案:

【答案】(1n=02*r==*p3*r==′\0

【解析】填空1:变量n用来记录子字符串在字符串中出现的次数,函数中对变量n进行了类型声明,但并没有进行初始化,所以此处对n初始化为0。填空2:进行比较时,如果子字符串的字符与字符串中的字符相同,则将两个字符串的指针都自加1,继续进行比较,否则跳出循环。填空3:如果此时指针r所指的字符为'0',则说明子字符串在字符串中出现了一次,将记录变量n1