求助第一个测试点(代码有注释)
查看原帖
求助第一个测试点(代码有注释)
1091798
Neverabandon楼主2023/11/30 16:23

我换了好几种做法了,但是就是过不去,能不能有人看一下是不是我忽视了什么东西。

#include<stdio.h>
#include<string.h>
#include<ctype.h>
int Equal(char a, char b);

int main()
{
    char word[12] = "", passage[102] = "", c;
    int k1 = 1, k2 = 1;
    while((c = getchar()) != '\r' && k1 < 11)
    {
        word[k1] = c;
        ++k1;
    }
    word[0] = word[k1] = ' ';//读入字符串前后加空
    getchar();
    while((c = getchar()) != '\r' && k2 < 101)
    {
        passage[k2] = c;
        ++k2;
    }
    passage[0] = passage[k2] = ' ';//读入字符串前后加空
    int i, count = 0,x = 0, head = 0, tail = 0, flag = 0;//用head和tail确定单词的前后,然后进行对比
    while (head != k2)
    {
        tail = head + 1;
        while(passage[tail] != ' ')
        {
            ++tail;
        }
        if(tail - head == k1)
        {
            for(i = 1; i < k1; ++i)
            {
                flag = 0;
                if(!Equal(passage[head + i], word[i]))
                {
                    ++flag;
                }
            }
            if(0 == flag)
            {
                if(0 == count)
                {
                    x = head;
                }
                ++count;
            }
        }
        head = tail;
    }
    if(0 == count)
    {
        printf("-1");
    }
    else
    {
        printf("%d %d", count, x);
    }
    return 0;
}

int Equal(char a, char b)
{
    if(islower(a))
    {
        a -= ('a' - 'A');
    }
    if(islower(b))
    {
        b -= ('a' - 'A');
    }
    if(a == b)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
2023/11/30 16:23
加载中...