串的基本操作的编程实现.docx

上传人:b****7 文档编号:9174410 上传时间:2023-02-03 格式:DOCX 页数:14 大小:17.86KB
下载 相关 举报
串的基本操作的编程实现.docx_第1页
第1页 / 共14页
串的基本操作的编程实现.docx_第2页
第2页 / 共14页
串的基本操作的编程实现.docx_第3页
第3页 / 共14页
串的基本操作的编程实现.docx_第4页
第4页 / 共14页
串的基本操作的编程实现.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

串的基本操作的编程实现.docx

《串的基本操作的编程实现.docx》由会员分享,可在线阅读,更多相关《串的基本操作的编程实现.docx(14页珍藏版)》请在冰豆网上搜索。

串的基本操作的编程实现.docx

串的基本操作的编程实现

数据结构双语班

DATASTRUCTUREBILINGUAL-TEACHINGCLASS

实验报告003批改单

ExperimentReportCommendatoryBill

指导老师评语COMMENDATORYOFTHETEACHER

签字:

串基本操作的编程实现

2006-2007

(2)学期T523-1班学号:

33姓名:

王娟

指导老师:

马春江时间:

2007.04.19

【实验目的】

内容:

串基本操作的编程实现

要求:

串基本操作的编程实现(2学时,验证型),掌握串的建立、遍历、插入、删除等基本操作的编程实现,也可以进一步编程实现查找、合并、剪裁等操作,存储结构可以在顺序结构或链接结构、索引结构中任选,也可以全部实现,用菜单进行管理。

也鼓励学生利用基本操作进行一些应用的程序设计。

【实验性质】

验证性实验(学时数:

2H)

【实验内容】

可以只完成基本的功能演示程序。

也可以通过一个较为实用的系统下体现各种操作的作用,如可以开发一个文本统计程序,要求如下:

编写程序,进行字符串统计系统的设计

将存在txt文件中的文本进行统计:

字母数、标点符号数、单词数、句子数、段落数。

进一步的工作

(统计:

汉字数、每个单词的次数和所在行数等)

【详细设计】

#include

#include

#include

#defineMaxlen50

#include

usingnamespacestd;

typedefstruct

{

charch[Maxlen];

intlen;

}strtype;

voiddisp(strtype*s)//输出串

{

if(s->len==0)

cout<<"空串"<

else

{for(inti=0;ilen;i++)

{

cout<ch[i];

}cout<

}

voidcreate(strtype*s)//将普通字符串赋给串

{

charb,string[Maxlen]="";

intk=0;

cout<<"请输入一个字符串(以#结束)"<

for(;;)

{

cin>>b;

if(b=='#')break;

string[k]=b;

k++;

}

char*str=string;

strcpy(s->ch,str);

s->len=strlen(str);

}

intlength(strtype*s)//求串的长度

{

returns->len;

}

voidcopy(strtype*s1,strtype*s2)//串的复制

{

inti;

for(i=0;ilen;i++)

s2->ch[i]=s1->ch[i];

s2->len=s1->len;

s2->ch[s2->len]='\0';//添加字符串结束符

}

voidsubs(strtype*s,intpos,intn)//求子串

{

inti;

strtypess;

strtype*sub=&ss;

if(pos+n-1>length(s))//参数不正确

cout<<"子串过长!

";

else

{

for(i=pos-1;i

sub->ch[i-pos+1]=s->ch[i];

sub->len=n;

sub->ch[sub->len]='\0';

disp(sub);

}

}

intconcat(strtype*s,strtype*t)//连接两个串

{

inti;

if((s->len+t->len)>Maxlen)

{

cout<<"连接失败!

"<

return0;

}

for(i=0;ilen;i++)

s->ch[i+s->len]=t->ch[i];

s->len=s->len+t->len;

s->ch[s->len]='\0';

disp(s);

cout<<"连接成功!

"<

return1;

}

intins(strtype*s,strtype*t,inti)//插入一个子串

{

intj;

if(s->len+t->len>Maxlen)

return0;

for(j=s->len-1;j>=i-1;j--)//i之后的所有元素后移t->len个位置

s->ch[j+t->len]=s->ch[j];

for(j=0;jlen;j++)

s->ch[j+i-1]=t->ch[j];

s->len=s->len+t->len;

s->ch[s->len]='\0';

return1;

}

strtypereplace(strtype*s1,strtype*s2,inti,intj)//串的等长替换

{

strtypes;

intn,k;

if(i+j-1len)

{

for(n=0;n

s.ch[n]=s1->ch[n];

for(n=0;nlen;n++)

s.ch[i+n-1]=s2->ch[n];

s.len=i+s2->len-1;

for(n=s.len,k=i+j-1;klen;n++,k++)

s.ch[n]=s1->ch[k];

s.len=n;

s.ch[s.len]='\0';

s1=&s;

disp(s1);

}

else

{

s.ch[0]='\0';

s.len=0;

}

returns;

}

intdel(strtype*s,intpos,intn)//删除一个子串

{

inti;

if(pos+n>s->len)

{cout<<"长度过长,删除失败!

"<

for(i=pos+n-1;ilen;i++)

s->ch[i-n]=s->ch[i];

s->len=s->len-n;

s->ch[s->len]='\0';

return1;

}

///////////////////////////////////////////////////////////////////////////////

////////////////////////////////菜单///////////////////////////////////////////

voidmenu()

{

char*p[]={"",

"",

"",

"",

"",

"┏━━┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳━━┓",

"┃^_^┠数┨┠据┨┠结┨┠构┨┠程┨┠序┨┠设┨┠计┨^_^┃",

"┃┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┃",

"┣━━━━━━━━任意进制数据的相互转换━━━━━━━━━┫",

"┃程序功能:

┃",

"┃┃",

"┃本程序实现字符串的基本操作。

┃",

"┃┃",

"┃0.退出程序。

(按其他键继续)┃",

"┃┃",

"┃┃",

"┃┃",

"┃OO════∩════OO指导老师:

马春江┃",

"┃湖北汽车工业学院作者:

王娟┃",

"┃▁╭▅▆▇□□█▇▆▅▄▃▂▁(╳)█╮QQ:

550361098┃",

"┃ ╰═▃_电气工程系∠════▔▔▔┃",

"┃*:

-.,,.-:

*``*:

-.,,.-:

*``*:

-.,,.-:

*``*:

-.,,.-:

*,,┃",

"┃╭╧╮╭╧╮╭╧╮╭╧╮╭╧╮*:

-.,,.-:

*,、☆*:

-.,┃",

"┃║双║║语║║班║║天║║地║★*:

-.,┃",

"┃└﹏┘└﹏┘└﹏┘└﹏┘└﹏┘┃",

"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"

};

inti,j;

for(i=20;i>=0;i--)

{

system("cls");

for(j=i;j<=25;j++)

{

cout<<"\t"<

}

Sleep(150);

}

}

voidmenu2()

{

char*p[]={"┏━━┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳━━┓",

"┃^_^┠数┨┠据┨┠结┨┠构┨┠程┨┠序┨┠设┨┠计┨^_^┃",

"┃┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┃",

"┣━━━━━━━━字符串的基本操作实现━━━━━━━━━┫",

"┃程序功能:

┃",

"┃┃",

"┃本程序实现字符串的基本操作┃",

"┃┃",

"┃0.退出程序。

(按其他键继续)┃",

"┃1.清屏┃",

"┃2.求串的长度┃",

"┃3.串的复制┃",

"┃4.求子串┃",

"┃5.连接两个串┃",

"┃6.串的插入操作┃",

"┃7.串的等长替换┃",

"┃8.串的删除操作┃",

"┃9.输出一个串┃",

"┃┃",

"┃┃",

"┃OO════∩════OO指导老师:

马春江┃",

"┃湖北汽车工业学院作者:

王娟┃",

"┃▁╭▅▆▇□□█▇▆▅▄▃▂▁(╳)█╮QQ:

550361098┃",

"┃ ╰═▃_电气工程系∠════▔▔▔┃",

"┃*:

-.,,.-:

*``*:

-.,,.-:

*``*:

-.,,.-:

*``*:

-.,,.-:

*,,┃",

"┃╭╧╮╭╧╮╭╧╮╭╧╮╭╧╮*:

-.,,.-:

*,、☆*:

-.,┃",

"┃║双║║语║║班║║天║║地║★*:

-.,┃",

"┃└﹏┘└﹏┘└﹏┘└﹏┘└﹏┘┃",

"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"

};

inti;

system("cls");

for(i=0;i<=28;i++)

{

cout<<"\t"<

}

}

/////////////////////////////////////////////////////////////////////////////////

///////////////////////////main//////////////////////////////////////////////////

voidmain()

{

menu();

strtypet1,t2;

strtype*s1=&t1,*s2=&t2;

charch,str1[Maxlen]="",str2[Maxlen]="";

inti,j=0,k=0,n,pos;

cin>>ch;

if(ch=='0')exit(0);

menu2();

char*str01=str1,*str02=str2;

cout<<"字符串的赋初值"<

create(s1);

disp(s1);

cout<

for(;;)

{

cout<

";

cin>>ch;

switch(ch)

{

case'0':

exit(0);

case'1':

system("cls");menu2();

break;

case'2':

cout<<"求串的长度"<

cout<<"长度是:

"<

break;

case'3':

cout<<"串的复制"<

copy(s1,s2);

disp(s2);

cout<<"复制成功!

"<

break;

case'4':

cout<<"求子串"<

cout<<"输入位置"<

cin>>pos;

cout<<"输入长度"<

cin>>n;

subs(s1,pos,n);

break;

case'5':

cout<<"两个串的连接"<

create(s2);

disp(s1);

disp(s2);

concat(s1,s2);

break;

case'6':

cout<<"串的插入操作"<

cout<<"输入插入位置:

";

cin>>i;

create(s2);

ins(s1,s2,i);

disp(s1);

break;

case'7':

cout<<"串的等长替换"<

cout<<"输入替换位置:

";

cin>>i;

cout<<"输入长度:

";

cin>>j;

create(s2);

replace(s1,s2,i,j);

break;

case'8':

cout<<"串的删除操作"<

cout<<"输入删除子串起始位置:

";

cin>>pos;

cout<<"输入删除子串的长度:

";

cin>>n;

del(s1,pos,n);

disp(s1);

break;

case'9':

cout<<"输出一个串"<

disp(s1);

break;

default:

cout<<"输入无效菜单命令"<

}

}

}

【用户手册】

【心得体会】

本次实验,通过上机对串的基本操作有了更深刻的了解。

关键是本次实验完全是自己所编。

在编程过程中,会有很多错误,但都通过翻阅书籍或看范例,得以一一改正,获益不小。

这也更加增强了我学好数据结构的信心。

相信以后会编出更好的程序。

对串的逻辑结构、存储结构和基本操作的算法设计都有了一定的掌握,了解到串在高级语言中可以广泛应用,如在学号、职工编号、设备编号等,它们不应该是整数处理而应该是字符串处理,都要用到字符串的基本操作。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职高对口

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1