㈠ 求最長公共子序列的c語言代碼
???
㈡ C語言輸出一行字元串中最長的單詞
代碼如下:
#包括< stdio, h >
# include < string。H >
Voidmain()
{
字元c[50];
Voidf(charc[50]);//沒有返回值,直接用函數f列印結果。
(c);
F(c);
}
Voidf(charc[50])
{
Intlen=0,lenth=0,I,flag=0;
For(I=0;C(我)!='\0';我++)
{
如果(c[我]!='')
Len++;
If(c[I]=='')
{
If (len > lenth)
{
長度=蘭;
國旗=i-lenth;//當有一個新的最長的字元串時,使用flag記錄字元串開始下標
}
Len=0;
}
}
If (len > lenth)
{
長度=蘭;
國旗=i-lenth;//以同樣的方式
}
Printf("最長的子串是%d字元,子串是:",lenth);//列印子串的長度
For (I = flag;I < flag + lenth;i++)//將子字元串從flag輸出到flag + lenth-1
Printf("%c",[I]c);
Printf("\n");//換行
}
(2)最長c語言代碼擴展閱讀:
1.返回意味著從被調用的函數繼續執行到主函數。Return可以伴隨一個返回值,返回值可以是常量、變數或表達式。
2.操作:結束正在運行的函數並返回該函數的值。
3.返回值:
返回值可以是各種數據類型,例如:int、float、ouble、char、a[](數組)、*a(指針)、
結構或類(c++)返回類型指定返回後要添加的金額的類型,如果返回類型被聲明為void,則不需要返回值。PublicstaticvoidMain()//programentry只能被聲明為void和int的返回
{
//沒有返回值
}
公共靜態空隙(mm)
{
返回;//在某些情況下,在一個voidmethod中,需要跳出來,你可以直接使用return,不能在後面添加任何數量
}
公共靜態intcc()
{
321的回歸;因為返回類型聲明為int,所以返回一個整數
}
公共靜態字元串MSMSM()
{
返回「asdfhasjghdg」;因為返回類型被聲明為string,所以返回一個string
}
㈢ C語言輸出最長字元串 輸出不完整 幫我看看代碼
把while(scanf("%s",&s) != 0 )中的scanf("%s",&s)改成gets(s)試試!scanf("%s",&s)這個函數是不認空格的,一旦有空格它就認為輸入結束了,把空格後的字元當另一次輸入,所以最後只剩下最後輸入一個字元串……
㈣ C語言 求最長公共子串的代碼,其中有一句j+=length1;不太明白作用是什麼,沒有這句有什麼影響,望解答
這個演算法是錯誤的,代碼中有一些錯誤,我修改如下:
j+=length的原始意圖是想讓s[i]==t[j]滿足的情況下,將t字元串移動。
但為什麼能一下移動length這么長?這樣雖然程序不會死循環,但結果不對。
由於一下子移動太多,可能會漏掉真正的最長公共子串,比如下面這個例子:
#include<stdio.h>
#include<string.h>
voidMaxComStr_youError(chars[],chart[],charc[])
{
intindex=0,length=0,i,j,k,length1;
i=0;
while(s[i]!='