c语言卡了好久了,求求大家帮我看看
查看原帖
c语言卡了好久了,求求大家帮我看看
1504263
laptop996楼主2024/12/4 22:01

有没有大佬可以帮我看看,这个代码为什么过不去啊,卡了好几天了,只能过3,5的case

#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
    char a[10000][100] = {0}, ch, b[10000][100] = {0};
    long i = 0, j = 0, k = 0, l = 0, sum = 0, zkpm;
    int t;
    double kpm;

    while (strcmp(a[(j == 0) ? 0 : j - 1], "EOF") != 0)//范文读取
    {
        for (; (ch = getchar()) != '\n';)
        {
            a[j][i++] = ch;
        }
        a[j][i] = '\0';
        for (int li = 0; li < i; li++) // 每读取一行就进行<的判断,对此行进行操作
        {
            while (a[j][li] == '<')
            {
                if (li != 0 && li != i - 1) // li>=1,li<=i-1
                {
                    for (int lii = li - 1; lii <= i - 2; lii++)
                    {
                        a[j][lii] = a[j][lii + 2];
                    }
                    i = i - 2;
                    li--;
                }
                else if (li == 0) // li=0
                {
                    for (int lii = li; lii <= i - 1; lii++)
                    {
                        a[j][lii] = a[j][lii + 1];
                    }
                    i--;
                }
                else
                { // li=i-1
                    a[j][i - 2] = '\0';
                    i=i-2;
                }
            }
        }
        a[j][i]='\0';//每读入一行后,计数清零
        j++;
        i = 0;
        ch='0';
    }

    while (strcmp(b[(k == 0) ? 0 : k - 1], "EOF") != 0)//输入读取
    {
        for (; (ch = getchar()) != '\n';)
        {
            if((ch>='a'&&ch<='z')||ch==' '||ch=='.'||ch=='<')
            b[k][l++] = ch;
            
        }
        b[k][l] = '\0';
        for (int li = 0; li < l; li++) // 每读取一行就进行<的判断,对此行进行操作
        {
            while (b[k][li] == '<')
            {
                if (li != 0 && li != l - 1) // li>=1,li<=l-1
                {
                    for (int lii = li - 1; lii <= l - 2; lii++)
                    {
                        b[k][lii] = b[k][lii + 2];
                    }
                    l = l - 2;
                    li--;
                }
                else if (li ==0) // li=0
                {
                    for (int lii = li; lii <= l - 1; lii++)
                    {
                        b[k][lii] = b[k][lii + 1];
                    }
                    l = l - 1;
                }
                else
                { // li=l-1
                    b[k][l - 2] = '\0';
                    l = l - 2; 
                }
            }
        }
        b[k][l]='\0';
        k++;
        l = 0;
    }
    scanf("%d", &t);

    for (int ji = 0, ki = 0; ji < j - 1 && ki < k - 1; ji++, ki++)//正确字数对比
    {
        for (int i = 0, l = 0; b[ki][l] != '\0' && a[ji][i] != '\0'; i++, l++)
        {

            if (a[ji][i] == b[ki][l])
                sum += 1;
        }
        i = 0;
        l = 0;
    }
    kpm = 10 * (sum * 60) / t; // 计算时常+四舍五入
    if ((int)(kpm) % 10 >= 5)
        zkpm = ((int)(kpm) + 10) / 10;
    else
        zkpm = (int)(kpm) / 10;
    printf("%ld", zkpm);//sum时是为了测试
}
2024/12/4 22:01
加载中...