算法笔记刷题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;
}