關於c語言的一道題,關於C語言的一道題

時間 2021-09-11 22:33:34

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 ...