串的基本操作Word格式.docx
- 文档编号:18216942
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:12
- 大小:17.74KB
串的基本操作Word格式.docx
《串的基本操作Word格式.docx》由会员分享,可在线阅读,更多相关《串的基本操作Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
#include<
stdio.h>
#defineMAX128
typedefenum{fail,success}status;
typedefenum{false,true}boolean;
main()
{intstrlen();
voidstrass();
booleanstrcmp();
statusstrcat();
statusstrins();
intt,n,i;
booleanb;
statusst;
chars[MAX],s1[MAX],s2[MAX];
printf("
\n1.Thelengthofstring\n"
);
2.Theassignmentofstring\n"
3.Astringcomparewithanotherstring:
\n"
printf("
4.Astringconnectwithanotherstring:
5.Astringtobeinsertedintoanotherstring\n"
Pleaseinputaoperation:
"
/*输入操作选项*/scanf("
%d"
&
t);
switch(t)
{
case1:
pleaseinputastring:
getchar();
gets(s);
n=strlen(s);
thelengthis:
%d"
n);
break;
case2:
pleaseinputthefirststring:
gets(s1);
pleaseinputthesecondstring:
gets(s2);
strass(s1,s2);
case3:
\n"
b=strcmp(s1,s2);
if(b==true)
equal\n"
else
notequal\n"
case4:
st=strcat(s1,s2);
if(st==success)
answeris%s\n"
s1);
error!
case5:
pleaseinputi:
scanf("
i);
st=strins(s1,i,s2);
answeris:
%s\n"
elseprintf("
case0:
default:
Thereisn'
tthisoperation!
}
intstrlen(s)/*求字符串的长度子函数*/
chars[];
{inti;
for(i=0;
s[i]!
='
\0'
;
i++);
return(i);
voidstrass(s1,s2)chars1[],s2[];
{inti=0;
while(s1[i]!
){s2[i]=s1[i];
i++;
s2[i]='
s2is%s"
s2);
booleanstrcmp(s1,s2)/*字符串比较子函数*/
chars1[],s2[];
while(s1[i]==s2[i]&
&
s1[i]!
&
s2[i]!
)
if(s1[i]=='
s2[i]=='
return(true);
return(false);
statusstrcat(s1,s2)/*字符串连接子函数*/
{inti,j,k;
i=strlen(s1);
j=strlen(s2);
if((i+j)>
=MAXN)return(fail);
for(k=0;
k<
=j;
k++)
s1[i+k]=s2[k];
return(success);
statusstrins(s1,i,s2)
inti;
{intm,n,k;
m=strlen(s1);
n=strlen(s2);
if(i<
0||i>
m||(m+n)>
MAXN)return(fail);
for(k=m;
k>
=i;
k--)s1[k+n]=s1[k];
n;
k++)s1[i+k]=s2[k];
【测试数据与结果:
】
计算字符串的长度
1.Thelengthofstring
2.Theassignmentofstring
3.Astringcomparewithanotherstring:
4.Astringconnectwithanotherstring:
5.AstringtobeinsertedintoanotherstringPleaseinputaopertation:
1
youareaboy!
14
字符串的复制
2
iamagirl!
s2isyouareaboy!
字符串的比较
5.Astringtobeinsertedintoanotherstring
Pleaseinputaopertation:
3
youareaboy!
iamagirl!
notequal
字符串的连接
4
answeris:
字符串的插入
5
answerisiamagirl!
【实例2】统计主串指定单词在主串中出现的次数和位置
【实例描述】统计主串指定单词在主串中出现的次数和位置,要求:
1)输入以回车作为结束符的一串字符作为主串;
2)求主串中指定单词出现的次数和位置,注意单词与子串的区别;
【实例分析】
假设num存放出现次数,初始化为0,position[i]存放每一次匹配时的位置。
1)编写一个菜单函数,根据不同情况做(0-3)不同选择
2)如果选择1,即要求匹配的是单个字符c,让i=0,依次比较主串的第i
个字符,如果s[i]==c,则匹配成功,position[num]=i;
num++;
3)如果选择2,即要求匹配的是子串t,则此算法即为模式匹配算法,与模
式匹配不同的是每次匹配成功时不是返回,而是设置position和num的值,position[num]=i-j;
4)如果选择
3,即要求匹配的是单词
t,假设主串中单词之间用空格分割,
此算法与3)的不同,与t匹配的子串必须是一个单词,因此首先要找出主串中的单词,然后让t与找到的单词比较,若结果相等,则匹配成功,设置position和num的值,position[num]=i-j;
num++;
否则,查找主串中的下一个单词,直到主串结束。
【实例实现】
#include"
string.h"
stdio.h"
charstr[60];
voidmenu()/*菜单选择函数*/
{charchoice,c;
chart[20];
指定类型\n"
====================\n"
1.单个字符\n"
2.指定子串\n"
3.指定单词\n"
0.退出\n"
do
请你在上述功能中选择(0-3):
"
choice=getchar();
switch(choice)
{case'
1'
:
inputchar:
/*指定单个字符匹配的情况*/c=getchar();
index_char(str,c);
case'
2'
inputstring:
/*指定子串匹配的情况*/gets(t);
index_string(str,t);
3'
inputword:
/*指定单词匹配的情况*/gets(t);
index_word(str,t);
0'
return;
}while
(1);
index_string(char*s,char*t)/*子串匹配函数*/
{inti,j,num=0,position[80];
/*num存放匹配个数,position中存放每一次匹配的位置*/i=0;
j=0;
while(s[i]!
)/*主串没有结束*/
{while(s[i]!
t[j]!
)/*没有遇到结束符*/
if(s[i]==t[j])/*继续*/
{i++;
j++;
else/*回溯*/
{i=i-j+1;
if(t[j]=='
{position[num]=i-j;
}/*匹配成功,存放位置,并且次数加1*/
if(num)/*如果匹配成功,输出匹配次数和位置*/
{printf("
\nthenumberofstring\"
%s\"
is%d"
t,num);
\nthepositionis:
for(i=0;
i<
num;
i++)
%5d"
position[i]);
\nthestringisnotfound!
i);
index_word(char*s,char*t)
charword[20];
i=j=0;
{j=0;
while(s[i]=='
'
while((s[i]!
)&
(s[i]!
))/*寻找主串中的单词*/
word[j++]=str[i++];
word[j]='
if(strcmp(t,word)==0)/*如果输入的单词与主串中的单词匹配*/{position[num]=i-j;
\nthenumberofword\"
\nthewordisnotfound!
index_char(char*s,chart)
inti=0,num=0,position[80];
{if(s[i]==t){position[num]=i;
if(num)
\nthenumberofchar'
%c'
\nthecharisnotfound!
\ninputthestring1:
gets(str);
menu();
【测试数据与结果】
inputthestring1:
aabbbcccdddeabcde
指定类型
====================
1.单个字符
2.指定子串
3.指定单词
0.退出
请你在上述功能中选择(0-3):
1
a
thenumberofchar'
a'
is3
thepositionis:
0116
2
ab
thenumberofstring"
ab"
is2
116
3
ccd
thenumberofword"
ccd"
is1
8
0
四、思考项目
1)计算一个子串在一个字符串中出现的次数。
2)统计文本文件中给定的单词数。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 操作