将字符串“I am a student.”逆序输出为“student. a am I”
给到一串字符“I am a student.”,将其输出为“student. a am I”。
整体思路为先将整个字符串逆序为
‘’.tneduts a ma I"
然后再将每个单词进行逆序转换为
“student. a am I”
那么我们只需先写出将整个字符串逆序的函数就已经将问题解决了大半
void reserve_string(char* start, char* end)
{while (start < end){char temp = *start;*start = *end;*end = temp;start++;end--;}
}
此处代码形参是取到目标字符串的首地址和为地址,然后将两个地址处的字符逐个进行交换。
接下来我们再进行处理单个单词,只需要用上面的代码将每个单词进行逆序就可以,但是要注意空格处,代码如下:
void reserve_all(char* str)
{char *cur = str;int len = strlen(str);reserve_string(str, str + len - 1);while (*cur){char *start = cur;while ((*cur) != ' ' && (*cur) != '\0'){cur++;}reserve_string(start, cur - 1);while ((*cur) == ' '){cur++;}}}
此处代码用指针cur作为当前地址,初始化取字符串首地址str,在进行整体逆序的时候的尾地址为str+len+1(首地址加往后长度的地址减一)。
在进行单个单词逆序的时候在在空格前和终止符前停止地址前移,然后以此进行单个单词调换。
并且需要注意在单个单词调换时的尾地址cur需要-1,因为在上面的while循环中在检测出空格或终止字符后cur还会+1.
接下来只需要执行就可以得到逆序结果了:
int main()
{char string[] = "l am a student.";reserve_all(string);printf("%s\n", string);system("pause");return 0;
}
将字符串“I am a student.”逆序输出为“student. a am I”相关推荐
- 用Java实现I am a student逆序输出为student a am I,不借助split方法和StringBuffer!
用Java实现I am a student逆序输出为student a am I,不使用split方法和StringBuffer,只用最原始的数组 总体思路:先整体后局部 public class R ...
- C语言 逆序输出字符串
前言 逆序输出字符串最可能先想到的是遍历时用栈保存字符,最后出栈.既然栈可以实现,那我们也可以用递归的方法来实现,并且一定会比较简单. 除了以上两种,还可以对字符串进行原地逆置,最后再将该字符串输出即 ...
- 蓝桥试题 算法提高 使用指针逆序输出 JAVA
问题描述 编写程序,输入一个字符串,使用指针逐个逆序输出字符串中所有字符. 输入格式 输入一个字符串 输出格式 输出一个与输入相应的逆序字符串 样例输入 一个满足题目要求的输入范例. abcd 样例输 ...
- 键盘输入abcde,逆序输出edcba(C语言)
从键盘输入一个字符串,再将其逆序输出 举例:输入abcde,输出edcba: 思路:定义一个char类型数组,将abcde依次存入数组,此时数组下标值应该是0~4 即0-a,1-b-4-e;所以在 逆 ...
- Python逆序输出字符串
逆序输出字符串 方法一 思路 定义一个字符串,求出长度num 使用for循环从最后一个往前取值并输出 end=' ' 作用:避免换行 代码 str = "i am a student&quo ...
- C语言经典例27-利用递归逆序输出字符串
目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来. 2 分析 从递归程序设计三大要素角度来分析: 该递归程序的目的:逆序输出字符 ...
- c语言案例——输入一个字符串,将其逆序输出
字符串常量可以赋值给一个字符指针或者一个字符数组,比如: /*1*/char *str = "this is a string"; /*2*/char str2[]= " ...
- 编程笔试(解析及代码实现):国内各大银行(招商银行/浦发银行等)在线笔试常见题目(猴子吃桃/字符串逆序输出/一段话输出字的个数/单词大小转换等)及其代码实现(Java/Python/C#等)之详细攻略
编程笔试(解析及代码实现):国内各大银行(招商银行/浦发银行等)在线笔试常见题目(猴子吃桃/字符串逆序输出/一段话输出字的个数/单词大小转换等)及其代码实现(Java/Python/C#等)之详细攻略 ...
- 编程笔试(解析及代码实现):字符串反转(字符串逆序输出)代码实现十多种方法对比(解析思路及其耗费时间)详细攻略
编程笔试(解析及代码实现):字符串反转(字符串逆序输出)代码实现十多种方法对比(解析思路及其耗费时间)详细攻略 目录 字符串反转(字符串逆序输出)代码实现十多种方法对比(解析思路及其耗费时间)详细攻略 ...
最新文章
- 8 场 5 胜,微服务 VS 单体架构
- 动手动脑(继承与多态)
- 软考-信息系统项目管理师-项目人力资源管理
- c语言向文件中写入字符串_C语言中定义字符串的两种方式及其比较
- vsftpd常用操作
- 安卓逆向之基于Xposed-ZjDroid脱壳 逆向分析(脱壳)
- HtmlUnit爬取Ajax动态生成的网页以及自动调用页面javascript函数
- 剑指offer(C++)-JZ8:二叉树的下一个结点(数据结构-树)
- TortoiseGit:参考文章
- 爆炸的符卡洋洋洒洒(01背包)
- cpu224xp生产方案
- Hilbert 变换
- H5分享到微信朋友圈与好友实现思路
- 关于大学生睡眠时间的调查
- 上线啦,可以定时周期性提醒群成员的机器人
- 苹果手机计算机无法横屏,苹果手机怎么设置屏幕旋转失灵了怎么办
- 我辞职了准备系统学习新知识和技提升自己
- Web负载均衡的几种实现方式
- CorelDraw 13从入门到精通视频教程
- dataframe python,使用pandas dataframe python创建实时更新图
热门文章
- 软考英文缩写_计算机软件常见英文缩写及对应全称
- 用开源的协同办公OA项目,做一个考勤系统
- ThinkPHP5支付宝支付(当面付)付款码ISV服务商模式
- vscode 使用code runner配置c++11
- QT 怎么获取linux本机的IP地址?
- 搭建xamppWeb服务器和TestLink、Mantis环境
- git 教程(12)--分支管理
- Cocos2dx游戏开发系列笔记7:一个简单的跑酷游戏《萝莉快跑》的消化(附下载)
- Matplotlib保存图片到文件
- 【Unity3D】Unity3D 软件安装 ( 注册账号并下载 Unity Hub | 安装 Unity Hub | 获取个人版授权 | 中文环境设置 | 安装 Unity3D 编辑器 )