[每日一题]C语言:将输入的一句话的单词倒置,但标点符号不倒置
文章目录
- 题目内容
- 题目分析
- 代码实现
- 程序思考
题目内容
- 牛客网上刷题碰到的:将一句话的单词进行倒置,其中标点符号不倒置.
- 例如输入一句话"I Love Beijing."要求输入为:"Beijing. Love I"
题目分析
刚开始看到这个题目的时候,脑子里没有思路:
1. 如何计算出输入的单词的长度并进行翻转
2.如何将标点符号做到不随单词进行翻转
认真考虑了之后,觉得可以分为以下几个步骤:
- 字符串的整体翻转
将输入的"I Love Beijing.“翻转成”.gnijieB ekiL I" - 单词的逆序翻转
在上步的基础上,将单词进行翻转,".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;
}
程序思考
这个代码说难不难,说简单也不是很简单,想在这里跟大家分享一下以下经验:
- 在输入字符串的时候,不能采用scanf输入,要采用库函数中的gets()函数输入
刚开始我在输入一段字符串时,也是采用了scanf()函数进行输入,最后发现结果不对.经过调试发现,scanf()函数在输入时,碰到’ ‘或者是’\0’就停止输入后面的字符了,导致我们在输入"I Love Beijing."时,编译器中只输进去了’I’,结果当然也是错的.
- 在进行单词翻转中,要用if语句判断一下,终止点是’ '还是‘\0’
刚开始,我在最后判断的时候,没有判断最后end是‘ ’还是’\0’,统一将start=end+1,这样就带来了问题:
假如我识别到’\0’,但是我仍然将start置为end+1,将’\0’跳了过去,这样就有可能会导致结果发生错误,所以为了让结果更加严谨,采用下面的这种方式:
if(*end==' ')start=end+1;elsestart=end;
- 谢谢大家,希望对大家有所帮助!
[每日一题]C语言:将输入的一句话的单词倒置,但标点符号不倒置相关推荐
- 寒假每日一题——两句话中的不常见单词
题目链接:https://leetcode-cn.com/problems/uncommon-words-from-two-sentences/ 题目描述 句子 是一串由空格分隔的单词.每个 单词 仅 ...
- LeetCode每日一题——792. 匹配子序列的单词数
LeetCode每日一题系列 题目:792. 匹配子序列的单词数 难度:普通 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给定字符串 s 和字符串数组 words, 返回 w ...
- 输入两个数、用python求他们的和_从键盘上输入俩个实型数,编程求它们的和差积商,要求输出时,保留两位小数C语言编程题:从键盘上输入两个...
从键盘上输入俩个实型数,编程求它们的和差积商,要求输出时,保留两位小数 C语言编程题:从键盘上输入两个 www.zhiqu.org 时间: 2020-11-23 参考代码: #includev ...
- java语言编程三角形图形_编程题:编写程序输入三角形的3条边长,计算并输出... 求助一道JAVA编程题:编写一个类似记事本的图形用......
导航:网站首页 > 编程题:编写程序输入三角形的3条边长,计算并输出... 求助一道JAVA编程题:编写一个类似记事本的图形用... 编程题:编写程序输入三角形的3条边长,计算并输出... 求助 ...
- C语言入门必刷100题合集之每日一题(1-20)
一.用C语言实现华氏温度转换为以摄氏法表示的温度. 解题思路:这个问题的算法很简单,关键在于找到二者之间的转化公式,摄氏度等于九分之五乘以华氏度减去32的积,也就是: centigrade=(5.0/ ...
- 【C语言蓝桥杯每日一题】—— 单词分析
[C语言蓝桥杯每日一题]-- 单词分析
- 【C语言蓝桥杯每日一题】——跑步锻炼
[C语言蓝桥杯每日一题]-- 跑步锻炼
- C语言入门必刷100题合集之每日一题(20-40)
二十一:C语言实现打印菱形. 解题思路:这道题目的逻辑的很简单,本质来说还是循环的嵌套,然后就是一些简单的数学逻辑,有了上个题目心形表白的学习,看这道题应该很容易看懂.菱形一共分为两部分,菱形的上下部 ...
- 【C语言每日一题】——猜凶手
[C语言每日一题]--猜名次
最新文章
- draw.io创建自定义形状
- 单片机模块学习之LED
- 基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET - 系统架构
- []==![]为true
- 构建高性能.NET应用之配置高可用IIS服务器-第一篇:IIS必须掌握的知识
- 多线程--对象及变量的并发访问
- Spring boot 日志 Logback
- 来和大家聊一聊“蓉叶云库”
- 对于注塑模具设计的原则,这些核心你掌握了吗?
- 基于btest.so的策略测试方案
- 出售永磁同步电机(pmsm)模型预测控制(MPC)matla b/simulink仿真模型,转速控制,电流控制,转矩控制,有PI矢量控制,直接预测控制(有限集模型预测控制)(这个其中包括做了单矢量和双
- 设置gvim中横竖光标_VIM配置高亮光标所在行和所在列
- DecoupleSegNets学习总结
- 葡萄酒数据集_如何使用数据科学来理解什么使葡萄酒味道更好
- 什么是API,SDK和API之间有什么关系呢?
- H.264中NALU、RBSP、SODB的关系 (弄清码流结构)
- idea 安装破解版mybatis插件
- 我的气垫船充满了鳗鱼
- ElasticSearch 文档检索、查询建议、数据聚合
- C\C++开发的经典魔塔小游戏--(3)主要逻辑处理,角色控制