关于用指针实现输入字符串以单词为元素反转输出思路
#include <stdio.h>
char *my_fanzhuan(char *s){//多写注释有助于初学者学习
//想不出来就先画图 理清整体思路
//先整体翻转
//以中间一个单词或者间隙为中心 头尾每个字符挨个对称交换
//交换用三杯水原则
//定义两个指针一个在头部一个在尾部
char *front = s;//头部指针
char *back = s;//尾部指针
while(*back){//将尾部指针移动到尾部\0
back++;
}
back--;//从\0后退一个到字符串最后一个字母
//判断条件指针 front > back
//不管字符串个数是奇数还是偶数条件都能满足交换
//空格也是字符串同样和对应的字母交换
char temp = 0;//定义杯子临时变量
while(front < back){
temp = *front;//三杯水交换
*front = *back;
*back = temp;
front++;
back--;
}
//然后每个单词翻转,每一个单词头尾交换
//也是三杯水交换,尾部指针判断条件为遇到空格或者\0
//定义一个指针mark专门负责记录空格或者\0的位置
char *mark = 0;
front = s;//重置头尾指针的位置到初始位置
back = s;
while(*back){//用尾指针的移动到\0作为大循环停止的判断条件
//大循环不确定次数 用while 确定次数 用for
while(*back != ' ' && *back != '\0'){
back++;
//小循环每遇到空格或者\0后停止
}
mark = back;
//用mark记录一下当前空格或\0的位置方便后面移动到下一个单词用
back--;//后退到前一位为交换单词的尾部字母
//现在front在单词头部back在单词尾部
while(front < back){//实现单词的头尾交换
temp = *front;//三杯水交换
*front = *back;
*back = temp;
front++;
back--;
}
//实现交换后头尾指针的位置是乱的
//要重新赋值初始化到下一个单词头尾位置
//只需要将front back 移动到下一个单词的头部再做下一轮循环即可
front = mark + 1;
back = mark + 1;
}
}
int main(int argc, const char *argv[])
{
char s[128] = {0};
gets(s);
my_fanzhuan(s);
printf("%s\n",s);
//printf("%s\n",my_fanzhuan(s));
//this is a book
return 0;
}
测试:
输入:this is a book
输出:book a is this
关于用指针实现输入字符串以单词为元素反转输出思路相关推荐
- 1.统计所输入字符串中单词的个数。2.删除一个list里面重复元素。3.将列表中的偶数变成它的平方,奇数保持不变。4.输入字符串,将其每个字符的ASCII码形成列表并输出.5.猜单词游戏
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: 1.统计所输入字符串中单词的个数,单词之间用空格分隔. 代码: print("请输入字符(以空格隔开):" ...
- 统计输入字符串中英文单词的个数
文章目录 1 输入一个英文字符串(一句话),统计输入的单词个数 1 输入一个英文字符串(一句话),统计输入的单词个数 #include <iostream> #include <Wi ...
- c语言怎么用scanf输入字母,c语言输入字符串(c语言怎么用scanf输入字符串)
但是实际操作发现我的字符串无论输入的多长多短,都是输入的什么输出的就. 在C语言中,输入输出字符串有以下两种方式:1 用scanf/printf输入输出.scanf/printf是C语言的格式化输入输 ...
- C语言编程>第十周 ⑦ 请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行……
例题:请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回.一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始和结尾都没有空格. 请勿改 ...
- 请使用指针的方法编写程序,程序的功能是从键盘输入一个字符串(字符串长度小于100),删除其中的字母a后输出。例如,输入字符串abcaca,输出bcc。
请使用指针的方法编写程序,程序的功能是从键盘输入一个字符串(字符串长度小于100),删除其中的字母a后输出.例如,输入字符串abcaca,输出bcc. 输入样例: abcaca 输出样例: bcc 代 ...
- C++输入3个字符串,按由小到大的顺序输出(用指针方法处理),VS2017strcpy使用与strcpy_s使用
本文是想用来记载作为菜菜的初学者的自己解决这个问题的过程>< 如果是想康康最终的代码,直接通过目录到达"风暴叒一次来临(正确的道路)就可以啦"~ 如果在代码输入之后出现 ...
- C语言-输入一行英文字符串统计单词个数
C语言-输入一行英文字符串统计单词个数,单词之间以空格隔开 判断是否为单词的依据,通过一个flag标识,flag为0表示字符为空格,接下来出现不是空格,会将flag置为1 只有当flag为1且当前字符 ...
- [C语言]使用指针将输入的多个字符串按大小升序排序
[C语言]使用指针将输入的多个字符串按大小升序排序 1.题目 2.完整代码 3.截图 1.题目 编写一个函数,利用指针将输入的多个字符串按大小升序排序 要求:子函数 void StrSort(char ...
- [C语言]使用指针将输入的多个字符串按长度升序排序
[C语言]使用指针将输入的多个字符串按长度升序排序 1.题目 2.完整代码 3.截图 1.题目 编写一个函数,利用指针将输入的多个字符串按长度升序排序 要求:子函数 void StrSort(char ...
最新文章
- 2022-2028年中国客厅经济深度调研及投资前景预测报告
- mac 用 brew
- oracle创建 number,oracle创建表的方法和一些常用命令
- Linux下php5.3编译oracle客户端
- 【mycat】分库分表
- mysql锁的一些理解简书_MySQL锁系列之锁的种类和概念
- 使用WebBrowser控件获取网页源码的方法
- boost::stl_interfaces模块实现反向迭代器的测试程序
- tl494组成的超声波发射电路_透彻分析利用TL494组成的逆变器电路
- 一个好用的markdown表格生成工具
- Video在网页和移动端无法自动播放问题??
- 开机、问题-MocorDroid拔掉电池开机比正常关机后开机慢1分钟问题-by小雨
- Python列表推导式求素数
- 软件网站安全性的设计与检测与解决方案
- 时间管理-重要与紧急
- mac上面的文件分割与合并
- 对单位下三角矩阵的意外发现
- 【Stereo R-CNN 解读】基于立体R-CNN的自动驾驶三维目标检测
- 新版ECharts实现“暂无数据”的完美解决方案
- LeetCode 518 Coin Change 2 (python)
热门文章
- 配置无状态IPv6地址自动配置基础实验
- 网站提示DNS_PROBE_FINISHED_NXDOMAIN错误如何修复
- 基于云原生的私有化交付PAAS平台
- 明星热图|朱一龙环保主题大片出炉;李现为您开启新一年“红运”时刻;杨采钰成林清轩产品代言人...
- Android APP存储路径和缓存清理规范
- LACP负载分担配置
- 超图平台倾斜摄影发布流程
- 从“领域变迁”的视角,来看钉钉的“退让”与“进取”
- 中国会计科目的中英文对照
- PhotoShop: PSD精准切图