实验四【1.字符串的实现】

1.实验目的

(1)掌握串的顺序存储结构;

(2)顺序串的基本操作的实现;

(3)掌握串的操作特点。

2.实验内容

(1)定义一个包含串的求长度、拼接、比较大小等基本操作的头文件函数原型;

(2)实现串的求长度、拼接、比较大小等基本操作。


3.实验程序

1、在软件中新建一个工程,在该工程中新建一个头文件str.h,其中包含了串的基本操作对应的函数声明,代码如下:

<pre name="code" class="cpp"><span style="font-size:18px;">#ifndef Str_H                           //避免重复包含str.h头文件
#define Str_H

int strlen(char * s);                   //函数原型,求串的长度
char * strcat(char *s1,char *s2);       //<span style="font-family: Arial, Helvetica, sans-serif;">函数原型,将字符串s2拼接到s1后面</span>
int strcmp(char *s1,char *s2);          //<span style="font-family: Arial, Helvetica, sans-serif;">函数原型,比较字符串s1和s2的大小</span>
#endif</span>


 


2、在工程中新建一个源程序文件str.cpp,该文件包括与串的基本操作对应的函数定义,代码如下:

#include"str.h"
int strlen(char * s)
{
	char * p=s;                        //指针p指向字符串s的起始地址
	int len=0;
	while(* p!='\0')
	{
		len++;
		p++;
	}
	return len;
}
char *strcat(char * s1,char *s2)
{
	char * p=s1,* q=s2;
	while(* p!='\0')                   //将指针p移到字符串s1的尾部
		p++;
	while(* q!='\0')
	{
		* p=* q;                   //将q指向的字符复制到指针p指向的位置
	    p++;q++;
	}
	* p='\0';
	return s1;
}

int strcmp(char *s1,char *s2)
{
	char * p=s1,* q=s2;
	while(* p!='\0'&& * q!='\0')
	{
		if(* p>* q)                  //p指向的字符>q指向的字符,则s1>s2
			return 1;
		else if(* p<* q)             //<span style="font-family: Arial, Helvetica, sans-serif;">p指向的字符<q指向的字符,则s1<s2</span>
			return -1;
		else{p++;q++;}
          }
if(* p=='\0'&& * q=='\0')                    //s1和s2的长度相同
return 0;
if(* p!='\0')                                //s1尚有未比较的字符
return 1;
if(* q!='\0')                                //s2尚有未比较的字符
return -1;
}


3、在工程中建立一个源程序str_main.cpp,该文件包括主函数,在主函数中调用串的基本操作,代码如下:

#include<iostream>          //引入输入输出流
#include"str.h"             //引入字符串基本操作的函数原型
using namespace std;

                            //以下为主函数
int main()
{
	char ch[20]="Internet ",*str="of Things!";
	cout<<"字符串s1的长度为:"<<strlen(ch)<<endl;
	cout<<"字符串s2的长度为:"<<strlen(str)<<endl;
	cout<<"字符串s1的长度减去s2的长度:"<<strcmp(ch,str)<<endl;
	cout<<"字符串s2的长度减去s1的长度:"<<strcmp(str,ch)<<endl;
	cout<<"字符串s1、s2拼接后为:";
	strcat(ch,str);
	for(int i=0;ch[i]!='\0';i++)
		cout<<ch[i];
	cout<<endl;
	return 0;
}

4、调试运行结果如下:



结语:由于个人水平有限,所以只是对实验指导书中关于字符串的实验程序代码做了一些小小的改编而已,望勿喷。吐舌头




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值