1.实验所涉及的知识点
(1).串是类似于线性表的顺序存储结构
(2).串的定长,初始化
(3).字符串插入指定串的位置
(4).联接字符串。
(5).求字串
2.程序源码
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define max 10
typedef unsigned char Sstring[max+1];
int Str_insert(Sstring S,Sstring T,int n)//字符串插入到指定位置,n为S的数组长度
{
int m,k;//m为T的数组长度,k为插入的位置
int i=0;
Sstring S1;//新的字符数组
for(int i=0;i<max;i++)
{
if(T[i]=='/0')
break;
else
m=i+1;
}
printf("请输入要插入的位置:");
scanf_s("%d",&k);
for(int i=0;i<k;i++)
{
S1[i]=S[i];//S[i]的n之前的字符串赋值给S1[n]的数组
}
if(m+n<=max)
{
for(int i=0;i<m;i++)
S1[i+k]=T[i];//插入的字符串T[i]赋值给S1[i+n]
for(int i=0;i<n-k;i++)//将S剩下的字符串赋给S1
{
S1[k+m+i]=S[i+1];
}
printf("插入后的字符串为:");
for(int i=0;i<(n+m);i++)
printf("%c",S1[i]);
printf("/n");
}
else
{
for(int i=0;i<m;i++)
{
S1[i+k]=T[i];//插入的字符串T[i]赋值给S1[i+n]
}
printf("插入后的字符串为:");
for(int i=0;i<max;i++)
printf("%c",S1[i]);
printf("/n");
}
return 0;
}
int Str_contract(Sstring S,Sstring P,int n)//联接字符串
{
Sstring S1;
int m;
for(int i=0;i<max;i++)
{
if(P[i]=='/0')
break;
else
m=i+1;
}
for(int i=0;i<n;i++)
{
S1[i]=S[i];
}
for(int i=0;i<m;i++)
{
if(n+m<max)
S1[n+i]=P[i];
else
{
printf("超过最大长度!!/n");
break;
}
}
printf("联接后的字符串:");
for(int i=0;i<(n+m);i++)
printf("%c",S1[i]);
printf("/n");
return 0;
}
int Str_sub(Sstring S,int j,int k)//求子串
{
Sstring S1;
int i=0;
for(int i=0;i<k;i++)
S1[i]=S[i+j-1];
printf("子串为:");
while(i<k)
{
printf("%c",S1[i]);
i++;
}
printf("/n");
return 0;
}
int Str_printf(Sstring S,int n)//输出S
{
printf("字符串为:");
for(int i=0;i<n;i++)
printf("%c",S[i]);
printf("/n");
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
Sstring S;
Sstring T;
Sstring P;
int n,j,k;//n为字符数组S的长度
printf("--------串的定长顺序存储结构--------/n");
printf("1.请输入字符串:");
scanf("%s",S);
for(int i=0;i<max;i++)
{
if(S[i]=='/0')
break;
else
n=i+1;
}
Str_printf(S,n);
printf("长度为:%d/n",n);
printf("2.请输入要插入的新字符串:");
scanf("%s",T);
Str_insert(S,T,n);
printf("3.请输入要链接的字符串:");
scanf("%s",P);
Str_contract(S,P,n);
printf("4.求子串!!/n");
printf("请输入你要截取的位置:");
scanf("%d",&j);
printf("请输入你要截取的长度:");
scanf("%d",&k);
Str_sub(S,j,k);
system("pause");
return 0;
}