博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串练习题
阅读量:5972 次
发布时间:2019-06-19

本文共 4970 字,大约阅读时间需要 16 分钟。

什么是字符串?

以\0结尾的字符数组
只要是字符串操作我们就找字符串结尾
标准的字符串操作函数

char* strcpy_s(char*,const char*)

把第二个参数复制到第一个参数中

char* strncpy(char*,const char*,size_t)

第三个参数说明要复制几个到第一个参数中

char* strcat(char*,const char*)

把第二个参数连接到第一个参数的后面

char* strncat(char*,const char*,size_t)

第三个参数说明要连接几个到第一个参数后面

int strcmp(const char*,const char*)

比较两个字符串是否相等
返回值 1 0 -1

int strncmp(const char*,const char*,size_t)

第三个参数说明要比较几个字符

练习题:

 

1.查找一个字符在另外一个字符串中第一次出现的下标

2.查找一个字符在另外一个字符串中第一次出现的地址
3.查找一个字符串在另外一个字符串中第一次出现的地址  abcccccde ccd

1 #include 
2 3 int Index(char *str, char a); 4 char* Address(char *str, char a); 5 char* Find(char* str1, char* str2); 6 int main() 7 { 8 char *str1 = "abcccde"; 9 char *str2 = "ccd";10 char a = 'c';11 printf("%s\n" , Find(str1 , str2)); //一个字符串在另外一个字符串中第一次出现的地址12 printf("%d\n" , Index(str1 , a));//一个字符在另外一个字符串中第一次出现的下标13 printf("%d\n" , &str1[Index(str1 , a)]); //一个字符在另外一个字符串中第一次出现的地址14 printf("%d\n" , Address(str1, a)); //一个字符在另外一个字符串中第一次出现的地址15 }16 int Index(char *str, char a)17 {18 int index = 0;19 while(*str != '\0')20 {21 if(str[index] == a)22 {23 return index;24 }25 index++;26 }27 return 0;28 }29 char* Address(char *str, char a)30 {31 while(*str != '\0')32 {33 if(*str == a)34 {35 return str;36 }37 str++;38 }39 return NULL;40 }41 char* Find(char* str1, char* str2)42 {43 char *flag1 = str1;44 char *flag2 = str2;45 while(*str1 != '\0')46 {47 while(*str1 != *str2)48 {49 str1++;50 }51 flag1 = str1;52 while(*str1 == *str2)53 {54 str1++;55 str2++;56 if(*str2 == '\0')57 {58 return flag1;59 }60 }61 str1 = flag1 +1;62 str2 = flag2;63 }64 return NULL;65 }
查找

4.统计一个字符串中单词的个数(单词与单词之间是空格分割)"a abc make 89 12 a ma make 12 abc 89"

5.将一个字符串插入到另一个字符串中  "abcd"  "12345" 3

1 #include 
2 #include
3 4 void Inter(char *str1 , char *str2, int index); 5 int main() 6 { 7 char str1[100] = "abcd"; 8 char *str2 = "1234"; 9 int index = 2;10 Inter(str1 , str2, index);11 printf("%s",str1);12 }13 void Inter(char *str1 , char *str2 , int index)14 {15 16 int len2 = strlen(str2);17 char *flag = str1 + index; //找到要插入位置18 while(*str1 != '\0')19 {20 str1++;21 }22 while(str1 >= flag) //从后向前,向后移动23 {24 *(str1 + len2) = *str1;25 str1--;26 }27 while(len2) //从标记处开始插入28 {29 *flag = *str2;//或者*(flag++) == *(str2++);30 flag++;31 str2++;32 len2--;33 }34 }
插入字符串

6.翻转字符串

7.判断是否回文(回文指的是顺读和逆读都一样的字符串)  "abcdcba"

 

1 #include 
2 typedef int BOOL; 3 #define TRUE 1 4 #define FALSE 0 5 6 char* Reverse(char *str); 7 int Echo(char *str); 8 int main() 9 {10 char str[10] = "abcba";11 printf("%s\n",Reverse(str));12 printf("%d\n",Echo(str));13 }14 char* Reverse(char *str)15 {16 char *a = str;17 char *b = str;18 char c;19 while(*b != '\0')20 {21 b++;22 }23 b--;24 while(a < b)25 {26 c = *a;27 *a = *b;28 *b = c;29 a++;30 b--;31 }32 return str;33 }34 BOOL Echo(char *str)35 {36 char* a = str;37 while(*a != '\0')38 {39 a++;40 }41 a--;42 while(*a == *str)43 {44 str++;45 a--;46 if(a < str)47 {48 return TRUE;49 }50 }51 return FALSE;52 }53 //int Echo(char *str)54 //{55 // char *b = Reverse(str); 56 // while(*str == *b)57 // {58 // str++;59 // b++;60 // if(*str == '\0' && *b =='\0')61 // return 1;62 // }63 // return 0;64 //}
翻转和回文

 

 

Getstring 函数

1 #include 
2 #include
3 #include
4 5 char* Getstring(); 6 int main() 7 { 8 9 char* str = Getstring();10 printf("%s\n",str);11 12 return 0;13 }14 15 char* Getstring()16 {17 char c;18 char* str = (char*)malloc(5);19 int count = 0;20 char* newStr = NULL;21 int size = 5;22 char* bj = str;23 while((c = getchar()) != '\n')24 {25 //1.存储26 *str = c;27 str++;28 count++;29 //2.看空间是否够用30 if(count+1 == size)31 {32 //1.申请新的空间33 size += 5;34 newStr = (char*)malloc(size);35 //2.让旧空间里面存的东西变成字符串36 *str = '\0';37 //3.拷贝到新的空间里38 strcpy_s(newStr,size,bj);39 //4.释放旧的空间40 free(bj);41 bj = newStr;42 str = newStr + count;43 44 }45 }46 47 *str = '\0';48 return bj;49 }
Getstring

 

转载于:https://www.cnblogs.com/Lune-Qiu/p/7723293.html

你可能感兴趣的文章
2018年尾总结——稳中成长
查看>>
通过jsp请求Servlet来操作HBASE
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
Centos下基于Hadoop安装Spark(分布式)
查看>>
mysql开启binlog
查看>>
设置Eclipse编码方式
查看>>
分布式系统唯一ID生成方案汇总【转】
查看>>
并查集hdu1232
查看>>
Mysql 监视工具
查看>>
Linux Namespace系列(09):利用Namespace创建一个简单可用的容器
查看>>
博客搬家了
查看>>
Python中使用ElementTree解析xml
查看>>
jquery 操作iframe、frameset
查看>>
解决vim中不能使用小键盘
查看>>
Eclipse Java @Override 报错
查看>>
linux的日志服务器关于屏蔽一些关键字的方法
查看>>
mysql多实例实例化数据库
查看>>
javascript 操作DOM元素样式
查看>>
HBase 笔记3
查看>>