傳送門
https://pintia.cn/problem-sets/994805260223102976/problems/994805314941992960
題目
給定一句英語,要求你編寫程序,將句中所有單詞的順序顛倒輸出。
輸入格式:測試輸入包含一個測試用例,在一行內(nèi)給出總長度不超過80的字符串。字符串由若干單詞和若干空格組成,其中單詞是由英文字母(大小寫有區(qū)分)組成的字符串,單詞之間用1個空格分開,輸入保證句子末尾沒有多余的空格。
輸出格式:每個測試用例的輸出占一行,輸出倒序后的句子。
輸入樣例:
Hello World Here I Come
輸出樣例:
Come I Here World Hello
分析
C++實現(xiàn)方法:
這里我參考了別人的代碼,運用了一個小方法。
1.先從尾部遍歷數(shù)組,找到空格的時候就將空格后面的輸出;
2.輸出后,將空格替換為\0,這也是字符串終止的標志;
3.然后向前遍歷,找到空格是繼續(xù)將空格后面的內(nèi)容輸出,因為將后面的空格替換為\0了,所以輸出完這個單詞就會終止,以此類推直到遍歷到數(shù)組頭部終止,即可。
Java實現(xiàn)方法:
這道題用Java做簡直是輕而易舉,因為Java為字符串提供了split函數(shù),可以通過指定字符串來分割字符串并放入新的字符串數(shù)組里,處理完字符串后,只需要倒序輸出字符串數(shù)組,并加入空格即可。
源代碼
//C/C++實現(xiàn)
#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
int main(){
char c[82];
gets(c+1);
c[0] = ' ';
for(int i=strlen(c);i>=0;i--){
if(c[i] == ' '){
printf("%s", c+i+1);
c[i] = '\0';
if(i == 0){
printf("%c", '\n');
}
else{
printf("%c", ' ');
}
}
else{
continue;
}
}
return 0;
}
//Java實現(xiàn)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
String array[] = s.split(" ");
int i=array.length-1;
for(;i>0;i--){
System.out.print(array[i]+" ");
}
System.out.println(array[i]);
}
}