#每日一题,语句逆序 您所在的位置:网站首页 数组逆序输出 #每日一题,语句逆序

#每日一题,语句逆序

2023-06-04 09:40| 来源: 网络整理| 查看: 265

文章目录 题目思路解题图解及代码

大家好,今天我们来看这道题:

题目

将一句话的单词进行倒置,标点不倒置。比如 “I like beijing.”,经过处理后变为:“beijing. like I”。 字符串长度不超过100。 输入描述:输入一个仅包含小写字母、空格、‘.’ 的字符串,长度不超过100。 ‘.’ 只出现在最后一个单词的末尾。 输出描述:依次输出倒置之后的字符串,以空格分割。

思路

我们可以先逆序整句再逆序每个单词 接下来让我们看如何实现吧!

解题

首先可以逆序整个字符串将首地址和首地址+字符串长度-1(数组下表从0开始)传入逆序函数,完成对整个字符串的逆序 start 和 cur 先同时指向起始位置然后遍历字符串,没有找到空格或没结束都给cur+1继续寻找 找到空格后,将start作为left 和 cur-1字符作为right传入逆序函数 完成中间这组单词的逆序

在这里插入图片描述 完成一个单词的逆序之后把cur+1的指向start作为下一个起始点 cur指针继续遍历,直到出现下一个空格重复以上步骤 所以我们可以看出这是一个循环,当cur指向为’\0’时跳出循环 在这里插入图片描述

图解及代码

单词逆序·

#include #include void reverse(char* left, char* right) { while(left char arr[101] = {0}; gets(arr); int len = strlen(arr); int i = 0; //整体交换 reverse(arr,arr+len-1); //printf("%s", arr); //逆序成功 //交换每个单词 char* start = arr; //start指向起始位置 char* cur = arr; while (*cur) { //cur指向空格位置或'\0'时停止 while (*cur != ' ' && *cur != '\0') { cur++; } reverse(start, cur - 1); start = cur + 1; if (*cur == ' ') { cur++; } } printf("%s\n", arr); return 0; }

在这里插入图片描述 今天的每日一题就到这里了,欢迎大家点赞收藏,关注我一起成长!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有