实验三 串基本操作的编程实现
- 格式:pdf
- 大小:399.78 KB
- 文档页数:8
实验三串基本操作的编程实现(共5页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--实验三串基本操作的编程实现【实验目的】内容:串基本操作的编程实现要求:串基本操作的编程实现(2学时,验证型),掌握串的建立、遍历、插入、删除等基本操作的编程实现,也可以进一步编程实现查找、合并、剪裁等操作,存储结构可以在顺序结构或链接结构、索引结构中任选,也可以全部实现。
也鼓励学生利用基本操作进行一些应用的程序设计。
【实验性质】验证性实验(学时数:2H)【实验内容】字符串用常规的顺序存储法来存储,实现常用的功能。
自己编程模式:开发一个程序,用来统计文件中各种信息,如字符个数,行数等。
修改程序模式:将下面程序空白的地方填空。
程序检查模式:将本文件夹中的程序运行后总结相关功能。
【思考问题】1.字符串的顺序存储和链表存储的差异C语言中是如何实现字符串的2.在字符串处理方面主要有什么操作3.字符串的操作的主要特点是什么4.举出几个字符串的应用范例【参考代码】立顺序串(仅限单行的字符串,建议不用汉字。
)"<<endl;cout<<"2.显示串"<<endl;cout<<"3.修改串"<<endl;cout<<"4.插入串"<<endl;cout<<"5.删除串"<<endl;cout<<"6.查找串"<<endl;cout<<"7.求串长度"<<endl;cout<<"8.结束程序"<<endl;cout<<"=========="<<endl;}int main(){int flag=0,returnvalue,position,beginposition,endposition,length;char choice,choose,newstr[maxsize];string newstring;menu();while(1){cout<<"请输入选择:";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'){returnvalue=();if(returnvalue==success)cout<<"创建成功!"<<endl;flag=1;}elsecout<<"输入错误!"<<endl;}else{returnvalue=();if(returnvalue==success)cout<<"创建成功!"<<endl;flag=1;}break;case '2':if(flag==0)cout<<"请先建立串!"<<endl;else();break;case '3':if(flag==0)cout<<"请先建立串!"<<endl;else{();cout<<"请输入要修改的初始位置:";cin>>beginposition;cout<<"请输入要修改的终止位置:";cin>>endposition;cout<<"请输入修改后的字符串:";cin>>newstr;returnvalue=(beginposition,endposition,newstr);if(returnvalue==success){cout<<"修改成功!"<<endl;();}if(returnvalue==overflow){cout<<"字符串的最大长度为"<<maxsize<<endl;cout<<"发生溢出,操作失败!"<<endl;}if(returnvalue==range_error)cout<<"位置错误,操作失败!"<<endl;if(returnvalue==empty)cout<<"字符串为空,操作失败!"<<endl;}break;case '4':if(flag==0)cout<<"请先建立串!"<<endl;else{();cout<<"请输入要插入的位置:";cin>>position;cout<<"请输入要插入的字符串:";cin>>newstr;length=strlen(newstr);returnvalue=(position,newstr,length);if(returnvalue==success){cout<<"插入成功!"<<endl;();}if(returnvalue==overflow){cout<<"字符串的最大长度为"<<maxsize<<endl;cout<<"发生溢出,操作失败!"<<endl;}if(returnvalue==range_error)cout<<"位置错误,操作失败!"<<endl;}break;case '5':if(flag==0)cout<<"请先建立串!"<<endl;else{();cout<<"请输入要删除的初始位置:";cin>>beginposition;cout<<"请输入要删除的终止位置:";cin>>endposition;returnvalue=(beginposition,endposition);if(returnvalue==success){cout<<"删除成功!"<<endl;();}if(returnvalue==range_error)cout<<"位置错误,操作失败!"<<endl;if(returnvalue==empty)cout<<"字符串为空,操作失败!"<<endl;}break;case '6':if(flag==0)cout<<"请先建立串!"<<endl;else{();cout<<"请输入要查找的字符串:";cin>>newstr;position=(newstr);if(position>0){cout<<"已找到!"<<endl;cout<<"字符串出现的初始位置为:"<<position<<endl;}if(position==0)cout<<"您要查找的字符串不存在!"<<endl;if(position==-1)cout<<"字符串为空,操作失败!"<<endl;}break;case '7':if(flag==0)cout<<"请先建立串!"<<endl;else{();length=();cout<<"当前串的长度为:"<<length<<endl;}break;case '8':exit(0);break;default:cout<<"输入错误!\n";break;}cout<<"按任意键继续......"<<endl;getch();system("cls");menu();}getch();return 0; }。
实验三串基本操作的编程实现引言:串是由零个或多个字符组成的有限序列,是一种非常基础也非常重要的数据结构。
在本实验中,我们将学习串的基本操作,并使用C语言来实现这些操作。
1.实验目的:-掌握串的基本操作,包括串的初始化、判空、求长度、复制和拼接等操作;-学会使用C语言编程实现串的基本操作。
2.实验内容:本实验主要包括以下几个串的基本操作的编程实现。
2.1串的初始化操作在C语言中,我们可以使用字符数组来表示一个串。
以下是一个串的初始化操作的实现代码:```c#include <stdio.h>void InitString(char s[], char str[])int i;for (i = 0; str[i] != '\0'; i++)s[i] = str[i];}s[i]='\0';int maichar s[20];char str[] = "Hello, World!";InitString(s, str);printf("Initialized string: %s\n", s);return 0;```2.2串的判空操作判空操作即判断一个串是否为空串。
如果一个串的长度为0,则表示该串为空串。
以下是一个判空操作的实现代码示例:```c#include <stdio.h>#include <stdbool.h>bool IsEmptyString(char s[])return s[0] == '\0';int maichar s[20] = ""; // 空串if (IsEmptyString(s))printf("The string is empty.\n");} elseprintf("The string is not empty.\n");}return 0;```2.3串的长度操作求串的长度,即求一个串中字符的个数。
串操作实验报告
《串操作实验报告》
实验目的:通过对串操作的实验,掌握串的基本操作方法,提高对串操作的理解和掌握。
实验材料:计算机、编程软件、实验指导书。
实验步骤:
1. 字符串的输入输出:首先,我们学习了如何通过编程软件向计算机输入字符串,并且通过编程实现将字符串输出到屏幕上。
这一步骤帮助我们了解了如何使用编程语言来操作字符串。
2. 字符串的拼接:接着,我们学习了如何将两个字符串进行拼接。
通过实验,我们发现可以通过简单的加号操作符来实现字符串的拼接,这为我们在日后的编程中提供了很大的便利。
3. 字符串的截取:在实验中,我们还学习了如何通过编程语言来截取字符串的部分内容。
这一步骤让我们对于字符串的操作更加灵活,可以根据需要来截取所需的内容。
4. 字符串的比较:最后,我们学习了如何通过编程语言来比较两个字符串的内容。
这一步骤让我们对于字符串的比较有了更深入的理解,可以通过比较来判断字符串是否相等,或者哪个字符串的内容更大。
实验结果:通过这次实验,我们对于串操作有了更加深入的理解和掌握。
我们可以通过编程语言来实现对字符串的输入输出、拼接、截取和比较等操作,为日后的编程工作打下了坚实的基础。
结论:串操作是编程中非常重要的一部分,通过这次实验,我们对于串操作有
了更加深入的理解和掌握。
希望在日后的编程工作中能够更加灵活地运用串操作,提高编程效率和质量。
串-数据结构实验报告串数据结构实验报告一、实验目的本次实验的主要目的是深入理解和掌握串这种数据结构的基本概念、存储方式以及相关的操作算法。
通过实际编程实现串的基本操作,提高对数据结构的理解和编程能力,培养解决实际问题的思维和方法。
二、实验环境本次实验使用的编程语言为C++,开发工具为Visual Studio 2019。
三、实验原理(一)串的定义串是由零个或多个字符组成的有限序列。
在本次实验中,我们主要关注的是字符串。
(二)串的存储方式1、顺序存储定长顺序存储:使用固定长度的数组来存储字符串,长度不足时用特定字符填充。
堆分配存储:根据字符串的实际长度动态分配存储空间。
2、链式存储每个节点存储一个字符,并通过指针链接起来。
(三)串的基本操作1、串的创建和初始化2、串的赋值3、串的连接4、串的比较5、求子串6、串的插入和删除四、实验内容及步骤(一)顺序存储方式下串的实现1、定义一个结构体来表示顺序存储的字符串,包含字符数组和字符串的实际长度。
```cppstruct SeqString {char str;int length;};```2、实现串的创建和初始化函数```cppSeqString createSeqString(const char initStr) {int len = strlen(initStr);SeqString s;sstr = new charlen + 1;strcpy(sstr, initStr);slength = len;return s;}```3、串的赋值函数```cppvoid assignSeqString(SeqString& s, const char newStr) {delete sstr;int len = strlen(newStr);sstr = new charlen + 1;strcpy(sstr, newStr);slength = len;}```4、串的连接函数```cppSeqString concatSeqString(const SeqString& s1, const SeqString& s2) {SeqString result;resultlength = s1length + s2length;resultstr = new charresultlength + 1;strcpy(resultstr, s1str);strcat(resultstr, s2str);return result;}```5、串的比较函数```cppint compareSeqString(const SeqString& s1, const SeqString& s2) {return strcmp(s1str, s2str);}```6、求子串函数```cppSeqString subSeqString(const SeqString& s, int start, int len) {SeqString sub;sublength = len;substr = new charlen + 1;strncpy(substr, sstr + start, len);substrlen ='\0';return sub;}```7、串的插入函数```cppvoid insertSeqString(SeqString& s, int pos, const SeqString& insertStr) {int newLength = slength + insertStrlength;char newStr = new charnewLength + 1;strncpy(newStr, sstr, pos);strcpy(newStr + pos, insertStrstr);strcpy(newStr + pos + insertStrlength, sstr + pos);delete sstr;sstr = newStr;slength = newLength;}```8、串的删除函数```cppvoid deleteSeqString(SeqString& s, int start, int len) {int newLength = slength len;char newStr = new charnewLength + 1;strncpy(newStr, sstr, start);strcpy(newStr + start, sstr + start + len);delete sstr;sstr = newStr;slength = newLength;}```(二)链式存储方式下串的实现1、定义一个节点结构体```cppstruct LinkNode {char data;LinkNode next;LinkNode(char c) : data(c), next(NULL) {}};```2、定义一个链式存储的字符串类```cppclass LinkString {private:LinkNode head;int length;public:LinkString(const char initStr);~LinkString();void assign(const char newStr);LinkString concat(const LinkString& other);int compare(const LinkString& other);LinkString subString(int start, int len);void insert(int pos, const LinkString& insertStr);void deleteSub(int start, int len);};```3、实现各个函数```cppLinkString::LinkString(const char initStr) {length = strlen(initStr);head = NULL;LinkNode p = NULL;for (int i = 0; i < length; i++){LinkNode newNode = new LinkNode(initStri);if (head == NULL) {head = newNode;p = head;} else {p>next = newNode;p = p>next;}}}LinkString::~LinkString(){LinkNode p = head;while (p) {LinkNode temp = p;p = p>next;delete temp;}}void LinkString::assign(const char newStr) {//先释放原有的链表LinkNode p = head;while (p) {LinkNode temp = p;p = p>next;delete temp;}length = strlen(newStr);head = NULL;p = NULL;for (int i = 0; i < length; i++){LinkNode newNode = new LinkNode(newStri);if (head == NULL) {head = newNode;p = head;} else {p>next = newNode;p = p>next;}}}LinkString LinkString::concat(const LinkString& other) {LinkString result;LinkNode p1 = head;LinkNode p2 = otherhead;LinkNode p = NULL;while (p1) {LinkNode newNode = new LinkNode(p1->data);if (resulthead == NULL) {resulthead = newNode;p = resulthead;} else {p>next = newNode;p = p>next;}p1 = p1->next;}while (p2) {LinkNode newNode = new LinkNode(p2->data);if (resulthead == NULL) {resulthead = newNode;p = resulthead;} else {p>next = newNode;p = p>next;}p2 = p2->next;}resultlength = length + otherlength;return result;}int LinkString::compare(const LinkString& other) {LinkNode p1 = head;LinkNode p2 = otherhead;while (p1 && p2 && p1->data == p2->data) {p1 = p1->next;p2 = p2->next;}if (p1 == NULL && p2 == NULL) {return 0;} else if (p1 == NULL) {return -1;} else if (p2 == NULL) {return 1;} else {return p1->data p2->data;}}LinkString LinkString::subString(int start, int len) {LinkString sub;LinkNode p = head;for (int i = 0; i < start; i++){p = p>next;}for (int i = 0; i < len; i++){LinkNode newNode = new LinkNode(p>data);if (subhead == NULL) {subhead = newNode;} else {LinkNode temp = subhead;while (temp>next) {temp = temp>next;}temp>next = newNode;}p = p>next;}sublength = len;return sub;}void LinkString::insert(int pos, const LinkString& insertStr) {LinkNode p = head;for (int i = 0; i < pos 1; i++){p = p>next;}LinkNode insertHead = insertStrhead;while (insertHead) {LinkNode newNode = new LinkNode(insertHead>data);newNode>next = p>next;p>next = newNode;p = p>next;insertHead = insertHead>next;}length += insertStrlength;}void LinkString::deleteSub(int start, int len) {LinkNode p = head;for (int i = 0; i < start 1; i++){p = p>next;}LinkNode temp = p>next;for (int i = 0; i < len; i++){LinkNode delNode = temp;temp = temp>next;delete delNode;}p>next = temp;length = len;}```(三)测试用例1、顺序存储方式的测试```cppint main(){SeqString s1 = createSeqString("Hello");SeqString s2 = createSeqString("World");SeqString s3 = concatSeqString(s1, s2);std::cout <<"连接后的字符串: "<< s3str << std::endl; int cmpResult = compareSeqString(s1, s2);if (cmpResult < 0) {std::cout <<"s1 小于 s2" << std::endl;} else if (cmpResult == 0) {std::cout <<"s1 等于 s2" << std::endl;} else {std::cout <<"s1 大于 s2" << std::endl;}SeqString sub = subSeqString(s1, 1, 3);std::cout <<"子串: "<< substr << std::endl; insertSeqString(s1, 2, s2);std::cout <<"插入后的字符串: "<< s1str << std::endl; deleteSeqString(s1, 3, 2);std::cout <<"删除后的字符串: "<< s1str << std::endl; return 0;}```2、链式存储方式的测试```cppint main(){LinkString ls1("Hello");LinkString ls2("World");LinkString ls3 = ls1concat(ls2);std::cout <<"连接后的字符串: ";LinkNode p = ls3head;while (p) {std::cout << p>data;p = p>next;}std::cout << std::endl;int cmpResult = ls1compare(ls2);if (cmpResult < 0) {std::cout <<"ls1 小于 ls2" << std::endl;} else if (cmpResult == 0) {std::cout <<"ls1 等于 ls2" << std::endl;} else {std::cout <<"ls1 大于 ls2" << std::endl;}LinkString sub = ls1subString(1, 3);std::cout <<"子串: ";p = subhead;while (p) {std::cout << p>data;p = p>next;}std::cout << std::endl;ls1insert(2, ls2);std::cout <<"插入后的字符串: ";p = ls1head;while (p) {std::cout << p>data;p = p>next;}std::cout << std::endl;ls1deleteSub(3, 2);std::cout <<"删除后的字符串: ";p = ls1head;while (p) {std::cout << p>data;p = p>next;}std::cout << std::endl;return 0;}```五、实验结果及分析(一)顺序存储方式1、连接操作成功实现,输出了正确连接后的字符串。
数据结构串实验报告数据结构串实验报告引言:数据结构是计算机科学中的重要概念之一,它研究如何组织和存储数据,以便能够高效地访问和操作。
串是一种特殊的数据结构,它由一系列字符组成,可以用来表示文本、字符串等信息。
本实验旨在通过实现串的基本操作,深入理解数据结构的原理和应用。
一、实验目的本实验的主要目的是掌握串的基本操作,包括串的初始化、插入、删除、查找等。
通过实际编程实现这些操作,可以加深对数据结构的理解,并提高编程能力。
二、实验环境本实验使用C语言进行编程,需要在计算机上安装相应的开发环境,如GCC编译器等。
三、实验内容1. 串的初始化串的初始化是指将一个空串创建出来,并为其分配内存空间。
在实验中,可以使用字符数组来表示串,并通过赋值操作将空串初始化。
2. 串的插入串的插入是指在指定位置插入一个或多个字符。
在实验中,可以通过遍历数组,将插入位置之后的字符依次后移,然后将待插入的字符放入指定位置。
3. 串的删除串的删除是指删除指定位置的一个或多个字符。
在实验中,可以通过遍历数组,将删除位置之后的字符依次前移,覆盖待删除的字符。
4. 串的查找串的查找是指在串中查找指定字符或子串,并返回其位置。
在实验中,可以通过遍历数组,逐个比较字符或子串,找到匹配的位置。
五、实验步骤1. 初始化串首先,创建一个字符数组,并将其初始化为空串。
2. 插入字符在指定位置插入一个字符,可以通过遍历数组,将插入位置之后的字符依次后移,然后将待插入的字符放入指定位置。
3. 删除字符删除指定位置的一个字符,可以通过遍历数组,将删除位置之后的字符依次前移,覆盖待删除的字符。
4. 查找字符在串中查找指定字符,可以通过遍历数组,逐个比较字符,找到匹配的位置。
六、实验结果经过实验,我们成功实现了串的初始化、插入、删除和查找等基本操作。
通过不断调试和优化,我们的程序能够高效地处理大量的字符操作,具有较好的性能和稳定性。
七、实验总结通过本次实验,我们深入理解了数据结构中串的原理和应用。
串基本操作的编程实现串(String)是一种数据结构,用于存储和操作字符序列。
在编程中,我们经常需要处理文本数据,比如字符串的搜索、替换、拼接等操作。
本文将以串基本操作为主题,分步解析在编程中如何实现这些操作。
1. 串的定义与表示在开始之前,我们首先需要了解串的定义与表示。
串是由零个或多个字符组成的有限序列。
可以使用字符数组或链表来表示一个串,这里我们以使用字符数组实现为例。
c#define MAX_SIZE 100typedef struct {char data[MAX_SIZE]; 用字符数组存储串的字符序列int length; 串的当前长度} String;2. 串的赋值与初始化在使用一个串之前,需要先进行初始化或者赋值操作。
初始化是指将字符串初始化为空串,而赋值是指将一个字符串赋值给另一个字符串。
下面是它们的具体实现。
c初始化串为空串void initString(String* s) {s->length = 0; 将串的长度初始化为0}将字符串t赋值给字符串svoid assignString(String* s, const char* t) {int i = 0;while (t[i] != '\0' && i < MAX_SIZE) {s->data[i] = t[i];i++;}s->length = i;}3. 串的拼接拼接是指将两个串连接在一起,形成一个新的串。
下面是串的拼接操作的实现。
c将字符串s2拼接到字符串s1的末尾void concatString(String* s1, const String* s2) {int i, j;for (i = s1->length, j = 0; j < s2->length && i < MAX_SIZE - 1; i++, j++) {s1->data[i] = s2->data[j];}s1->length = i;s1->data[i] = '\0'; 在拼接串的末尾添加结束符}4. 串的比较比较是指判断两个串是否相等。
竭诚为您提供优质文档/双击可除串操作实验报告篇一:顺序串的基本操作实验报告宁波工程学院电信学院计算机教研室实验报告课程名称:数据结构实验项目:顺序串的基本操作实验人员:徐浩学号:10401010209班级:计科102指导教师:宋宏图实验位置:计算机中心二楼实验日期:20XX-10-13一、实验目的1)熟悉串的定义和串的基本操作。
2)掌握顺序串的基本运算。
3)加深对串数据结构的理解,逐步培养解决实际问题的编程能力。
二、实验环境装有Visualc++6.0的计算机。
本次实验共计2学时。
三、实验内容编写一个程序,实现顺序串的各种基本运算,并在此基础上设计一个主程序。
具体如下:编写栈的基本操作函数顺序串类型定义如下所示:typedefstruct{charch[mAxsIZe];intlen;}seqstring;(1)串赋值Assign(s,t)?将一个字符串常量赋给串s,即生成一个其值等于t的串s(2)串复制strcopy(s,t)?将串t赋给串s(3)计算串长度strLength(s)?返回串s中字符个数(4)判断串相等strequal(s,t)?若两个串s与t相等则返回1;否则返回0。
(5)串连接concat(s,t)?返回由两个串s和t连接在一起形成的新串。
(6)求子串substr(s,i,j)?返回串s中从第i(1≤i≤strLength((:串操作实验报告)s))个字符开始的、由连续j个字符组成的子串。
(7)插入Insstr(s,i,t)?将串t插入到串s的第i(1≤i≤strLength(s)+1)个字符中,即将t的第一个字符作为s的第i个字符,并返回产生的新串(8)串删除Delstr(s,i,j)?从串s中删去从第i(1≤i≤strLength(s))个字符开始的长度为j的子串,并返回产生的新串。
(9)串替换Repstr(s,s1,s2)?在串s中,将所有出现的子串s1均替换成s2。
(10)输出串Dispstr(s)?输出串s的所有元素值(11)判断串是否为空Isempty(s)编写主函数调用上述函数实现下列操作:(1)建立串s=“abcdefghijklmn”,串s1=“xyz”,串t=“hijk”(2)复制串t到t1,并输出t1的长度(3)在串s的第9个字符位置插入串s1而产生串s2,并输出s2(4)删除s第2个字符开始的5个字符而产生串s3,并输出s3(5)将串s第2个字符开始的3个字符替换成串s1而产生串s4,s4(6)提取串s的第8个字符开始的4个字符而产生串s5,并输出s5(7)将串s1和串t连接起来而产生串s6,并输出s6 (8)比较串s1和s5是否相等,输出结果程序:#include#definemAxsIZe100typedefstruct{charch[mAxsIZe];intlen;}sqstring;voidstrAssign(sqstringfor(i=0;t[i]!=\0;i++)s.ch[i]=t[i];s.len=i;}voidstrcopy(sqstring并输出for(i=0;i s.ch[i]=t.ch[i];s.len=t.len;}voidstrequal(sqstrings,sqstringt){//判断串相等intsame=1,i;if(s.len!=t.len){same=0;}else{for(i=0;i if(s.ch[i]!=t.ch[i]){same=0;break;}}if(same==0)printf("s1,s5不相等");elseprintf("s1,s5相等");printf("\n");}voidstrLength(sqstrings){//计算串长度printf("t1的长度:");printf("%d",s.len);printf("\n");}sqstringconcat(sqstrings,sqstringt){//串连接sqstringstr;inti;str.len=s.len+t.len;for(i=0;i str.ch[i]=s.ch[i];for(i=0;i str.ch[s.len+i]=t.ch[i];returnstr;}sqstringsubstr(sqstrings,inti,intj){//求子串sqstringstr;intk;str.len=0;if(is.len||js.len)returnstr;for(k=i-1;k str.ch[k-i+1]=s.ch[k];str.len=j;returnstr;}sqstringInsstr(sqstrings1,inti,sqstrings2){//插入intj;sqstringstr;str.len=0;if(is1.len+1)returnstr;for(j=0;j str.ch[j]=s1.ch[j];for(j=0;j str.ch[i+j-1]=s2.ch[j];for(j=i-1;j str.ch[s2.len+j]=s1.ch[j];str.len=s1.len+s2.len;returnstr;}sqstringDelstr(sqstrings,inti,intj){//删除intk;sqstringstr;str.len=0;if(is.len||i+j>s.len+1)returnstr;for(k=0;k str.ch[k]=s.ch[k];for(k=i+j-1;k str.ch[k-j]=s.ch[k];str.len=s.len-j;returnstr;sqstringRepstr(sqstrings,inti,intj,sqstringt){//替换intk;sqstringstr;str.len=0;if(is.len||i+j-1>s.len)returnstr;for(k=0;k str.ch[k]=s.ch[k];for(k=0;k str.ch[i+k-1]=t.ch[k];for(k=i+j-1;k str.ch[t.len+k-j]=s.ch[k];str.len=s.len-j+t.len;returnstr;}voidDispstr(sqstrings){//输出串所有元素inti;if(s.len>0){for(i=0;i printf("%c",s.ch[i]);printf("\n");}}voidIsempty(sqstrings){//判断串是否为空if(s.len>0)printf("串不为空");elseprintf("串为空");printf("\n");}篇二:串实验报告篇三:字符串实验报告数据结构字符串实验班级:计算机应用技术10-1学号:10602101048姓名:姚福刚一、实验目的及要求:掌握有关字符串的基本操作和存储结构,并编写相应的基本操作算法。
实验三-串基本操作的编程实现一、实验目的本实验旨在深入理解和掌握串(字符串)的基本操作,包括串的创建、拼接、比较、子串查找等,并通过编程实现这些操作来加深对理论知识的理解。
二、实验内容1.串的创建与拼接2.串的比较3.子串的查找三、实验步骤与实现1.串的创建与拼接在Python中,我们可以使用字符串来创建串。
字符串是不可变的,这意味着我们不能改变字符串中的字符,但我们可以创建一个新的字符串。
拼接两个字符串可以通过加号(+)来实现。
# 串的创建str1 = "Hello"str2 = "World"# 串的拼接str3 = str1 + " " + str2print(str3) # 输出:Hello World2.串的比较在Python中,我们可以使用比较运算符(如==、<、>)来比较两个字符串。
字符串的比较是基于字符的ASCII值来进行的。
# 串的比较str1 = "Hello"str2 = "World"# 比较两个串是否相等if str1 == str2:print("两个串相等")else:print("两个串不相等") # 输出:两个串不相等3.子串的查找在Python中,我们可以使用find方法来查找一个字符串是否包含另一个字符串。
如果找到了子串,它将返回子串在主串中第一次出现的位置的索引;如果没有找到,它将返回-1。
# 子串的查找str1 = "Hello, world!"str2 = "world"# 查找子串的位置index = str1.find(str2)if index != -1:print("子串在主串中的位置是:", index) # 输出:子串在主串中的位置是: 7else:print("没有找到子串")四、实验总结与思考通过本次实验,我们了解了如何使用Python来实现串的基本操作。
串的实验报告总结本次实验旨在研究串(String)数据类型在计算机编程中的应用。
通过对串的基本操作和常见算法进行实验,探索串在字符串处理、文本编辑等方面的实际应用。
本报告将总结实验过程、结果及结论,并提出对进一步研究的展望。
实验内容与方法1.实验内容本次实验主要包括以下内容:-字符串的输入和输出;-串的基本操作,如串的连接、截取、插入等;-串的模式匹配算法,如KMP算法;-串的排序算法,如快速排序。
2.实验方法为了完成上述实验内容,我们采用了以下方法:-使用编程语言(如C++、Java)来实现串数据类型及其相关操作;-设计测试样例,验证实现的正确性和效率;-运行程序,记录实验结果并进行分析。
实验结果与分析经过实验,我们得到了以下结果和分析:1.字符串的输入和输出操作实现了预期的功能,可以正确地读取和显示字符串数据。
2.串的基本操作(连接、截取、插入等)能够正确地处理字符串,并且具有良好的效率。
3.KMP算法作为一种高效的模式匹配算法,能够快速地在文本中搜索指定的模式串,并返回匹配结果。
4.快速排序算法作为一种常用的排序算法,在处理大量字符串数据时表现出了较高的效率。
结论与展望通过本次实验,我们对串数据类型及其基本操作和常见算法有了更深入的理解。
串在计算机编程中具有重要的应用价值,特别是在字符串处理和文本编辑方面。
实验结果显示,实现的串操作功能正常,并且在性能上达到了预期的要求。
然而,本次实验还有改进和拓展的空间。
首先,可以进一步研究优化串的操作效率,提升算法的执行速度。
其次,可以探索更多的串算法,如字符串匹配的其他算法(如BM算法、Trie树等)以及字符串压缩算法等。
此外,可以考虑将串的应用扩展到更多领域,如自然语言处理、数据挖掘等。
综上所述,本次实验对于串数据类型的研究和应用具有重要意义,为进一步深入探索串的应用提供了基础和启示。
我们期待未来在串的研究中取得更多的成果,并将其应用于实际的计算机编程和软件开发中。
实验三数据类型和顺序结构程序设计(4学时)[实验任务一]:通过调试、分析程序运行结果,掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符;掌握各种运算符尤其是复合赋值运算符和除法及求余运算符。
程序分析实例3-1:输入、运行下面的程序,并分析、验证运行结果。
并以文件名assignment.c最终保存在实验3文件夹里:(需要存盘)【分析】程序运行结果为:在此基础上,做以下改动:(1)将程序第9~14行改为:a=61; b=62;c1=a; c2=b;f=3157.890121; g=0.123456789;d=f; e=g;p=a=m=50000; q=b=n=-60000;运行程序,分析结果。
【分析】修改后程序运行结果为:(2)在(1)的基础上将printf语句改为:printf("a=%d,b=%d,c1=%c,c2=%c,d=%15.6f,e=%15.12f\n",a,b,c1,c2,d,e);printf("f=%f,g=%f,m=%d\n",f,g,m);printf("n=%d\n”,n);printf(“p=%d,q=%d\n",p,q);运行程序。
(3)将p, q改用%o格式符输出。
注意是字母o而不是数字0。
(4)改用scanf函数输入数据而不用赋值语句,scanf函数如下:scanf("%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u",&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&q);输入的数据入下:61, 62, a, b, 3.56,-6.87, 3,157.890121, 0.123456789, 50000,-60000, 40000(说明:lf,ld格式符分别用于输入double型和long型数据)分析运行结果。
HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGY Array
数据结构
实验三串基本操作的编程实现
【实验目的】
内容:串基本操作的编程实现
要求:
串基本操作的编程实现(2学时,验证型),掌握串的建立、遍历、插入、删除等基本操作的编程实现,也可以进一步编程实现查找、合并、剪裁等操作,存储结构可以在顺序结构或链接结构、索引结构中任选,也可以全部实现。
也鼓励学生利用基本操作进行一些应用的程序设计。
【实验性质】
验证性实验(学时数:2H)
【实验内容】
字符串长度计算,字符串的连接,字符串的替换,求子串等。
【注意事项】
1.开发语言:使用C。
2.可以自己增加其他功能。
【实验分析、说明过程】
【思考问题】
【实验小结】 (总结本次实验的重难点及心得、体会、收获)。