C 课程设计实验报告

发布 2022-10-04 11:13:28 阅读 3548

2023年 12 月。

1. 程序功能介绍:

通过多种成员函数的定义和运算符的重载,实现字符串的各种直接操作,如:去掉串首、串尾与子串相同的字符,子串在主串中的定位,用新子串更换主串中的指定子串,比较字符串的大小,字符串连接等,所有功能已经通过验证。

2. 课程设计要求。

1)将主程序main()中的输出语句printf()改为vc++里的输出语句。

2)程序中对字符串的处理函数均使用了字符数组sans,它占用了大量存储空间,试使用动态分配存储空间的方法改写所有的函数,是之避免使用预先定义的长度很大的数组;并增加类的析构函数,删除动态分配存储空间。

3)新增运算符重载函数,重载—,—运算符,实现字符串的删除操作,并根据返回值判断操作是否成功。

4)新增成员函数void delrepeat(),实现在原字符串中删除相邻的重复字符的功能。

5)新增成员函数 int addstart(fstring str ,int start),实现将字串str插入到原字符串中从第start字符开始位置上,操作正返回1。

6)改写main函数的结构,界面为菜单形式,根据菜单选项来验证类中所定义的各种成员函数及操作符重载函数的正确性。

3.对课程题目的分析与注释。

字符串或串(string)是由零个或多个字符组成的有限序列。一般记为 s='a1a2···an'(n>=0)。它是编程语言中表示文本的数据类型。

一个简单的字符串操作是“连接”:也就是说先写一个字符串s,随后在后面再写一个t得到st这样一个过程。 其它的常见操作包括在一个长字符串中搜索一个子串,排列一组字符串以及分析一个字符串。

因为存在如此多的字符串应用方式,所以相应地有许多权衡了不同应用的相关算法。 高级的字符串算法通常使用包括后向树和有限状态机在内的复杂机制和数据结构。

4.程序设计和说明(说明算法思想、设计思路,给出重要的、关键的**)

1) 类的数据结构。

原程序定义了大量的成员函数和运算符重载函数,但这些函数都是在固定空间的字符数组上网前提下实现的,课程设计要求所有的函数要利用动态分配存储空间的方法存储字符串对象,所以基本上类中所有函数都要重新写,类中的数据成员增加一项字符串的长度int nlength,这样,动态分配存储空间的操作就可以简单一些char *p=char[nlength+1]。

#include <>

#include <>

#include <>

#include <>

#include <>定义参数个数可变的函数时用到。

#define max_fstring_length 250000 //用作数组长度。

class fstring字符串类定义。

private:

char *sstring;

int nlength;

public:

fstring缺省构造函数。

fstring(char *str);/新增构造函数,用字符串常量初始化字符串对象。

fstring(fstring &)新增拷贝构造函数,用类的对象初始化。

~fstring(){新增析构函数,释放字符串对象所占用的空间。

void delrepeat();

fstring addstart(fstring str,int start);

inline fstring operator-(const char *sappend);/新增函数,重载减法运算符。

inline fstring operator-(const fstring sappend); 新增函数,重载减法运算符。

inline fstring operator-=(char *val); 新增函数,重载减法运算符。

inline fstring operator-=(fstring val); 新增函数,重载减法运算符。

2) main函数结构。

main函数采用菜单选项的形式来实现类中的各个功能,显示菜单如下:

1、 字符串加法。

void f1(fstring s字符串加法。

fstring s2,s3("good!")

cout<<"请输入要操作的字符串"< char *p=new char[100];

cout< char *p1=new char[100];

s+=p1; /1

s2=s+p1; /2

cout<<"结果为:"

delete p1;

2、 字符串减法。

void f2(fstring s)

cout<<"result:"<

2) 删除字符串尾部相同字符。

void f4b(fstring s3)

cout<<"result:"<

3) 删除字符串的所有重复字符。

void f4c(fstring s3)

4) 字符串的插入操作。

void f4d(fstring s3){ 字符串的插入操作。

int m;

cout<<"输入字符串插入位置:";

cin>>m;

char *p=new char[100];

char *p1=new char[100];

cout<<"输入插入字符串:";

cout<<"result:"

delete p1;

5) 字符串的替换操作。

void f4e(fstring s3){ 字符串的替换操作。

char *p1=new char[100];

cout< char *p2=new char[100];

cout<<"格式:用什么替换什么"< cout<<"用:";

char *p3=new char[100];

cout<<"替换:"<

cout<<"replace : delete p1;

delete p2;

delete p3;

6) 字符串的倒置替换操作(首先寻找倒置的子串,再用一个新的字符串替换该子串)

7) 退出。

5、 退出。

可循环运行。

3. 课程设计中遇到的问题及解决方法。

1)给的源**中的operater+的功能和+=的重合。

解决办法:增加了一段,fstring fstring:: operator+(const char *sappend)

char sans[max_fstring_length]="

strcpy(sans,sstring);

strcat(sans,sappend);

sstring=_strdup(sans);

return(*this);

2)若执行菜单选择时,若输入字符会出现死循环。

解决办法:将整型输入变量改为字符型。

3)在参数输入完后,结果不在本界面输出,而在下一界面。

解决办法:在输出项的最后增加一句“cout<(4)再输入完选择操作时,本来有两句操作语句,结果界面上只出现了一句。

解决办法:因为输入选择项后后输入了一个回车键,第一个语句把它当做要输入的字符了,在选择语句的后面增加字符串的输入语句。

c语言课程设计实验报告

课程设计报告。1 设计内容及要求。1.1设计内容。备忘录 主要根据课程设计要求进行设计,能够进行个人的事件记录,可以将程序使用者的时间安排,重要事件,以及个人行程等事件做出具体详细的记述,并能够使使用者在程序上完成查看时间的功能,足以使得使用者避免忘记一些重要事件,也可以为使用者带来一些便利,帮助使...

C语言课程设计实验报告

数据库课程设计实验报告。学校 东华理工大学长江学院。专业 统计学。学号 姓名 一 实验目的。编制一个程序,将屏幕垂直分成四个窗口,左上边窗口为蓝色前景,右上边窗口为红色前景,左下角窗口为洋红色前景,右下角前景为白色前景,四个窗口设置为文本输入,即在窗口中可以输入文字,在窗口屏幕中可以显示出来,使用t...

c语言课程设计实验报告

实验目的。掌握c程序设计编程环境visual c 掌握运行一个c程序的基本步骤,包括编辑 编译 链接和运行。实验要求。在报告中记录建立 保存c程序实习过程。实验基本内容。编写程序,在屏幕上显示一个短句 hello world 程序 1 编译如下程序 include void main 2 链接。执行...