#包含“stdio.h”
intinput 1(char a[])//數組的輸入返回數組的長度。
{
int I;
char p = ' a//初始化P,讓P可以參與下面的循環。
for(I = 0;p!= ' \ nI++) //只要不輸入回車,就會壹直執行下面的存儲字母的操作。
{
scanf("%c ",& ampp);
如果(p!='\n') //如果沒有輸入回車,則字母存儲在數組中。
a[I]= p;
Else //如果輸入enter,將保存“\0”。
a[I]= 0;
}
返回I-1;//i-1是數組長度。
}
Int input2(char a[],int len) //len是數組A的長度,返回數組B的長度。
{
int I;
char p = ' a
for(I = 0;p!= ' \ ni++)
{
scanf("%c ",& ampp);
如果(p!='\n ')
a[I]= p;
其他
a[I]= 0;
}//以上同input1。
if(len & lt;I-1) //如果數組B的長度更長,就不可能有符合要求的字符串,所以返回0作為數組B的長度..
返回0;
其他
返回I-1;//返回i-1,因為它是B數組的長度。
}
Intwork (Char A [],Char B [],Intlen 1,Intlen 2)//Len 1,len 2分別是數組A和B的長度。
{
int n=0,i=0,j=0,temp = 0;//temp應該總是和I壹致。
while(I+len 2 & lt;=len1) //只要A中a[i]後有壹個字符串和數組B壹樣長,作如下判斷。
{
如果(a[i]!=b[0]) //在A中逐個查找。只要不同於B的第壹個字符,什麽都不做,在循環中等待i++。
;
其他
while(temp & lt;I+len2) //如果找到和b[0]壹樣的,就從這個元素開始,把len在A中的兩個字符和b中的兩個字符進行比較。
{
If(a[temp]==b[j]) //如果相等,比較下壹對元素。
{
j++;
temp++;
If(temp==i+len2-1) //如果比較了最後壹個,說明A中有和B中相同的字符串,那麽N加1。
n++;
}
else if(temp!=b[j])
打破;
}
i++;//在中查找下壹個元素,以等待下壹次循環。
temp = I;//temp在任何時候都應該和I壹致
j = 0;//對於A中的每壹個元素,如果等於b[0],就要從頭開始比較B中的序列。
}
返回n;
}
void main()
{
int len1,len2,num//len1是A中的長度,len2是B中字符串的長度,num是A中字符串的個數..
char a[81],b[81];//分別存儲兩個字符串。
len 1 = input 1(a);//寫入輸入a[81]的子函數,返回的字符串長度。
len2=input2(b,len 1);//為輸入a[81]準備的子函數
num=work(a,b,len1,len 2);//計算請求的數量。
printf("%d\n ",num);
printf("%s\n ",a);
printf("%s\n ",b);
}