#include "stdio.h"
#include "string.h"
#include "conio.h"
#include "stdlib.h"
#include "stdio.h"
#include "math.h"
#include "graphics.h"
/*============================================================================
解密程序
============================================================================*/
int bijiao(int *a,int *b);
int quan_bu_bi_jiao(char *str1,char *str2);
int da_xie_zi_mu(char *str1,char *str2);
int main()
{
char *str1,*str2,*temp;
int flag;
printf("put the first string :");
gets(str1);
puts(str1);
printf("put the secend string :");
gets(str2);
puts(str2);
if (strlen(str1)>strlen(str2))
{
temp=str1;
str1=str2;
str2=temp;
}
flag=bijiao(str1,str2);
if (flag==1)
{
printf("yes");
}
else
{
printf("no");
}
getch();
}
int bijiao(int *str1,int *str2)
{
int i,j,flag;
for (i=0;i<strlen(str1);i++)
{
if(str1[i]>='a'&&str1[i]<='z') //为什么这条语句他死活都不执行啊,我的目的是判断他有没有小写字母
{
flag=quan_bu_bi_jiao(str1,str2);//如果有小写字母那就要全部比较
return flag;
}
}
flag=da_xie_zi_mu(str1,str2);//都是大写字母
return flag;
}
int quan_bu_bi_jiao(char *str1,char *str2)
{
int i,j,b,flag;
for(i=0;i<strlen(str2)-strlen(str1);i++)
{
while(str1!=NULL)
{
if (*str1==*str2)
{
str1++;
str2++;
b++;
flag=1;
}
else
{
i=b;//b的作用是:如果执行到这步的时候不匹配而且乘下的字符不足str1的长度,就不在继续向下做
b++;
flag=0;
continue;
}
}
}
return flag;
}
int da_xie_zi_mu(char *str1,char *str2)
{
int i,j=0,b=0,flag;
while(str1[j]!=NULL)
{
for (i=b;i<strlen(str2);i++)
{
if (str1[j]==str2[i])
{
j++;
b=i;//循环从当前这步走下去,匹配后面的单词
flag=1;
break;
}
else
{
flag=0;
return flag;
}
}
}
return flag;
}
----------------解决方案--------------------------------------------------------
if(str1[i]>='a'&&str1[i]<='z')
if(str1[i]>='a'&& str1[i]<='z')
???
----------------解决方案--------------------------------------------------------
if(*(str1+i)>='a' && *(str1+i)<='z')
----------------解决方案--------------------------------------------------------
#include "stdio.h"
#include "string.h"
#include "conio.h"
#include "stdlib.h"
/*============================================================================
解密程序
============================================================================*/
int bijiao(char *a,char *b);
int quan_bu_bi_jiao(char *str1,char *str2);
int da_xie_zi_mu(char *str1,char *str2);
void main()
{
char *str1,*str2,*temp;
int flag;
printf("put the first string :");
gets(str1);
puts(str1);
printf("put the secend string :");
gets(str2);
puts(str2);
if (strlen(str1)>strlen(str2))
{
temp=str1;
str1=str2;
str2=temp;
}
flag = bijiao(str1,str2);
if (flag)
{
printf("yes");
}
else
{
printf("no");
}
getch();
}
int bijiao(char *str1,char *str2)
{
unsigned int i,flag;
for (i=0;i<strlen(str1);i++)
{
if (*(str1+i)>='a'&&*(str1+i)<='z')
{
flag = quan_bu_bi_jiao(str1,str2);
return flag;
}
}
flag=da_xie_zi_mu(str1,str2);
return flag;
}
int quan_bu_bi_jiao(char *str1,char *str2)
{
unsigned int i,b=0,flag,len;
char *p;
p=str1;
len=strlen(str2)-strlen(str1)+1;
for(i=0;i<len;i++)
{
while(*str1!='\0')
{
if (*str1==*str2)
{
str1++;
str2++;
b++;
flag=1;
}
else
{
i=b;//如果执行到这步的时候乘下的字符不足str1的长度,就不在继续向下做
b++;
flag=0;
str1=p;
str2++;
break;
}
}
if (flag==1)
{
return flag;
}
}
return flag;
}
int da_xie_zi_mu(char *str1,char *str2)
{
unsigned int i,j=0,b=0,flag,len;
len=strlen(str1)+1;
for(i=0;i<len;i++)
{
for (j;j<strlen(str2);j++)
{
if (*str1==*(str2+j))
{
b++;
j=b;//b的作用是让循环从当前这步走下去
flag=1;
str1++;
break;
}
else
{
b++;
flag=0;
}
}
if (*str1=='\0')
{
return flag;
}
}
return flag;
}
谢谢各位大哥的指点,改了下,好象行了
----------------解决方案--------------------------------------------------------