下列给定程序中,函数fun()的功能是:统计字符串substr在字符串srt中出现的次数。例如,若字符串为aaas 1 kaaas,子字符串为as,则应输出2。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:include <stdio.h>fun (char *str, char *substr){int i, j, k, num=0;/*************found**************/for (i=0, str [i

题目

下列给定程序中,函数fun()的功能是:统计字符串substr在字符串srt中出现的次数。例如,若字符串为aaas 1 kaaas,子字符串为as,则应输出2。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

include <stdio.h>

fun (char *str, char *substr)

{int i, j, k, num=0;

/*************found**************/

for (i=0, str [i], i++)

for (j=i, k=O; substr [k]==str [ j ]; k++, j ++ )

if (substr [k+l]==' \0')

{num++;

break;

}

return num;

}

main ( )

{ char str[80],substr[80];

printf("Input a string: ");

gets (str);

printf("Input a sbustring: ");

gets (substr);

printf ("%d\n ", fun (str, substr) );


相似考题
参考答案和解析
正确答案:错误:for(i=0srt[i]i++) 正确:for(i=0;str[i];i++)
错误:for(i=0,srt[i],i++) 正确:for(i=0;str[i];i++) 解析:从字符串s中找出子字符串的方法是:从第1个字符开始,对字符串进行遍历;若s串的当前字符等于t串的第1个字符,两字符串的指针自动加1,继续比较下一个字符;若比较至字符串的结尾,则跳出循环;若s串的字符和t串的字符不对应相同,则继续对s串的下一个字符进行处理。
更多“下列给定程序中,函数fun()的功能是:统计字符串substr在字符串srt中出现的次数。例如,若字符串为aa ”相关问题
  • 第1题:

    编写函数fun,其功能是:求ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符为1,则输出3。

    注意:部分源程序在文件PROCl.C中。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填人你编写的若干语句。


    正确答案:
    intfun(char*ss,charc)inti=0;for(;*ss!=’\0‘;ss++)if(}ss==ci++/*求出*所指字符串中指定字符的个数*/returni;【考点分析】本题考查:for循环语句遍历字符串,并通过if条件语句,判断字符串是否结束。【解题思路】从字符串中查找指定字符,需要使用循环判断结构,循环语句用来遍历字符串,循环条件为字符串没有结束,即当前字符不是‘\0’,判断语句用来判断当前字符是否为指定字符。最后返回指定字符的个数。

  • 第2题:

    编写一个函数findStr(char*str,char*substr),该函数统计一个长度为2的子字符串substr在另一个字符串str中出现的次数,该次数作为函数值返回。例如,假定输入的字符串为”asd asasdfg asd as zx67 asdmklo”,子字符串为”as”,函数返回值是6。 函数ReadWrite实现从文件in.dat中读取两个字符串,并调用函数findStr,最后把结果输出到文件out.dat中。 注意:部分源程序存在test.c文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数findStr的花括号中 填入你编写的若干语句。


    正确答案:
    【审题关键句】统计一个长度为2的子字符串在另一个字符串中出现的次数。
    【解题思路】
    ①定义字符指针p,q,并且q指向字符串str。定义计数整型变量cnt,设置其值等于0。
    ②在while循环中调用C语言的字符串库函数strstr,返回子字符串substr在字符串q第一次出现的位置,赋给变量P。用if语句判断,如果p的值为空,则说明在字符串str没有找到子字符串,退出循环。否则,变量cnt加1,再把P的值加2(因为子字符串substr的长度为2)赋给变量q,执行下一次循环。直到字符串中不存在子字符串时,退出循环结束。
    ③最后,返回子字符串substr在字符串str中出现的次数。
    【参考答案】

  • 第3题:

    给定程序MODll.C中函数fun的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。

    例如,若字符串为abcd,则应输出:dcba。

    请改正程序中的错误,使它能计算出正确的结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!


    正确答案:(1)void fun(char *a)(2)printf("%c" *a)
    (1)void fun(char *a)(2)printf("%c", *a), 解析:本题中函数的功能是将字符串中的内容逆序。题干中给出的fun函数通过递归调用自身,实现字符串的逆序。

  • 第4题:

    给定程序MODll.C中函数fun的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排序后输出。

    例如,若输入:edcba,则应输出:abcde。

    请改正程序中的错误,使它能统计出正确的结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!


    正确答案:(1)for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)(2)if(t[j]>t[j+1])
    (1)for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)(2)if(t[j]>t[j+1]) 解析:本题中函数的功能是读入一个字符串(长度20),将该字符串中的所有字符按ASCII码升序排序后输出。本题思路是利用字符串长度作为循环的控制条件,然后在循环过程中将字符按.ASCII码排序。

  • 第5题:

    下列给定程序中函数fun的功能是:统计substr所指的字符串在str所指的字符串中出现的次数。 例如,若字符串为aaas lkaaas,子字符串为as;则应输出2。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改的程序的结构!


    正确答案:
    【参考答案】

    【考点分析】
    本题考查:for循环语句的格式,for循环语句使用最为灵活,其一般形式为:for(表达式1;表达式2;表达式3),注意表达式之间使用”;”相隔;if条件语句的格式,其中if关键字需要区别大小写,这里不能混淆使用。关键字是由C语言规定的具有特定意义的字符串,也称为保留字。用户定义的标识符不应与关键字相同,并且关键字应小写。
    【解题思路】
    先看循环条件for(i=0,str[i],i++),不难发现此处for循环语句的格式有误,其中表达式之间应以”;”相隔;同时很容易发现if条件语句处的关键字书写错误。