算法笔记刷题8(PAT1009)

算法笔记刷题8(PAT1009)

题目

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

输入格式:

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

输出格式:

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

输入样例:

Hello World Here I Come

输出样例:

Come I Here World Hello

这一题其实非常简单,我之前在c语言的题库里面就做过一遍。但是我字符串实在学得太烂了,导致我只好重新给代码加了一遍注释。(你好烂哦)

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int main(){
    char str[81];
    cin.getline(str,81);//没有用getchar(),否则有些编译器有奇奇怪怪的问题
    int i=0,k=1,let[81];
    let[0]=-1;
    while(str[i]!=''){
    	if(str[i]==' '){
    		let[k++]=i;//记录空格的位置
		}
		i++;
	}
	let[k]=strlen(str);//记录字符串的长度
	for(int i=k;i>0;i--){
		for(int j=let[i-1]+1;j<let[i];j++){
				printf("%c",str[j]);//倒序输出字符串	
			}
		if(i!=1)printf(" ");
	}
    return 0;
}

原文地址:https://www.cnblogs.com/yiyefuyou/p/12879224.html