aq187032 2023-03-03 17:23 采纳率: 100%
浏览 44
已结题

关于#RuntimeerrorNZEC#的问题,如何解决?

题目要求:给定一个字符串 A 和一个字符串 B,求 B 在 A 中的出现次数。A 和 B 中的字符均为英语大写字母或小写字母。A 中不同位置出现的 B 可重叠。
输入格式:
输入共两行,分别是字符串 A 和字符串 B。
输出格式:
输出一个整数,表示 B 在 A 中的出现次数。
样例

img

数据范围与提示 1<=A,B的长度≤10^6,
,A,B仅包含大小写字母。

遇到问题:我在这OJ系统上面运行时出现的Runtime error(NZEC),这是语法问题吗?
编译器:C++(clang7.0.1)

img


#include<stdio.h>
#include<string.h>
int main()
{
 char a1[1000],b1[1000];
 int count=0;
    scanf("%s%s",a1,b1);
    for(int i=0;i<strlen(a1);i++)
    {
        if(a1[i]==b1[0])
        {
            int k=i+1,j;
            for(j=1;j<strlen(b1);j++,k++)
            {
                if(a1[k]!=b1[j])
                    break;
            }
            if(j==strlen(b1))
             count++;
        }
    }
    printf("%d\n",count);
    return 0;
}
  • 写回答

2条回答 默认 最新

  • 元气少女缘结神 2023-03-04 00:03
    关注

    因为a1没有初始化,所以超出zyzyzyz的部分都是无意义的,
    当按程序a1运行到最后一个z时,你k=i+1,k=i+2 访问的是无意义的内容/内存

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月10日
  • 创建了问题 3月3日