麻烦C语言高手看看这道题我做的差一点就通过了,但实在找不出错误了,麻烦找下错误,谢谢!

我的解答:... 我的解答: 展开
 我来答
斛耘0iV
2012-11-29 · 超过10用户采纳过TA的回答
知道答主
回答量:34
采纳率:100%
帮助的人:20.6万
展开全部
字符串数组小了1,题目是说字符串长度不超过100000,加上字符串最后的'\0',你声明c和s的时候忘了计算这个'\0'的长度了。
fddpx
2012-11-29 · TA获得超过171个赞
知道答主
回答量:51
采纳率:0%
帮助的人:42.1万
展开全部
首先,在for循环之前是不是要添加一个WHILE循环判断n的数值,如果n大于10 则重新输入

do
{
scanf("%d",&n);
if(n > 10 || n < 1)
printf("n的数值不服请重新输入");
else
break;
}
while(1);
这样应该符合描述要求;
你这里的INT类型是什么机器上的int类型的数据长度是4个字节吗如果不是的话X,和Y的值无法存储
字符串最大的数据长度,有符号的int最大数值是32767

你的while循环嵌套写的有点乱可以用for循环嵌套可以更简洁
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
francesmen
2012-11-29
知道答主
回答量:8
采纳率:0%
帮助的人:3.9万
展开全部
在你的第二个while语句中,可能内存访问越界

int nIsMatch = 1;
while(k < y - 1 && j < x - 1)
{
if(c[j+1] == s[k+1])
{
j++;
k++;
}
else
{
nIsMatch = 0;
break; // 直接中断循环,没必要继续判断
}
}

if (0 != nIsMatch )
{
num++;
}
else
{
j = p
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Direct3D月夜风
2012-11-29
知道答主
回答量:15
采纳率:0%
帮助的人:5万
展开全部
int search(char* desc,char* src)
{
int indexS = 0;
int temp = 0;
while(*desc != '\0')
{
if(*desc == src[indexS])
{
desc++;
indexS++;
if(indexS == strlen(src))
{
temp++;
indexS = 0;
}
}
else
{
desc++;
indexS = 0;
}
}
return temp;
}

int main(int argc,char*argv[])
{
int a;
int arr[100];
char str1[1000];
char str2[1000];
cout<<"请输入要测试几组数据:";
cin>>a;
for(int i=0;i<a;i++)
{
cout<<"请输入第"<<i<<"组要比对的目标字符串:";
cin>>str1;
cout<<"请输入要比对的第"<<i<<"组源字符串:";
cin>>str2;
arr[i] = search(str1,str2);
}
for(int i=0;i<a;i++)
{
cout<<arr[i]<<endl;
}
getchar();
return 0;
}

给你写了一个。。完全手写 谢谢采纳,没注意你是用c语言。。把cin和cout换下就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式