c语言经典习题之逆序字符串详解
更新时间:2022年1月13日 13:07 点击:261 作者:厚积薄发
使用指针逆序字符串
思路:
- 给两个指针,left放在字符串左侧,right放在最后一个有效字符位置
- 交换两个指针位置上的字符
- left指针往后走,right指针往前走,只要两个指针没有相遇,继续2,两个指针相遇后,逆置结束
void reverse_string(char* str) { char* left = str;//首元素 char* right = str + strlen(str) - 1;//最后一个元素 while (left < right)//交换 { char tmp = *left; *left = *right; *right = tmp; //更新下标 left++; right--; } } int main() { char str[] = "abcdef"; reverse_string(str); printf("%s", str); return 0; }
使用递归逆序字符串
思路:
- 利用递归思想大事化小
- 先将首元素放到一个变量中
- 在将最后一个元素放到第一个元素位置
- 再将最后一个空位置放上\0便于递归逆序中间字符
- 最后再将首元素放到最后位置
void reverse_string(char* str) { int len = strlen(str); char tmp = *str;//拿出首元素放到tmp里 *str = *(str + len- 1);//然后把最后一个元素放到第一个元素位置 *(str + len - 1) = '\0';//把最后一个空位置放上一个\0 if (strlen(str + 1) >= 2)//如果字符串还有两个以上字符就逆序 reverse_string(str + 1); *(str + len - 1) = tmp;//最后把刚才在tmp里的元素放到字符串末尾 } int main() { char str[] = "abcdef"; reverse_string(str); printf("%s", str); return 0; }
逆序带空格的字符串
将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I
输入描述:
每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100
输出描述:
依次输出倒置之后的字符串,以空格分割
输入:
I like beijing.
输出:
beijing. like I
思路:
- 第一步逆序每一个单词
- 第二步整体逆序
#include <stdio.h> //逆序字符串的函数 void reverse(char*left, char* right) { while(left<right) { char tmp = *left; *left = *right; *right = tmp; left++; right--; } } int main() { char arr[100] = {0}; //输入 gets(arr);//读取一行 //处理 int len = strlen(arr); //1. 逆序每一个单词 char* start = arr; char *end = arr; while(*start) { end = start; while(*end != ' ' && *end!='\0')//找空格前面的字符 { end++; } //逆序一个单词 reverse(start, end-1);//end此时指向空格,end-1就是指向空格前面的字符 if(*end == ' ')//如果没有遇到空格就开始逆序下一个单词。 start = end+1; else//如果遇到空格就停止不要在指向下一个字符 start= end; } //2. 逆序整个字符串 reverse(arr, arr+len-1); //输出 printf("%s\n", arr); return 0; }
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注猪先飞的更多内容!
原文出处:https://blog.csdn.net/m0_61210742/article/details/122456196
相关文章
- 这篇文章主要为大家详细介绍了C语言实现放烟花的程序,有音乐播放,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-23
- 本篇文章主要介绍C语言中char的知识,并附有代码实例,以便大家在学习的时候更好的理解,有需要的可以看一下...2020-04-25
- 这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
- 这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
- 这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
- 这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
- 这篇文章主要介绍了详解如何将c语言文件打包成exe可执行程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-25
- 本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
- 这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
- 这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
- 这篇文章主要介绍了C# 16 进制字符串转 int的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
- JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: 复制代码 代码如下: function strLength(str) { var realLength = 0, len = str.length, charCode = -1;...2014-06-07
- free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
- 这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了C语言中计算正弦的相关函数总结,包括正弦和双曲线正弦以及反正弦的函数,需要的朋友可以参考下...2020-04-25
详解C语言中的rename()函数和remove()函数的使用方法
这篇文章主要介绍了详解C语言中的rename()函数和remove()函数的使用方法,是C语言入门学习中的基础知识,需要的朋友可以参考下...2020-04-25- 文章介绍一个实用的函数,我们如果用php substr来截取字符在中文上处理的很有问题,今天自己写了一个比较好的中文与英文字符截取的函数,有需要的朋友可以参考下。 ...2016-11-25
- 这篇文章主要介绍了C#实现对字符串进行大小写切换的方法,涉及C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了PostgreSQL 字符串处理与日期处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
- 这篇文章主要介绍了c#将字节数组转成易读的字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25