二级C语言 程序改错题

高仿模拟练习,找到 found 标记处的错误并改正,答案点击按钮展开

174程序改错题:求子串个数

函数fun的功能是:从s所指字符串中,找出与t 所指字符串相同的子串的个数作为函数值返回。 例如,当s所指字符串中的内容为:“abcdabfab”,t所指字符串的 内容为:“ab”,则函数返回整数3。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的 结构!

#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;
 }
 void main()
 {
	 char s[100],t[100];
	 int m;
	 printf("\nPlease enter a string S:");
	 scanf("%s", s);
	 printf("\nPlease enter a substring t:");
	 scanf("%s", t);
	 m = fun(s,t);
	 printf("\nThe result is:  m = %d\n", m);
 }
参考答案
1. p++;
2. *r == '\0'
解析

第一处少写了分号,第二处r是个指针,取值应用*r。

← 上一题 下一题 →