前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C语言典例】:倒置字符串

【C语言典例】:倒置字符串

作者头像
用户10517932
发布2023-10-07 13:07:22
2800
发布2023-10-07 13:07:22
举报
文章被收录于专栏:929KC

【C语言典例】:倒置字符串 链接: https://www.nowcoder.com/questionTerminal/b0ae3d72444a40e2bb14af7d4cb856ba 来源:牛客网

将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I

输入描述:
代码语言:javascript
复制
每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100
输出描述:
代码语言:javascript
复制
依次输出倒置之后的字符串,以空格分割

示例1

输入

代码语言:javascript
复制
I like beijing.

输出

代码语言:javascript
复制
beijing. like I

思路分析

通过观察得知,先对整个字符串逆序,后对字符串中每一个单词逆序便可解决此问题。

  1. 对整个字符串进行逆序
  2. 对字符串中的每一个单词进行逆序

如图所示

在这里插入图片描述
在这里插入图片描述

注意事项

不能使用scanf,因为scanf一遇到空格就中止,可以使用gets();或者 gets_s();

gets_s()的使用

首先将字符串逆序独立成一个逆序字符的函数

*str为字符串首地址,right为字符串中最后一个字母的下标,

代码语言:javascript
复制
void reseve(char* str, int left, int right)
{
    while (left < right)
    {
        char ch = str[left];
        str[left] = str[right];//交换字符串
        str[right] = ch;
        left++;
        right--;
    }
}

其次对字符串中的每一个单词进行逆序

代码语言:javascript
复制
     int temp = 0;//数组首元素的下标
    for (int i = 0; i < len + 1; i++).//遍历字符串
    {
        if (arr[i] == ' ' || arr[i] == 0)//遇到空格或者\0就需要单词逆序
        {
            reseve(arr, temp, i - 1);//调用逆序数组,  i为空格或者\0的下标 i-1为单词最后一个字母的下标
            temp = i + 1;//下一个单词的第一个字母的下标
        }
    }
全部代码

代码语言:javascript
复制
#include<string.h>
#include<stdio.h>

void reseve(char* str, int left, int right)
{
   while (left < right)
   {
       char ch = str[left];
       str[left] = str[right];
       str[right] = ch;
       left++;
       right--;
   }
}

int main()
{
   char arr[100] = { 0 };
   gets_s(arr,100);
   int len = strlen(arr);
   reseve(arr, 0, len - 1);

   
   int temp = 0;
   for (int i = 0; i < len + 1; i++)
   {
       if (arr[i] == ' ' || arr[i] == 0)
       {
           reseve(arr, temp, i - 1);
           temp = i + 1;
       }
   }

   printf("%s", arr);
   return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【C语言典例】:倒置字符串 链接: https://www.nowcoder.com/questionTerminal/b0ae3d72444a40e2bb14af7d4cb856ba 来源:牛客网
    • 输入
      • 输出
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档