实验报告-串的基本操作
}
for(k=0;k<i-1;k++)
str.data[k]=s.data[k];
for(k=i+j-1;k<s.length;k++)
str.data[k-j]=s.data[k];
str.length=s.length-j;
printf("删除子字符串成功剩余长度为:%d\n",str.length);
for(k=0;k<i-1;k++)
str.data[k]=s.data[k];
for(k=0;k<t.length;k++)
str.data[i+k-1]=t.data[k];
for(k=i+j-1;k<s.length;k++)
str.data[t.length+k-j]=s.data[k];
str.length=s.length-j+t.length;
for(i=0;i<s.length;i++)
str.data[i]=s.data[i];
for(i=0;i<t.length;i++)
str.data[s.length+i]=t.data[i];
return str;
}
//求子字符串
void SubStr(SqString s,int i,int j)
printf("\n");
}
else
printf("目前空字符串无法输出\n");
}
void main()
{
SqString s;
char a[]={"wen xian liang"}; //字符串常量a
StrAssign(s,a);
DispStr(s);
StrLength(s);
SqString s1,s2,t; //s1是待复制的字符串变量
printf("下面将字符串s1和字符串s合并一起\n");
SqString str;
str=Concat(s,s1); //合并字符串
DispStr(str);
StrLength(str);
SubStr(str,22,7); //求子字符串
str=DeleStr(str,15,4); //删除字符串
printf("顺序字符串的基本运算到此结束了\n");
}
5、实验结果:
(4)保存和打印出程序的运行结果,并结合程序进行分析。
4、实验数据与程序清单
#include<stdio.h>
#define MaxSize 50
typedef struct
{
char data[MaxSize]; //存放字符串
int length; //字符串长度
}SqString;
//将一个字符串常量赋给串s
return str;
}
//替换字符串
void RepStr(SqString s,int i,int j,SqString t)
{
int k;
SqString str;
str.length=0;
if(i<=0||i>s.length||i+j-1>s.length)
printf("字符串替换失败了\n");
printf("替换字符串成功新字符串长度为:%d\n",str.length);
}
//字符串的输出
void DispStr(SqString s)
{
int i;
if(s.length>0)
{
printf("下面输出这个字符串\n");
for(i=0;i<s.length;i++)
printf("%c",s.data[i]);
}
//字符串的长度
void StrLength(SqString s)
{
printf("此字符串长度为:%d\n",s.length);
}
//合并字符串
SqString Concat(SqString s,SqString t)
{
SqString str;
int i;
str.length=s.length+t.length;
{
SqString str;
int k;
str.length=0;
if(i<=0||i>s.length||j<0||i+j-1>s.length)
printf("子字符串复制失败\n");
for(k=i-1;k<i+j-1;k++)
str.data[k-i+1]=s.data[k];
str.length=j;
return str;
}
//删除字符串
SqString DeleStr(SqString s,int i,int j)
{
int k;
SqString str;
str.length=0;
if(i<=0||i>s.length||i+j>s.length+1)
{
printf("字符串删除失败\n"); return str;
{
int j;
SqString str;
str.length=0;
if(i<=0||i>s1.length+1)
{
printf("字符串插入失败\n");
return str;
}
for(j=0;j<i-1;j++)
str.data[j]=s1.data[j];
for(j=0;j<s2.length;j++)
void StrAssign(SqString &s,char cstr[])
{
int i;
for(i=0;cstr[i]!='\0';i++) //这个'\0'代表字符串结束标志,编译系统自动加上的
s.data[i]=cstr[i];
s.length=i;
}
//字符串的复制
void StrCopy(SqString &s,SqString t)
printf("请输入一个字符串t:\n");
scanf("%s",t.data);
StrAssign(t,t.data);
StrCopy(s1,t); //复制字符串
StrLength(s1);
DispStr(s1);
printf("下面判断字符串s1和字符串s是否相等\n");
StrEqual(s,s1);
str.data[i-1+j]=s2.data[j];
for(j=i-1;j<s1.length;j++)
str.data[s2.length+j]=s1.data[j];
str.length=s1.length+s2.length;
printf("插入字符串成功长度为:%d\n",str.length);
printf("子字符串复制成功长度为:%d\n",j);
printf("下面输出此子字符串:\n");
for(i=0;i<j;i++)
printf("%c",str.data[i]);
printf("\n");
}
//插入字符串
SqString InserStr(SqString s1,int i,SqString s2)
if(s.length!=t.length)
same=0;
else
{
for(i=0;i<s.length;i++)
if(s.data[i]!=t.data[i])
{
same=0;
break;
}
}
if(same==0)
printf("这两个字符串不相等\n");
else
printf("这两个字符串相等\n");
DispStr(str);
StrLength(str);
printf("请插入一个字符串s2\n");
scanf("%s",s2.data);
StrAssign(s2,s2.data);
str=InserStr(str,15,s2); //插入字符串
DispStr(str);
StrLength(str);
计算机学院实验报告专用纸
实验室:网络实验室机号:网17实验日期:2009年4月19日
姓名
XXX
班级
课程称
数据结构
任课教师
实验项目名称
串的基本操作
指导教师
实验组别
X
同组者
无
教师评语及成绩:
实验成绩:教师签字:
(请按照实验报告的有关要求书写。一般必须包括:1、实验目的;2、实验内容;3、实验步骤与方法;4、实验数据与程序清单;5、出现的问题与解决方法;6、实验结果、结果分析与体会等内容)