当前位置:网站首页>将一句话的单词进行倒置(C语言纯代码)
将一句话的单词进行倒置(C语言纯代码)
2022-08-05 05:17:00 【Captain林】
一、例题
将一句话的单词进行倒置,标点不倒置。比如 I like beijing.经过函数后变为:beijing.like I
示例1:
输入
I like beijing.
输出
beijing.like I
二、统筹解析版
#include <stdio.h>
#include <assert.h>
void reverse(char* l, char* r)
{
assert(l && r);//检查指针是否位NULL
while (l < r)
{
char tmp = *l;
*l = *r;
*r = tmp;
l++;
r--;
}
}
int main()
{
char arr[100] = { 0 };
//输入
gets(arr);
int len = strlen(arr);
//逆序
//1. 逆序整个字符串
char* left = arr;
char* right = arr + len - 1;
reverse(left, right);
//2. 逆序每个单词
char* cur = arr;
char* start = arr;//一个单词的第一个字母的地址
while (*cur != '\0')//循环到结尾
{
while (*cur != ' ' && *cur != '\0')//单词后空格或结尾停止,该循环过后直接去到单词最后一个字母的地址
{
cur++;
}
reverse(start, cur - 1);//逆序单词
start = cur + 1;//初始指针跳到第二个单词上
if (*cur != '\0')//如果不是末尾,cur指针跳到第二个单词上,重新开始第一个大循环
cur++;
}
printf("%s\n", arr);//输出逆序数组
return 0;
}三、初学者易错分析重构版
#include<assert.h>
#include<stdio.h>
void reserve(char* left, char* right)
{
assert(left && right);
while (left < right)
{
char temp = *left;
*left = *right;
*right = temp;
//指针在每次循环后要进行加位,否则不能调换这段字符串
left++;
//指针在每次循环后要进行减位,否则不能调换这段字符串
right--;
}
}
int main()
{
//输入
char arr[100] = { 0 };
gets(arr);//gets函数输入可以存入包括空格在内的字符
//整个数组逆序 - 设计一个函数reserve实现逆序
//如何定义函数?
char* left = arr;//这里的指针也要用char类型储存
int len = strlen(arr) - 1;
char* right = arr + len;
reserve(left, right);
//单词逆序
char* start = arr;
char* cur = arr;
while (*cur != '\0')//while后面不用加;
{
while (*cur != ' ' && *cur != '\0')//这里既不可以是空格,也不可以是结尾,因此要用&&
{
cur++;
}
reserve(start, cur - 1);//这里跳出循环后,cur的值应该是空格或是'\0'
start = cur + 1;
//if (*cur != '\0')
cur += 1;
}
//输出
printf("%s", arr);
return 0;
}四、结语
我是计算机海洋的新进船长Captain_ldx,如果我的文章能对您有帮助的话,麻烦各位观众姥爷们点赞、收藏、关注我吧!如果你对我的文章有任何问题或者意见,欢迎在评论区给我留言。后期C语言的知识点将持续更新......
边栏推荐
- 【论文精读】R-CNN 之预测框回归(Bounding box regression)问题详述
- Redis集群(docker版)——从原理到实战超详细
- 【ts】typescript高阶:联合类型与交叉类型
- CH32V307 LwIP移植使用
- 【数据库和SQL学习笔记】9.(T-SQL语言)定义变量、高级查询、流程控制(条件、循环等)
- leetCode刷题之第31题
- 关于使用QML的MediaPlayer实现视频和音频的播放时遇到的一些坑
- 「实用」运维新手一定不能错过的17 个技巧
- 【Shell编程】第一章:子串
- 【论文精读】ROC和PR曲线的关系(The relationship between Precision-Recall and ROC curves)
猜你喜欢

【ts】typescript高阶:模版字面量类型

ECCV2022 | RU & Google propose zero-shot object detection with CLIP!

You should write like this

手把手教你搭建小程序

【论文精读】Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation(R-CNN)

八、响应处理——ReturnValueHandler匹配返回值处理器并处理返回值原理解析

网工必用神器:网络排查工具MTR

LeetCode刷题之第74题

网络ID,广播地址,掩码位数计算

四、Web场景之静态资源配置原理
随机推荐
Redis设计与实现(第二部分):单机数据库的实现
原来何恺明提出的MAE还是一种数据增强
SharedPreferences and SQlite database
The University of Göttingen proposed CLIPSeg, a model that can perform three segmentation tasks at the same time
亲身实感十多年的面试官面试的题目
[Kaggle project actual combat record] Steps and ideas sharing of a picture classification project - taking leaf classification as an example (using Pytorch)
【ts】typescript高阶:映射类型与keyof
MSRA提出学习实例和分布式视觉表示的极端掩蔽模型ExtreMA
伪RTOS-ProroThread在CH573芯片上的移植
[Pytorch study notes] 9. How to evaluate the classification results of the classifier - using confusion matrix, F1-score, ROC curve, PR curve, etc. (taking Softmax binary classification as an example)
1004 成绩排名 (20 分)
「实用」运维新手一定不能错过的17 个技巧
LeetCode刷题之第86题
【Over 15】A week of learning lstm
CVPR2021 - Inception Convolution with Efficient Dilation Search
全尺度表示的上下文非局部对齐
【Pytorch学习笔记】11.取Dataset的子集、给Dataset打乱顺序的方法(使用Subset、random_split)
CVPR2020 - 自校准卷积
【Promise高级用法】实现并行和串行API
读论文 - Unpaired Portrait Drawing Generation via Asymmetric Cycle Mapping