永发信息网

请大神改改我的代码,不知道为什么输出总是0

答案:2  悬赏:30  手机版
解决时间 2021-11-18 04:59
  • 提问者网友:人生佛魔见
  • 2021-11-17 09:16
请大神改改我的代码,不知道为什么输出总是0
最佳答案
  • 五星知识达人网友:刀戟声无边
  • 2021-11-17 09:50
这里你有两个地方定义了k,一个是在开始的地方,还有一个是循环的变量,这有点混乱啊。追问只是用了一下k,前后都是为了计数。。
大神有空帮我看看追答第二个循环中的k是局部变量,把for(int k = 0; k然后第一层循环j++之后重新初始化一下i,里面的if判断加上i修改后代码如下,修改位置代码中注释给出:
#include
#include
char a[10000],b[1000000];
int main()
{
    int t;
    int k=0;
    int v[100];
    scanf("%d",&t);
    while(t--)
    {
        ////////////////////////////////
        //...省略
        ////////////////////////////////
        //  for(int i=0;i        //    printf("%dff
",v[i]);
        int j=0;
        int num=0;
        //printf ("%d
", len3);
        for(int i=v[j];j        {
            for(k=0;k            {

                if(i < len2 && a[k]==b[i])/////////////////////
                    i++;
                else
                    break ;
            }
            //printf("%d sss
",k);
            if(k==len1)num++;///////////////////////////
        }
         printf("%d
",num);

}
    return 0;
}
全部回答
  • 1楼网友:傲气稳了全场
  • 2021-11-17 10:32
#include

#include

char a[10000],b[1000000];

int main()

{

    int t;int k=0;

    int v[100];

    scanf("%d",&t);

    while(t--)

    {

        scanf("%s",a);

        scanf("%s",b);

        int len1=strlen(a);

        int len2=strlen(b);

        char c=a[0];

        for(int i=0;i
            if(b[i]==c)

        {

            v[k]=i;k++;

        }

        int len3=k;

      //  for(int i=0;i
        //    printf("%dff ",v[i]);

        int j=0;int num=0;

        for(int i=v[j];j
        {

            for(k=0;k
            {


                if(a[k]==b[i])

                i++;

                else

                    break ;

            }

printf("%dsss ",k);

            if(k==len1+1)num++;

        }

         printf("%d ",num);


}

    return 0;

}追问我吧k改成z了,还是不行呢,,大神咋改啊追答不是帮你改了么,直接把for循环里的k前面的int去掉看看追问还是一样的啊,结果永远是0.。追答#include
 
#include
 
char a[10000],b[1000000];
 
int main()
 
{
 
    int t;int k=0;
 
    int v[100];
 
    scanf("%d",&t);
 
    while(t--)
 
    {
 
        scanf("%s",a);
 
        scanf("%s",b);
 
        int len1=strlen(a);
 
        int len2=strlen(b);
 
        char c=a[0];
 
        for(int i=0;i 
            if(b[i]==c)
 
        {
 
            v[k]=i;k++;
 
        }
 
        int len3=k;
 
      //  for(int i=0;i 
        //    printf("%dff ",v[i]);
 
        int j=0;int num=0;
 
        for(int i=v[j];j 
        {
 
            for(k=0;k 
            {
 
 
                if(a[k]==b[i])
 
                i++;
 
                else
 
                    break ;
 
            }
 
printf("%dsss ",k);
 
            if(k==len1+1)num++;//len1应该不需要+1吧
 
        }
 
         printf("%d ",num);
 
 
}
 
    return 0;
 
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯