请问这道C语言题目错在哪
函数FUN的功能是,从S所指定的字符串中,找出子串T的个数作为函数的返回值。例如当S所指定的字符串内容是“ABCDABFABb“,T所指定的字符串的内容为”AB"时,函数...
函数FUN的功能是,从S所指定的字符串中,找出子串T的个数作为函数的返回值。例如当S所指定的字符串内容是“ABCDABFABb“,T所指定的字符串的内容为”AB"时,函数的返回值为3.
请改正函数FUN中的错误,使它能得出正确的结果。
注意:不要改动MAIN函数,不得增行或删行,也不得更改程序结构。
#include <conio.h>
#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) {r++;p++}
else break;
if(r=='\0') n++;
s++;
}
return n;
}
main()
{char s[100],t[100]; int m;
clrscr();
printf ("\nPlease enter string S:"); scanf ("%s",s);
printf ("\nPlease enter string t:"); scanf ("%s",t);
m=fun(s,t);
printf ("\nThe result is m: m=%d \n",m);
}
我不太明白 *r和*p 这都应该只能一个一个比,比如A和B比 怎么能AB和CD这样两个两个比呢 展开
请改正函数FUN中的错误,使它能得出正确的结果。
注意:不要改动MAIN函数,不得增行或删行,也不得更改程序结构。
#include <conio.h>
#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) {r++;p++}
else break;
if(r=='\0') n++;
s++;
}
return n;
}
main()
{char s[100],t[100]; int m;
clrscr();
printf ("\nPlease enter string S:"); scanf ("%s",s);
printf ("\nPlease enter string t:"); scanf ("%s",t);
m=fun(s,t);
printf ("\nThe result is m: m=%d \n",m);
}
我不太明白 *r和*p 这都应该只能一个一个比,比如A和B比 怎么能AB和CD这样两个两个比呢 展开
展开全部
你一定要说错的话,好像
if(*r==*p) {r++;p++}的p++后面应该有个分号,逻辑应该没什么错吧
你的补充,是一个一个比的,但是不是你说的那样比,比如要看是不是ab,是先比较a,如果结果是a,再比较a后面的是不是b,如果是b则一样,如果不是b则不一样,所以t多长都是可以的
if(*r==*p) {r++;p++}的p++后面应该有个分号,逻辑应该没什么错吧
你的补充,是一个一个比的,但是不是你说的那样比,比如要看是不是ab,是先比较a,如果结果是a,再比较a后面的是不是b,如果是b则一样,如果不是b则不一样,所以t多长都是可以的
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int fun (char *s,char *t)中有两个错误:
1.if(*r==*p) {r++;p++}中p++后要加一个分号';'。
2.if(r=='\0') n++中的r前就当加一个'*'号。
另:main()中最后应有个return 0;。
1.if(*r==*p) {r++;p++}中p++后要加一个分号';'。
2.if(r=='\0') n++中的r前就当加一个'*'号。
另:main()中最后应有个return 0;。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写的有些乱啊
错误有2处:
第一个:
if(*r==*p) {r++;p++} 改为 if(*r==*p) {r++;p++;}少了个分号;
第二个:
if(r=='\0') n++; 改为 if(*r=='\0') n++; r前要加*号;
这样就OK啦~
错误有2处:
第一个:
if(*r==*p) {r++;p++} 改为 if(*r==*p) {r++;p++;}少了个分号;
第二个:
if(r=='\0') n++; 改为 if(*r=='\0') n++; r前要加*号;
这样就OK啦~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
出了p++ 后面没有“;”以外。
还有 你的判断语句r=='\0' 出错了 。 当r结束时 最后面的是*r==‘\0' 不是指针等于结束符而是指针指向的内容等于结束符。
r和p 一个一个比较完后在从下一个字符在比较例如 aaab 中找aa 就会找两个
还有 你的判断语句r=='\0' 出错了 。 当r结束时 最后面的是*r==‘\0' 不是指针等于结束符而是指针指向的内容等于结束符。
r和p 一个一个比较完后在从下一个字符在比较例如 aaab 中找aa 就会找两个
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询