
4个回答
展开全部
字符串数组小了1,题目是说字符串长度不超过100000,加上字符串最后的'\0',你声明c和s的时候忘了计算这个'\0'的长度了。
展开全部
首先,在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循环嵌套可以更简洁
do
{
scanf("%d",&n);
if(n > 10 || n < 1)
printf("n的数值不服请重新输入");
else
break;
}
while(1);
这样应该符合描述要求;
你这里的INT类型是什么机器上的int类型的数据长度是4个字节吗如果不是的话X,和Y的值无法存储
字符串最大的数据长度,有符号的int最大数值是32767
你的while循环嵌套写的有点乱可以用for循环嵌套可以更简洁
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在你的第二个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
}
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
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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换下就行了
{
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换下就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询