5-2 顺序串

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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值