文章目录

  • 题目内容
    • 题目分析
      • 代码实现
    • 程序思考

题目内容

  1. 牛客网上刷题碰到的:将一句话的单词进行倒置,其中标点符号不倒置.
  2. 例如输入一句话"I Love Beijing."要求输入为:"Beijing. Love I"

题目分析

刚开始看到这个题目的时候,脑子里没有思路:
1. 如何计算出输入的单词的长度并进行翻转
2.如何将标点符号做到不随单词进行翻转

认真考虑了之后,觉得可以分为以下几个步骤:

  1. 字符串的整体翻转
    将输入的"I Love Beijing.“翻转成”.gnijieB ekiL I"
  2. 单词的逆序翻转
    在上步的基础上,将单词进行翻转,".gnijieB ekiL I"翻转成"Beijing. Like I"

代码实现

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
void reverse(char*left,char*right)
{char tmp=0;while(left<right){tmp=*left;*left=*right;*right=tmp;left++;right--;}
}
int main()
{char arr[100]={0};//用库函数gets(),获取字符串gets(arr);int len=strlen(arr);//接下来定义一个reverse函数,翻转功能用这个函数实现//第一步实现字符串的整体翻转reverse(arr,arr+len-1);//单词翻转char*start=arr;while(*start){char*end=start;while(*end!' '&&*end!='\0'){end++;}//识别到' '或者是字符串的终止字符'\0',进行翻转操作reverse(start,end-1);if(*end==' ')start=end+1;elsestart=end;}printf("%s\n",arr);return 0;
}

程序思考

这个代码说难不难,说简单也不是很简单,想在这里跟大家分享一下以下经验:

  1. 在输入字符串的时候,不能采用scanf输入,要采用库函数中的gets()函数输入
    刚开始我在输入一段字符串时,也是采用了scanf()函数进行输入,最后发现结果不对.经过调试发现,scanf()函数在输入时,碰到’ ‘或者是’\0’就停止输入后面的字符了,导致我们在输入"I Love Beijing."时,编译器中只输进去了’I’,结果当然也是错的.
  2. 在进行单词翻转中,要用if语句判断一下,终止点是’ '还是‘\0’
    刚开始,我在最后判断的时候,没有判断最后end是‘ ’还是’\0’,统一将start=end+1,这样就带来了问题:
    假如我识别到’\0’,但是我仍然将start置为end+1,将’\0’跳了过去,这样就有可能会导致结果发生错误,所以为了让结果更加严谨,采用下面的这种方式:
       if(*end==' ')start=end+1;elsestart=end;

- 谢谢大家,希望对大家有所帮助!

[每日一题]C语言:将输入的一句话的单词倒置,但标点符号不倒置相关推荐

  1. 寒假每日一题——两句话中的不常见单词

    题目链接:https://leetcode-cn.com/problems/uncommon-words-from-two-sentences/ 题目描述 句子 是一串由空格分隔的单词.每个 单词 仅 ...

  2. LeetCode每日一题——792. 匹配子序列的单词数

    LeetCode每日一题系列 题目:792. 匹配子序列的单词数 难度:普通 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给定字符串 s 和字符串数组 words, 返回 w ...

  3. 输入两个数、用python求他们的和_从键盘上输入俩个实型数,编程求它们的和差积商,要求输出时,保留两位小数C语言编程题:从键盘上输入两个...

    从键盘上输入俩个实型数,编程求它们的和差积商,要求输出时,保留两位小数 C语言编程题:从键盘上输入两个 www.zhiqu.org     时间: 2020-11-23 参考代码: #includev ...

  4. java语言编程三角形图形_编程题:编写程序输入三角形的3条边长,计算并输出... 求助一道JAVA编程题:编写一个类似记事本的图形用......

    导航:网站首页 > 编程题:编写程序输入三角形的3条边长,计算并输出... 求助一道JAVA编程题:编写一个类似记事本的图形用... 编程题:编写程序输入三角形的3条边长,计算并输出... 求助 ...

  5. C语言入门必刷100题合集之每日一题(1-20)

    一.用C语言实现华氏温度转换为以摄氏法表示的温度. 解题思路:这个问题的算法很简单,关键在于找到二者之间的转化公式,摄氏度等于九分之五乘以华氏度减去32的积,也就是: centigrade=(5.0/ ...

  6. 【C语言蓝桥杯每日一题】—— 单词分析

    [C语言蓝桥杯每日一题]-- 单词分析

  7. 【C语言蓝桥杯每日一题】——跑步锻炼

    [C语言蓝桥杯每日一题]-- 跑步锻炼

  8. C语言入门必刷100题合集之每日一题(20-40)

    二十一:C语言实现打印菱形. 解题思路:这道题目的逻辑的很简单,本质来说还是循环的嵌套,然后就是一些简单的数学逻辑,有了上个题目心形表白的学习,看这道题应该很容易看懂.菱形一共分为两部分,菱形的上下部 ...

  9. 【C语言每日一题】——猜凶手

    [C语言每日一题]--猜名次

最新文章

  1. draw.io创建自定义形状
  2. 单片机模块学习之LED
  3. 基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET - 系统架构
  4. []==![]为true
  5. 构建高性能.NET应用之配置高可用IIS服务器-第一篇:IIS必须掌握的知识
  6. 多线程--对象及变量的并发访问
  7. Spring boot 日志 Logback
  8. 来和大家聊一聊“蓉叶云库”
  9. 对于注塑模具设计的原则,这些核心你掌握了吗?
  10. 基于btest.so的策略测试方案
  11. 出售永磁同步电机(pmsm)模型预测控制(MPC)matla b/simulink仿真模型,转速控制,电流控制,转矩控制,有PI矢量控制,直接预测控制(有限集模型预测控制)(这个其中包括做了单矢量和双
  12. 设置gvim中横竖光标_VIM配置高亮光标所在行和所在列
  13. DecoupleSegNets学习总结
  14. 葡萄酒数据集_如何使用数据科学来理解什么使葡萄酒味道更好
  15. 什么是API,SDK和API之间有什么关系呢?
  16. H.264中NALU、RBSP、SODB的关系 (弄清码流结构)
  17. idea 安装破解版mybatis插件
  18. 我的气垫船充满了鳗鱼
  19. ElasticSearch 文档检索、查询建议、数据聚合
  20. C\C++开发的经典魔塔小游戏--(3)主要逻辑处理,角色控制

热门文章

  1. 360安全安卫士自带的卸载程序的文件在哪里
  2. 故事要从我白嫖了一个阿里云服务器说起
  3. 强化学习之Grid World的Monte Carlo算法解析【MiniWorld】SYSU_2023SpringRL
  4. DCD、DTR、DSR、RTS及CTS等五个状态指示分别代表什么意思?
  5. 《腾讯网UED体验设计之旅》
  6. C语言简单教程一:编程的第一课
  7. 前后端项目的糅合模式mashup
  8. 微信小程序——添加广告
  9. FCPX视频剪辑Final Cut Pro X v10.5.4中文版 Macbook支持Silicon M1 附详细安装教程
  10. 与麻花兄弟诉苦兼讨论欠缺的知识