该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include struct data
{
char s[20];
struct data *next;
}; struct data * creat(int num)//输入字符串
{
struct data *head,*p1,*p2;
int i;
for(i=0;i
{
p1=(struct data *)malloc(sizeof(struct data));
scanf("%s",&p1->s);
if(i==0)
{
head=p1;
p2=p1;
}
else
{
p2->next=p1;
p2=p1;
}
}
p1->next=NULL;
return head;
} void main()
{
char str[20];
char *str1;
int num,max,number=0;
int i,j,m,n;
char flag=0;
struct data *head; printf("input a string!\n");
scanf("%s",str);
printf("input a number!\n");
scanf("%d",&num);
head=creat(num); m=strlen(str);
while(head->s!=NULL)//进行比较
{
max=0;
flag=0;
n=strlen(head->s);
for(i=0;i
{
if(flag==0)j=0;//如果前一个i值对上,那么j不能从0开始
for(;j
{
flag=0;//每进入,就消除标识
if(str[i]==head->s[j])
{
max++;
j++;
flag=1;//用来标识当前是否对上
break;
}
}
}
if(max>number)//保存大值
{
number=max;
str1=head->s;
}
if(number==m)break;//判断是否已最大
head=head->next;
}
printf("output a string!\n");
if(number>0)printf("%s\n",str1);
else printf("sorry!there is no match!\n");
}