5-2 顺序串
本题要求实现几个函数,实现顺序串的基本操作: 建立串,判断串相等,求串长,输出串。
函数接口定义:
数据类型的定义:
typedef enum
{
FALSE=0,
TRUE=1
}BoolType;
typedef struct
{
char data[100]; //串中字符
int length; //串长
} SqString; //声明顺序串类型
需要完成的接口:
void StrAssign(SqString *s,char cstr[]);//字符串常量赋给串s
int StrLength(SqString s); //求串长
void DispStr(SqString s); //输出串s
BoolType StrEqual(SqString s,SqString t); //判串相等
裁判测试程序样例:
#include<stdio.h>
typedef enum
{
FALSE=0,
TRUE=1
}BoolType;
typedef struct
{
char data[100]; //串中字符
int length; //串长
} SqString; //声明顺序串类型
void StrAssign(SqString *s,char cstr[]);//字符串常量赋给串s
int StrLength(SqString s); //求串长
void DispStr(SqString s); //输出串s
BoolType StrEqual(SqString s,SqString t); //判串相等
int main()
{
int i;
SqString s,s1,s2,s3,s4;
SqString t;
StrAssign(&s,"abcdefghijklmn");//建立串
for(i=0;i<14;i++)
{
printf("%c",s.data[i]);
}
printf("\n");
s1.data[0]='q';
s1.data[1]='d';
s1.data[2]='r';
s1.data[3]='w';
s1.length=4;
DispStr(s1);//输出串
s2.data[0]='q';
s2.data[1]='w';
s2.data[2]='e';
s2.length=3;
printf("%d",StrLength(s2));//求串长
printf("\n");
t.data[0]='z';
t.data[1]='e';
t.data[2]='g';
t.data[3]='j';
t.data[4]='a';
t.data[5]='w';
t.length=6;
printf("%d",StrEqual(s,t));//判断是否相等
return 0;
}
/* 请在这里填写答案 */
void StrAssign(SqString *s,char cstr[])//字符串常量赋给串s
{
}
int StrLength(SqString s) //求串长
{
}
void DispStr(SqString s) //输出串s
{
}
BoolType StrEqual(SqString s,SqString t) //判串相等
{
}
输入样例:
在这里给出一组输入。例如:
输出样例:
在这里给出相应的输出。例如:
abcdefghijklmn
qdrw
3
0
接口实现:
void StrAssign(SqString *s,char cstr[]) //字符串常量赋给串s
{
int i;
for (i=0;cstr[i]!='\0';i++)
s->data[i]=cstr[i];
s->length=i;
}
int StrLength(SqString s) //求串长
{
return s.length;
}
void DispStr(SqString s) //输出串s
{
int i;
if (s.length>0)
{ for (i=0;i<s.length;i++)
printf("%c",s.data[i]);
printf("\n");
}
}
BoolType StrEqual(SqString s,SqString t) //判串相等
{
int i;
BoolType same=TRUE;
if (s.length!=t.length) //长度不相等时返回0
same=FALSE;
else
for (i=0;i<s.length;i++)
if (s.data[i]!=t.data[i]) //有一个对应字符不相同时返回假
{ same=TRUE;
break;
}
return same;
}