两个字符串中的最长公共英文单词

img


#include
#include
int main(void)
{
    char s1[100], s2[100],s3[50]={0},w1[100][100]={0},w2[100][100]={0};
        int i, j, k,p,q, max=0; 
        int flag1=0,flag2=0;
    while (gets(s1) && gets(s2)){
        if(s1[0]=='\0'||s2[0]=='\0'){printf("No common word!\n");
        }
        else{
        flag1=0;
        flag2=0;
        max=0;
           for(int i=0,j=0,k=0;i<strlen(s1);i++){
               if(s1[i]>='a'&&s1[i]<='z'|| s1[i]>='A'&&s1[i]<='Z'){
                w1[j][k]=s1[i];
                k++;
               }
               else{
                   j++;
                   flag1++;
                   k=0;
            }    
           }
//        for(p=0;p
//            puts(w1[p]);
//        } 
        for(int i=0,j=0,k=0;i<strlen(s2);i++){
               if(s2[i]>='a'&&s2[i]<='z'|| s2[i]>='A'&&s2[i]<='Z'){
                w2[j][k]=s2[i];
                k++;
               }
               else{
                   j++;
                   flag2++;
                   k=0;
            }    
           }
//        for(p=0;p
//            puts(w2[p]);
//        } 
        for(int i=0;ifor(int j=0;jif(strcmp(w1[i],w2[j])==0){
                    if(strlen(w1[i])>max){
                        max=strlen(w1[i]);
                        strcpy(s3,w1[i]);
                    }
                }
            }
        }
        if(max!=0){
            puts(s3);    
        }
        else{
            printf("No common word!\n");
        }    
    }    
   }
    return 0;
}

显示答案错误

img


好像运行次数多了就出错了,可是为什么啊,应该怎么改呀?