C语言实现英语句子按单词倒叙

题目:有一个字符数组的内容为:”student a am i”,请你将数组的内容改为”i am a student”.

要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。

分析及解题思路

可以看出这句话(字符串)是以单词为单位倒叙,即单词本身内部并不倒叙。所以不可以将整个字符串倒叙。

思路:先将整个字符串倒叙(此时单词内部也倒叙了),再做每个单词内部的调整。

编程步骤

1.主函数

  • 声明字符数存储字符串
  • 用函数实现功能——函数后文详解
int main()
{char arr[] = "student a am i";int len = strlen(arr);Swap(arr, ( arr+len-1));     //倒换字符串SwapWord(arr, len);          //倒换单词--内部套用swap()函数printf("%s\n",arr);return 0;
}
  • Swap 函数的参数是两个指针,第一个指针指向首字符,第二个指针指向尾字符
  • 注意 数组最后一个元素下标为长度减一即(len-1)

2.构造倒换字符串的函数 Swap(char *p1,char *p2);

  • 参数为字符指针传入首位元素地址
void Swap(char *p1,char *p2)
{while(p1<=p2){char inter;inter = *p1;*p1 = *p2;*p2 = inter;p1++;p2--;}
}

3.构造倒换单词函数 void SwapWord(char arr[ ],int len);

  • 需要的参数为:已经整体倒叙后的字符数组,和数组的长度(用来控制循环)
  • 创建一个动态变量status用来表示循环到单词内部还是在空格部分,0表示在单词外,即遇到不是空格且status==0则将指针p1指向单词的第一个字母,并将status改为1,在当遇到空格且status==1时则将指针p2指向单词最后一个字母arr[i-1]同时将status改为0.
  • 可利用Swap函数进行调换提高代码利用率,只需将单词第一个字母地址和单词结尾字母地址传入
void SwapWord(char arr[],int len)
{int i = 0, status = 0;char *p1 = NULL, *p2 = NULL;for(i = 0; i<len; i++){if(arr[i]!= ' '&& status == 0 ){p1 = &arr[i];status = 1;}if(arr[i]== ' '&& status ==1){p2 = &(arr[i-1]);status = 0;Swap(p1,p2);}}p1= p1;p2 = &arr[len-1];Swap(p1,p2);
}
  • 因为最后一个单词后没有空格,所以循环时无法处理到最后一个单词,需在循环后再做处理,循环后p1已经指向最后一个单词的首字母,只需将p2指向最后单词尾字母后再次调用Swap函数即可

结果展示

  • 代码整体

  • 结果展示

编程实现英语句子按单词倒叙-C语言相关推荐

  1. python输入一个英文句子、翻转句子中单词的顺序_ODOA(1) 翻转句子中单词的顺序(C语言实现)...

    动动手才发现自己现在的在C/C++方向的几个问题: 对自己的入门语言C语言变得非常陌生 编程的思维固定在找既有的方法,主要原因是python写多了,基本上所有常见的问题,都有现成的方法,让自己变得懒惰 ...

  2. 如何将一句英语句子的单词倒置

    目录 整体思路 代码实现 ReverseStr函数的实现 代码的整体实现 整体思路 这个题目的意思是什么呢?我举个例子:有这样的一句话,"i like beijing.",我们想要 ...

  3. python输入一个英文句子、翻转句子中单词的顺序_H面试程序(4):翻转句子中单词的顺序 ....

    题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变. 句子中单词以空格符隔开.为简单起见,标点符号和普通字母一样处理. 例如输入"I am a student." ...

  4. 编程计算机程序设计员英语,编程用英语怎么说

    编程是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到相应结果的过程.为了使计算机能够理解人的意图,人类就要通过编程的形式告诉计算机.那么你想知道编程用英语怎么说吗?下面学习啦小编 ...

  5. python编程常用英语单词500个_20个英语句子记住500个单词,太实用了!

    原标题:20个英语句子记住500个单词,太实用了! 1. Practice makes perfect. 熟能生巧. 批注:运用了押头韵的写法,p对p;再如:pride and prejudice(傲 ...

  6. C++ 编程题/单词倒排,骆驼命名法,查找兄弟单词

    问答题 问答题1:TCP建立连接的过程采用三次握手,已知第三次握手报文的发送序列号为 1000,确认序列号为 2000,请问第二次握手报文的发送序列号和确认序列号分别为? 已知第三次握手的发送序列号和 ...

  7. 计算机编程英语单词多少,计算机编程常用英语单词

    计算机编程常用英语单词 Graph Problems -- polynomial 图论-多项式算法 Connected Components 连通分支 Topological Sorting 拓扑排序 ...

  8. 常用计算机编程,计算机编程常用英语单词

    计算机编程常用英语单词 为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路.方法.和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务.这种 ...

  9. 汇编语言利用子程序的方法编程,把DATAS段里面的字符串倒叙输出到屏幕

    汇编语言利用子程序的方法编程,把DATAS段里面的字符串倒叙输出到屏幕 题目: 利用子程序的方法编程,把DATAS段里面的字符串倒叙输出到屏幕 DATAS SEGMENT db 'welcome' D ...

  10. 如何做到输入一个英语句子,将句中单词分行打印输出

    要求:         输入一个英文句子(以句号结束),要求将句中单词分行打印. 解答如下: #include<stdio.h> int main() {char c; //取一个字符变量 ...

最新文章

  1. 2022-2028年中国高纯锑行业市场全景研究及发展趋势分析报告
  2. 排序算法汇总——转载自http://blog.csdn.net/zhanglong_daniel/article/details/52513058
  3. mqtt session保持 订阅消息_MQTT系列 | MQTT消息的发布和订阅
  4. access和SQL的区别
  5. 使用maven生成scala项目的目录结构
  6. 垃圾回收算法优缺点对比
  7. 微信公众号配置后台接入
  8. C#.NET中数组、ArrayList和List三者的区别
  9. ENVI入门系列教程---一、数据预处理---4.2 自动采集控制点的RPC正射校正
  10. java 怎么入门_学习java怎么入门
  11. kitti数据集 Raw Data与00-10 Ground Truth的对应关系
  12. 计算机硬盘的常用分区工具,磁盘分区工具,详细教您硬盘分区工具diskgenius怎么使用...
  13. 基于matlab的适应度曲线的代码,matlab常用的几个适应度评价函数分析.docx
  14. 应广单片机规格 应广MCU锂电池充电IC
  15. 计算机中的特殊符号是什么,电脑中特殊字符怎么打出来
  16. 报错Replace Autoprefixer browsers option to Browserslist config.
  17. PIXHAWK飞控固件及代码基础介绍
  18. dvm 与 jvm区别
  19. Linux0号进程,1号进程,2号进程
  20. 嵌入式课程设计linux,嵌入式课程设计报告

热门文章

  1. 算术平均值c语言函数名称,求算术平均数和集合平均数的源代码
  2. 打开我的电脑的快捷键
  3. 什么是PLC的响应时间
  4. 逆函数求导公式_反三角函数_反三角函数定义域_反三角函数公式大全_反三角函数求导_【问他】...
  5. 【虚拟机数据恢复】误删除VMware虚拟机vmdk文件的数据恢复案例
  6. VBS学习笔记(4): WScript //d //x MyScript.vbs,调试无法启动
  7. 网站 内容更新 监控 php,网站状态监控方法,使用PHP轻松监控你的网站运行状态...
  8. 打印没反应/打印耗时长/not accessible
  9. adc0809工作过程C语言,ADC0809引脚图、时序图、工作流程图详解
  10. 电脑使用者必备的文本编辑器,哪款适合你?