其他分享
首页 > 其他分享> > C语言-7-32 说反话-加强版 (20 分

C语言-7-32 说反话-加强版 (20 分

作者:互联网

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

输入格式:

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

输出格式:

每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。

#include<stdio.h>
#include<string.h>
int main(){
    char ch[500001];//如果是用char *ch定义一定要用malloc函数申请空间  ch = (char*)malloc(sizeof(ch));
    int flag = 0;
    gets(ch);
    int l = strlen(ch)-1;
    int x = 0;
   while(l){
       if(ch[l]!=' ')
           x++;
       else{
           ch[l] = '\0';
           if(x)
           {if(flag)
               putchar(' ');
           printf("%s",ch+l+1);//ch+x 即可以输入ch【x】直到'\0'出现的所有字符 而ch【x】只能输出一个字符串
           x = 0;
           flag = 1;}
       }
       l--;
   }
    if(x&&flag)
        putchar(' ');
    if(x)
        printf("%s",ch);
    printf("\n");
    return 0;
}

这道题其实并不用改变数组的结构 刚开始我总想改变数组来做 在网上搜了别人的代码发现不需要改变数组 只要从后向前输出就好

标签:输出,ch,20,加强版,int,32,单词,flag,printf
来源: https://www.cnblogs.com/L-1906/p/16074054.html