C语言描述,将一句话的单词进行倒置,标点符号不倒置。

Posted 小赵小赵福星高照~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言描述,将一句话的单词进行倒置,标点符号不倒置。相关的知识,希望对你有一定的参考价值。

题目描述

将一句话的单词进行倒置,标点符号不倒置。

输入示例

每次输入一个测试用例,输入长度不超过100

I love you.

输出实例

依次输出倒置后的字符串,以空格分割

you. love I

#include<stdio.h>
#include<string.h>
#include<assert.h>
void ReverseArr(char* begin, char* end)
{
    assert(begin && end);
    while (begin < end)
    {
        char temp = *begin;
        *begin = *end;
        *end = temp;
        begin++;
        end--;
    }
}
int main()
{
    char arr[100] = { 0 };
    gets(arr);
    int sz = strlen(arr);
    //1.将字符串所有都逆序
    ReverseArr(arr, arr + sz - 1);//将数组首地址和数组末地址传过去
    //uoy evol I
    //2.再逆序每个单词
    char* start = arr;
    while (*start)
    {
        char* end = start;
        while(*end != ' ' && *end != '\\0')//uoy evol I
        {
            end++;
        }//出循环*end为' '或者'\\0'
        ReverseArr(start, end - 1);
        //当*end为字符空格时,说明后面还有单词,end+1指向下一个单词的起始位置
        if (*end == ' ')
        {
            start = end + 1;
        }
        else//此时*end为'\\0',说明已经结束,将end指向赋给start,结束大循环,所有单词逆序完成
        {
            start = end;
        }
    }
    printf("%s\\n", arr);
    return 0;
}

另一种写法:

#include<stdio.h>
#include<string.h>
#include<assert.h>
void ReverseArr(char *begin,char *end)
{
    assert(begin && end);
    while(begin<end)
    {
        char temp=*begin;
        *begin=*end;
        *end=temp;
        begin++;
        end--;
    }
}
int main()
{
    char arr[100]={0};
    gets(arr);
    int sz=strlen(arr);
    //1.逆序整个字符串
    ReverseArr(arr,arr+sz-1);
    //uoy evol I
    //2.逆序每个单词
    int i=0;
    int j=0;
    for(i=0;i<sz;i++)
    {
        if(arr[i]==' ')
        {
            ReverseArr(arr+j,arr+i-1);
        }
        j=i+1;
        if(i==sz-1)
        {
            ReverseArr(arr+j,arr+i)
        }
    }
    return 0;
}

image-20210520185555639

以上是关于C语言描述,将一句话的单词进行倒置,标点符号不倒置。的主要内容,如果未能解决你的问题,请参考以下文章

将一句话里的单词进行倒置,标点符号不倒换。比如将“I come from Shanghai.”倒换后变为“Shanghai. from come I”

C语言实现来实现字符串反转,只有单词顺序反转,组成单词的字母不反转

腾讯移动客户端笔试记录

C语言逆置字符串

倒置字符串

倒置字符串