2021-05-02

#PAT练习9

1009 说反话 (20 分)

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:

测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。

输出格式:

每个测试用例的输出占一行,输出倒序后的句子。

输入样例:

Hello World Here I Come

输出样例:

Come I Here World Hello

##题解

###题目分析

给定一个英语句子,要求颠倒单词顺序,句子中的单词不变。

###思路

1.我本身写的代码过于复杂不够精简,在查看了另外一个大佬的题解后说下思路

2.可以先通过strlen函数判断句子字符总数,以此可以通过for语句对整个字符串由后往前进行遍历。

3.遍历过程中,通过对空格的检测,再输出空格后面的字符串,在将空格变为结束符使下一次输出是输出一个单词。

4.最后再直接输出第一个单词

###代码

####我

#include<stdio.h>
#include<string.h>
#define M 200
int main()
{
    char array[M];
    int i=0,count=0,b[M],j,r;
    gets(array);
    while(array[i]!='\0')
    {
        if(array[i]==' ')
            {
                b[count]=i;
                count+=1;
            }
        i+=1;
    }
    r=count+1;
    while(r--){
    if(count>=0)
    j=b[count-1]+1;
    count-=1;
    if(count<0)
        j=0;
    while(array[j]!='\0'&&array[j]!=' ')
    {
        printf("%c",array[j]);
        j+=1;
    }
     j=0;
        if(count>=0)
       printf(" ");
    }
    return 0;
}
####大佬的

#include <stdio.h>
#include <string.h> 

int main() {
    char str[81]; //创建字符串
    gets(str); //读取字符串
    int i = 0; //数组下标 
    for (i = strlen(str); i > 0; i--) { //从末尾开始遍历字符串 
        if (str[i] == ' ') { //如果遇到空格 
            printf("%s ", &str[i+1]); //输出空格后的单词 
            str[i] = '\0'; //把空格改为 \0,使后续输出也只有一个单词
        }   
    } 
    printf("%s", &str[i]); //输出原字符串的第一个单词 
    return 0; 
}
————————————————
版权声明:本文为CSDN博主「对方北方」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39345384/article/details/82220001

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值