C语言如何实现含有多条匹配条件过滤问题

只有http://pan.baidu.com/s/1bncpLaZ 最好解析一下
2025-04-30 02:31:47
推荐回答(1个)
回答1:

#include 
int keyWords[11][4]=\
{   {1,2,3,6},
    {1,2,3,8},
    {1,2,3,9},
    {2,5,6,8},
    {2,6,7,8},
    {5,6,7,9},
    {6,8,9,10},
    {8,9,10,11},
    {6,7,8,13},
    {6,10,11,15},
    {9,10,11,15}
};

int comp(int line[],int key[])
{
    int i=0,j=0;
    do{
        if(line[i]==key[j])
        {
            if(j==3)
                return 1;
            else
                i++,j++;
        }
        if(line[i]>key[j])
            return 0;
        if(line[i]            i++;
    }while(i!=6 && j!=4);
    return 0;
}

int matchTimes(int line[])
{
    int times=0;
    int i;
    for(i=0;i<11;i++)
    {
        if(comp(line,keyWords[i])==1)
            times++;
    }
    return times;
}

int main(void)
{
    int line[6];
    int t,i;
    int key[]={1,2,3,6};
    while(scanf("%d,%d,%d,%d,%d,%d\n",line,line+1,line+2,line+3,line+4,line+5)!=EOF)
    {
        t=matchTimes(line);
        if(t>=1 && t<=5)
        {
            for(i=0;i<5;i++)
                printf("%d,",line[i]);
            printf("%d\n",line[i]);
        }
    }
    return 0;
}

我是用重定向读写文件的,你输入输出的地方改一下就行(我写数字的时候前面没加多余的0)