1樓:龍__鳳
兩個for迴圈,再建立一個動態陣列,就可以了:
#include
#include
#include
char *submaxstring(const char *str1, const char *str2)
int size=(strlen(str1)>strlen(str2)?strlen(str1):strlen(str2));
char *max=(char *)malloc(sizeof(char)*size);
int i,j,k,m=1,length=1;
for(i=0;str1[i]!='\0';++i)
k=0;
for(j=0;str2[j]!='\0';++j)
while(str1[i+k]==str2[j+k])
k++;
m++;
if(m>length)
length=m;
strncpy(max,str1+i,k);
max[k]='\0';
k=0;
m=1;
return max;
void main()
char *str1="abcdefgggg",*str2="aaagggg";
char *max;
puts(str1);
puts(str2);
max=submaxstring(str1,str2);
printf("最長的共同子串:\n");
puts(max);
2樓:火舞蝶衣
你的函式介面如果這樣寫的話要在函式內新建一段空間用來放結果,然後還要在外面釋放,設計得不太好啊
/**找出兩個字串的最長公共子串的長度
**/#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int lcslength(char* str1, char* str2, int **b)
else if(c[i-1][j]>c[i][j-1])
else}}
/*for(i= 0; i < length1+1; i++)
*/len=c[length1][length2];
for(i = 0; i < length1+1; i++) //釋放動態申請的二維陣列
delete c[i];
delete c;
return len;
}void printlcs(int **b, char *str1, int i, int j)
else if(b[i][j]==1)
printlcs(b, str1, i-1, j);
else
printlcs(b, str1, i, j-1);
}int main(void)
關於c語言程式設計的一道題(急求答案!!)
3樓:遲業
#include
void main()
} 這回事倒等腰三角形
滿意請採納。
關於一道c語言題,求詳解,急求,關於一道C語言題,求詳解,急求
在主函式裡 是先執行fx 這個函式的,而執行這個函式得到的值x 15,而後x x a 15 5 20.a 5 所以輸出是 20 和 5 主函式的x帶的是全域性變數的值是fx函式得到的x的值15,而不是定義全域性變數的初始值,也不是fx函式裡x的初值 在這個程式裡用全域性變數無非是想說明全域性變數x在...
一道關於C語言指標問題,一道關於C語言的指標問題
chp最初指向b 3 也就是 f while chp b 0 注意這裡有分號,迴圈體是空語句 chp先指向b 2 也就是 e 顯然 b 2 b 0 不成立,所以跳出迴圈 執行putchar chp 輸出字元e 首先char chp b 3 可以得知,chp f 然後while chp b 0 chp...
求助關於c語言一道選擇題,求助關於C語言一道選擇題 !
解析有問題。正確的解析應該是 do while 條件表示式2 條件表示式2成立次數為n2,則迴圈體b執行次數為n2 1.因為條件表示式2成立就要執行一次,還要加上進入迴圈時執行的那一次。而對於while 條件表示式1 迴圈體a 條件表示式1成立次數為n1,則迴圈體a執行次數為n1。基於上述分析 1 ...