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语言的字符串是由字符数组形式保存的,并约定'