顺序串基本运算
来源:互联网 发布:radon变换算法 编辑:程序博客网 时间:2024/05/20 08:23
//顺序串基本运算#include <stdio.h>#define MAXSIZE 50int StrLength(char *s); //求串长int StrCat(char s1[], char s2[]); //串连接int SubStr(char *s, char t[], int i, int len); //求子串int StrCmp(char *s1, char *s2); //串比较int StrInsert(char *s, int i, char *t); //串插入int main(){char x1[50] = "abcdefghijk", x2[30] = "mnopqrstuvwxyz", x3[20];puts(x1); //输出串1printf("Length of string x1 is %d\n", StrLength(x1)); //输出串 x1 的长度//求两个串的连接if (StrCat(x1, x2)){printf("Output x1 after chain:\n"); //输出连接后的串 x1puts(x1);}else{printf("Chain x1 and x2 fail!\n");}//求一个串的子串if (SubStr(x1, x3, 5, 12)) //对x1 求字串并存放到串x3 中{printf("String:\n");puts(x3); //输出存放在x3 中的子串}else{printf("Sub Sting get error!\n");}//字符串比较函数if (StrCmp(x1, x2) > 0) {printf("x1 is larger!\n");}else{if (StrCmp(x1, x2) == 0){printf("Equal!\n");}else{printf("x2 is larger!\n");}}//将字符串插入到串x2 中if (StrInsert(x2, 5, "aaaaa")){printf("Output x2 after insert!\n");puts(x2);}else{printf("Insert fail!\n");}return 0;}int StrLength(char *s){int i = 0;while (s[i] != '\0'){i++;}return i;}int StrCat(char s1[], char s2[]){int i, j, Len1, Len2;Len1 = StrLength(s1);Len2 = StrLength(s2);if (Len1 + Len2 > MAXSIZE - 1){printf("串长不够,连接失败!\n");return 0;}i = 0;j = 0;while (s1[i] != '\0'){i++;}while (s2[j] != '\0'){s1[i] = s2[j];i++;j++;}s1[i] = '\0'; //置串结束标志return 1;}int SubStr(char *s, char t[], int i, int len){int j, Slen;Slen = StrLength(s);if (i > len || i < 1 || len > Slen - i + 1 || len < 0) //len 是子串的长度{printf("给定参数有错!\n");return 0;}for (j = 0; j < len; j++){t[j] = s[i+j-1]; //从第i-1 个位置开始}t[j] = '\0'; //给子串t 置结束标志return 1;}int StrCmp(char *s1, char *s2){int i = 0;while (s1[i] == s2[i] && s1[i] != '\0'){i++;}return (s1[i] - s2[i]); //返回值可以大于、小于或等于0}int StrInsert(char *s, int i, char *t){ //将串t 插入到串s 的第i 个字符位置上,指针s 和t 指向存储字符串的字符数组char str[MAXSIZE];int j, k, len1, len2;len1 = StrLength(s);len2 = StrLength(t);if (i < 0 || i > len1 + 1 || len1 + len2 > MAXSIZE - 1){printf("参数不正确或主串s 的数组空间插不下子串t.\n");return 0;}k = i;for (j = 0; s[k] != '\0'; j++) {str[j] = s[k++]; //第一步:将串s 要插入位置i 之后的子串 先保存下}str[j] = '\0';j = 0;while (t[j] != '\0'){s[i] = t[j]; //第二步:把串t 插入到主串s 的位置i处i++;j++;}j = 0;while (str[j] != '\0'){s[i] = str[j]; //第三步:把原来主串i 之后的那个子串,重新接回主串i++;j++;}s[i] = '\0'; //置串s 结束标志return 1;}
阅读全文
1 0
- 顺序串基本运算
- 数据结构 顺序串的各种基本运算
- YTU 3007: 顺序串的基本运算
- Problem D: 顺序串的基本运算
- 顺序串各种基本运算的算法
- 顺序栈基本运算
- 顺序表的基本运算
- 顺序栈的基本运算
- 顺序表的基本运算
- 顺序表的基本运算
- 顺序表的基本运算
- 顺序表的基本运算
- 顺序表的基本运算
- 顺序表的基本运算。
- 顺序表的基本运算
- 顺序表的基本运算
- 顺序表的基本运算
- 顺序表基本运算算法
- Jquery UI (一)
- 使用 SiC MOSFET:挑战与设计建议---凯利讯半导体
- JS——事件的追加与移除
- JavaScript
- linux-3.5内核编译失败的问题
- 顺序串基本运算
- SpringMVC关于AOP拦截controller的注意事项
- 《android framework常用api源码分析》之apk打包过程解析
- 2017年12月12日 qsort函数理解、多态的实验
- mysql锁表机制分析
- BlueBorne远程代码执行漏洞Poc实战(CVE-2017-0781)
- sqlserver与oralce之间的数据库链接的创建
- Promise到底是个什么
- 玩嵌入式,可以试试Micro Bit!