CSP考试 2014年09月第3题 字符串匹配 C语言实现

来源:互联网 发布:红蜘蛛控制软件 编辑:程序博客网 时间:2024/04/29 18:16


#include <stdio.h>#include <string.h>int main(){/*char* find="Hello";int flag=1;int NUM=5;char* a[NUM];a[0]="HelloWorld";a[1]="HiHiHelloHiHi";a[2]="GrepIsAGreatTool";a[3]="HELLO";a[4]="HELLOisNOTHello";*/int i;char find[100];for(i=0;i<100;i++){find[i]='\0';}int flag;int NUM;scanf("%s",&find);scanf("%d",&flag);scanf("%d",&NUM);char a[NUM][100];int j;for(j=0;j<NUM;j++){for(i=0;i<100;i++){a[j][i]='\0';}}for(j=0;j<NUM;j++){scanf("%s",&a[j]);}int x=strlen(find);if(flag==1){for(j=0;j<NUM;j++){int y=strlen(a[j]);int f=0;for(i=0;i<y-x+1;i++){//printf("i  %d\n",i);//printf("strncmp  %d\n",strncmp(find,a[0]+i,x));if(!strncmp(find,a[j]+i,x)){f=1;break;//printf("i  %d\n",i);}}if(f==1){printf("%s\n",a[j]);}}    }    //printf("%d\n",'b'-'B');    if(flag==0)    {        for(j=0;j<NUM;j++)    {    //printf("j  %d\n",j);    int y=strlen(a[j]);    for(i=0;i<y-x+1;i++){int k;int h=0;for(k=0;k<x;k++){if(find[k]!='\0'){if(find[k]==a[j][h+i]){h++;}else if((find[k]<='z')&&(find[k]>='a')){if((find[k]-32)==a[j][h+i]){h++;}else{//h=0;break;}}else if((find[k]<='Z')&&(find[k]>='A')){if((find[k]+32)==a[j][h+i]){h++;}else{//h=0;break;}}else{//h=0;break;} }}//printf("h %d\n",h);if(h==x){printf("%s\n",a[j]);break;}}}}return 0;}



0 0
原创粉丝点击