实验三 串基本操作的编程实现.doc

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
cin>>choice;
switch(choice)
{
case '1':
if(flag)
{
cout<<"数据已存在,是否覆盖?(y/n)";
cin>>choose;
if(choose=='N'||choose=='n')
{
cout<<"数据没有发生更改!"<<endl;
break;
}
if(choose=='Y'||choose=='y')
cout<<"|---"<<i<<"----|";
cout<<endl;
cout<<"位置: ";
for(i=0;i<=length/10;i++)
{
for(j=0;j<=9;j++)
cout<<j;
}
cout<<endl;
cout<<"当前串: ";
for(i=0;i<length;i++)
cout<<str[i];
}
break;
case '4':
if(flag==0)
cout<<"请先建立串!"<<endl;
else
{
newstring.strtraverse();
cout<<"请输入要插入的位置:";
cin>>position;
cout<<"请输入要插入的字符串:";
cin>>newstr;
length=strlen(newstr);
{
cout<<"已找到!"<<endl;
cout<<"字符串出现的初始位置为:"<<position<<endl;
}
if(position==0)
cout<<"您要查找的字符串不存在!"<<endl;
if(position==-1)
cout<<"字符串为空,操作失败!"<<endl;
}
break;
case '7':
if(flag==0)
cout<<"请先建立串!"<<endl;
else
{
newstring.strtraverse();
length=newstring.strlength();
cout<<"当前串的长度为:"<<length<<endl;
}
break;
case '8':
exit(0);
break;
#define maxsize 30//顺序串的总空间大小
enum returninfo{success,fail,overflow,underflow,range_error,empty};//定义返回信息清单
class string
{
public:
string();//构造函数
~string();//析构函数
{
returnvalue=newstring.strcreate();
if(returnvalue==success)
cout<<"创建成功!"<<endl;
flag=1;
}wenku.baidu.com
else
cout<<"输入错误!"<<endl;
}
else
{
returnvalue=newstring.strcreate();
returninfo strmodify(int beginposition,int endposition,char newstr[]); //修改
int strsearch(char newstr[]); //查找
void strtraverse(); //遍历
int strlength();//求串长
{
cout<<"字符串的最大长度为"<<maxsize<<endl;
cout<<"发生溢出,操作失败!"<<endl;
}
if(returnvalue==range_error)
cout<<"位置错误,操作失败!"<<endl;
if(returnvalue==empty)
cout<<"字符串为空,操作失败!"<<endl;
2.在字符串处理方面主要有什么操作?
3.字符串的操作的主要特点是什么?
4.举出几个字符串的应用范例?
【参考代码】
//功能:顺序串的基本基本功能
#include <iostream.h>
#include <conio.h>
#include <windows.h>
#include <iomanip.h>
returnvalue=newstring.strmodify(beginposition,endposition,newstr);
if(returnvalue==success)
{
cout<<"修改成功!"<<endl;
newstring.strtraverse();
}
if(returnvalue==overflow)
if(length==0)
return -1;
str_length=strlen(newstr);
for(;i<length&&count<str_length;i++)
{
if(str[i]==newstr[count])
{position=i-str_length+2;count++;continue;}
cout<<endl;
}
else
cout<<"字符串为空!"<<endl;
}
int string::strlength()
{
return length;
}
void menu(void)
{
cout<<"顺序串基本功能菜单"<<endl;
cout<<"=========="<<endl;
cout<<"1.建立顺序串(仅限单行的字符串,建议不用汉字。)"<<endl;
cout<<"请先建立串!"<<endl;
else
{
newstring.strtraverse();
cout<<"请输入要修改的初始位置:";
cin>>beginposition;
cout<<"请输入要修改的终止位置:";
cin>>endposition;
cout<<"请输入修改后的字符串:";
cin>>newstr;
}
length=i+1;
cout<<endl;
return success;
}
returninfo string::strinsert(int position,char newstr[],int str_length)
//当插入的字符串在原串末尾时,就相当于合并
{
return success;
}
returninfo string::strdelete(int beginposition,int endposition)
else
{
newstring.strtraverse();
cout<<"请输入要删除的初始位置:";
cin>>beginposition;
cout<<"请输入要删除的终止位置:";
cin>>endposition;
returnvalue=newstring.strdelete(beginposition,endposition);
{
return success;
}
returninfo string::strmodify(int beginposition,int endposition,char newstr[])
{
return success;
}
int string::strsearch(char newstr[])
{
int i=0,str_length,position=0,count=0; //是否相等标志,count用来确定比较时原串的移动
returnvalue=newstring.strinsert(position,newstr,length);
if(returnvalue==success)
{
cout<<"插入成功!"<<endl;
newstring.strtraverse();
}
if(returnvalue==overflow)
private:
char *str; //串
int length; //长度
};
string::string()
{
str=new char[maxsize];//申请数组空间
}
string::~string()
{}
returninfo string::strcreate()
{
int i=-1,ch;
【实验性质】
验证性实验(学时数:2H)
【实验内容】
字符串用常规的顺序存储法来存储,实现常用的功能。
自己编程模式:开发一个程序,用来统计文件中各种信息,如字符个数,行数等。
修改程序模式:将下面程序空白的地方填空。
程序检查模式:将本文件夹中的程序运行后总结相关功能。
【思考问题】
1.字符串的顺序存储和链表存储的差异?C语言中是如何实现字符串的?
}
break;
case '6':
if(flag==0)
cout<<"请先建立串!"<<endl;
else
{
newstring.strtraverse();
cout<<"请输入要查找的字符串:";
cin>>newstr;
position=newstring.strsearch(newstr);
if(position>0)
returninfo strcreate(); //创建串
returninfo strinsert(int position,char newstr[],int str_length); //插入
returninfo strdelete(int beginposition,int endposition); //删除
cout<<"2.显示串"<<endl;
cout<<"3.修改串"<<endl;
cout<<"4.插入串"<<endl;
cout<<"5.删除串"<<endl;
cout<<"6.查找串"<<endl;
cout<<"7.求串长度"<<endl;
cout<<"8.结束程序"<<endl;
cout<<"=========="<<endl;
if(returnvalue==success)
cout<<"创建成功!"<<endl;
flag=1;
}
break;
case '2':
if(flag==0)
cout<<"请先建立串!"<<endl;
else
newstring.strtraverse();
break;
case '3':
if(flag==0)
实验三 串基本操作的编程实现
【实验目的】
内容:串基本操作的编程实现
要求:
串基本操作的编程实现(2学时,验证型),掌握串的建立、遍历、插入、删除等基本操作的编程实现,也可以进一步编程实现查找、合并、剪裁等操作,存储结构可以在顺序结构或链接结构、索引结构中任选,也可以全部实现。也鼓励学生利用基本操作进行一些应用的程序设计。
default:
cout<<"输入错误!\n";break;
}
cout<<"按任意键继续......"<<endl;
getch();
system("cls");
menu();
}
getch();
return 0;
cout<<"请输入要创建的字符串(ctrl+z结束输入):"<<endl;
while((ch=getch())!=26)
{
cout<<char(ch);
i++;
if(ch!=13)
str[i]=char(ch);
else i=i-1;
cout.flush();//为了每次输入后可以立即显示所输入的字符,则先清除缓冲区
if(returnvalue==success)
{
cout<<"删除成功!"<<endl;
newstring.strtraverse();
}
if(returnvalue==range_error)
cout<<"位置错误,操作失败!"<<endl;
if(returnvalue==empty)
cout<<"字符串为空,操作失败!"<<endl;
else
{
if(position==1)
i=i-count;
count=0;
position=0;
}
}
return position;
}
void string::strtraverse()
{
int i,j;
if(length>0)
{
cout<<"位置: ";
for(i=0;i<=length/10;i++)
}
int main()
{
int flag=0,returnvalue,position,beginposition,endposition,length;
char choice,choose,newstr[maxsize];
string newstring;
menu();
while(1)
{
cout<<"请输入选择:";
{
cout<<"字符串的最大长度为"<<maxsize<<endl;
cout<<"发生溢出,操作失败!"<<endl;
}
if(returnvalue==range_error)
cout<<"位置错误,操作失败!"<<endl;
}
break;
case '5':
if(flag==0)
cout<<"请先建立串!"<<endl;
相关文档
最新文档