问答题
函数fun()的功能是:从s所指字符串中,找出与t所指字符串相同的子串的个数作为函数值返回。例如,当s所指字符串中的内容为”abcdabfab”,t所指字符串的内容为”ab”,则函数返回整数3。 请改正程序中的错误,使它能得出正确的结果。 #include <stdio.h> #include <string.h> int fun(char *s,char *t) int n;char *p,*r; n=0; while(*s) p=s;r=t; while(*r) if(*r==*p) /**********found**********/ r++;p++ else break; /**********found**********/ if(r=='/0') n++; s++; return n; main() char s[100],t[100];int m; printf("/nPlease enter string S:");scanf("%s",s); printf("/nPlease enter substring t:");scanf("%s",t); m=fun(s,t); printf("/nThe result is:m=%d/n",m);
【正确答案】 (1)r++;p++; (2)if(*r=='/0')
【答案解析】 [解析] ①该题中函数的功能是查找字符串中某子串的个数。其中,s指向主串,r指向子串。外循环中移动指针s,依次指向字符串中的每个字符。内循环中,判断r所指字符串与p所指字符开始的串是否完全匹配;若不能匹配,由break退出循环;若r指向串结束标志,退出循环,则表示匹配。 ②从己给定源程序的main()主函数开始入手,从键盘获得输入的字符串s,t,然后通过“m=fun(s,c);”语句调用fun()函数。 ①C语言中,语句应该以“;”结束。在第二个标识处,“p++”语句没有以“;”结束,因此第一个标识处应该是“r++;p++;”。 ②根据审题分析,要判断指针r是否指向串尾来结束内循环,而判断语句应该是“if(*r='/0')”。 [考点] 指针操作。
提交答案
关闭