我是靠谱客的博主 激情大米,最近开发中收集的这篇文章主要介绍c语言设置标题字体,关于C语言字符串操作的几个题目,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

第一题是:写一函数,实现删除字符串str1中含有的字符串str2。这一题不难,但是有个 KMP优化算法,大家有兴趣可以查看资料看一下。

第二题是:给定的字符串A和B,输出A和B中的最大公共子串。本人的代码是:

#include

#include

void UtMost_ComStr(char* s1,char* s2)//imagine: s1 is longer

{

int maxLength=0,length=0,i=0;

char *p1=s1,*p1_1=s1,*p2=s2,*p2_2=s2;;

char *maxStartAddr=s1;

while(*p1!=0)

{

if(*p1==*p2)

{

length++;

if(length>maxLength)

{

maxLength=length;

maxStartAddr=p1_1;

}

p1++;

p2++;

}

else if((*p1!=*p2)&& *p2!=0)

{

length=0;

p1=p1_1;

p2_2++;

p2=p2_2;

}

else if(*p2==0)

{

length=0;

p1_1=s1++;

p1=p1_1;

p2_2=s2;

p2=p2_2;

}

}

printf("Max Length is %dn",maxLength);

printf("The longest same string is:n");

while(i

{

putchar(*maxStartAddr);

i++;

maxStartAddr++;

}

}

void main()

{

char *s1="aocdfe";

char *s2="pmcdfa";

UtMost_ComStr(s1,s2);

}

本人又从网上看了别人写的算法,发现有几个操作字符串很方便的函数:如下char *commanstring(char shortstring[], char longstring[])

{

int i, j;

char *substring=malloc(256);

if(strstr(longstring, shortstring)!=NULL) //如果……,那么返回shortstring

return shortstring;

for(i=strlen(shortstring)-1;i>0; i--) //否则,开始循环计算

{

for(j=0; j<=strlen(shortstring)-i; j++){

memcpy(substring, &shortstring[j], i);

substring[i]='';

if(strstr(longstring, substring)!=NULL)

return substring;

}

}

return NULL;

}

main()

{

char *str1=malloc(256);

char *str2=malloc(256);

char *comman=NULL;

gets(str1);

gets(str2);

if(strlen(str1)>strlen(str2)) //将短的字符串放前面

comman=commanstring(str2, str1);

else

comman=commanstring(str1, str2);

printf("the longest comman string is: %sn", comman);

}

该算法其中的精髓就在于strstr()这个函数,在此学习了

最后

以上就是激情大米为你收集整理的c语言设置标题字体,关于C语言字符串操作的几个题目的全部内容,希望文章能够帮你解决c语言设置标题字体,关于C语言字符串操作的几个题目所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部