1. 如何使用c語言求解最長公共子字元串問題及相關的演算法
假定字元串採用堆分配方式,編寫一個程序,求兩個字元串S和T的一個最長公共子串
本題的思路:
本題要實現的演算法掃描兩個字元串。其中index指出最長公共子串在s中的序號,length指出最長公共子串的長度
堆分配存儲表示如下:
typedef struct{
char *ch;
int length;
}Hstring;
Status MaxComString(Hstring S,Hstring T,int &length){
index=0;
length=0;
i=0;
//令i作為掃描字元串S的指針
while(i<S.length){
j=0;
//令j作為掃描字元串T的指針
while(j<T.length){
if(s.ch[i]==T.ch[j]){
//找一個子串,其在字元串S中的序號為i,長度為length1
length1=i;
for(k=1;S.ch[i+k]==T.ch[j+k];k++)length1++;
if(length1>length){
//將較大長度值賦給index與length
index=i;
length=length1;
}
j=j+length1;//繼續掃描字元串T中第j=length1個字元之後的字元
}else{
j++;
}
}//while
i++;
}//while
printf("最長公共子串:");
for(i=0;i<length;i++)printf("%c",S.ch[index+i]);
return OK;
}
2. c語言求字元串長度
C語言中字元串長度的函數是strlen(),一個字元的長度為1;
函數原型:
unsigned int strlen (char *s);頭文件:
#include <string.h>參數說明:s為指定的字元串;
功能說明:strlen()用來計算指定的字元串s 的長度,不包括結束字元'\0';
返回值:返回字元串s 的字元數;
注意:strlen() 函數計算的是字元串的實際長度,遇到第一個'\0'結束。
示例:
#include<stdio.h>#include<string.h>int main(){ char str[] = "ab\nxyz";//\n為回車字元,佔一個位元組 printf("strlen(str)=%d\n", strlen(str)); return 0;}//輸出結果:strlen(str)=6 收起
3. C語言:鍵入一個不超過100字元的字元串,輸出其中最長子字元串和它的長度。咋寫
代碼文本:
#include "stdio.h"
int main(int argc,char *argv[]){
char str[101],i,j,k,x,y,m,f;
printf("Enter a string... str=");
scanf("%100s",str);
for(k=0;str[k];k++);
for(f=m=i=0;i<k;i++)
for(j=k-1;j>i;j--)
if(str[j]==str[i]){
for(y=j,x=i;x<y;x++,y--)
if(str[x]-str[y])
break;
if(x>=y && m<=j-i){
m=j-i+1;
f=i;
break;
}
}
printf(" The longest palindromic substring is '");
for(i=0;i<m;putchar(str[f++]),i++);
printf("' The length is %d ",m);
return 0;
}
4. C語言中字元串的長度如何比較例如:輸入5個字元,輸入其中最長的字
可以用strlen函數來求取字元串的長度,然後進行比較,得出最長的字元串,然後輸出即可
示例代碼如下:
#include<stdio.h>
#include<string.h>
void main()
{
char s[5][20];
int a[5]; //用於儲存字元串長度的數組
int i,max;
for(i=0;i<5;i++)
{
gets(s[i]); //輸入字元串
a[i]=strlen(s[i]); //求取字元串長度,並用數組保存
}
max=a[0];
for(i=0;i<5;i++)
if(a[i]>max)
max=a[i];
for(i=0;i<5;i++)
{
if(a[i]==max)
{
puts(s[i]);
break;
}
}
}
5. c語言 計算字元串長度
C語言的字元串是由字元數組形式保存的,並約定'