1009 說反話 (20 分)


題目:1009 說反話 (20 分)

給定一句英語,要求你編寫程序,將句中所有單詞的順序顛倒輸出。

輸入格式:

測試輸入包含一個測試用例,在一行內給出總長度不超過 80 的字符串。字符串由若干單詞和若干空格組成,其中單詞是由英文字母(大小寫有區分)組成的字符串,單詞之間用 1 個空格分開,輸入保證句子末尾沒有多余的空格。

輸出格式:

每個測試用例的輸出占一行,輸出倒序后的句子。

輸入樣例:

Hello World Here I Come

輸出樣例:

Come I Here World Hello
TIM截圖20190116215013.png

首先給出我最初的想法實現,提交后只是部分答案正確,至於為什么有部分答案錯誤實在沒弄清楚,如果你可以幫我看出來,請在評論區指出,謝謝。

#include <iostream>
#include<string>
using namespace std;

int main()
{	
	char str[81]=" ";
	cin.get(str, 81);
	int i,j;
	i = 80;
	while (str[i] == '\0') {
		i--;
	}
	j = i;
	i++;
	for (j;j > 0;j--) {
		if (str[j] == ' ') {
			int k = j;
			k++;
			for (k;k <= i;k++) {
				cout << str[k];
			}
			i = j;
		}
	}
	for (j;j < i;j++) {
		cout << str[j];
	}
	return 0;
}

本題的解題思路:

我們首先使用一個字符數組來接收含有空格的字符串,采用cin.get(字符數組名,接收字符數目)
再使用一個二維數組來對單詞進行分隔,每一行代表一個單詞,列號代表單詞的輸入順序。
最后按列號逆序輸出即可。

#include <iostream>
#include<string>
using namespace std;

int main()
{	
	char str[90][90];
	char in[90]=" ";
	int h = 0,l = 0;
	cin.get(in, 90);
	for (int i = 0;i < 90;i++) {
		if (in[i] != ' ') {
			str[h][l++] = in[i];
		}
		else {
			str[h][l] = '\0';
			h++;
			l = 0;
		}
	}int num = 0;
	while (h >= 0) {
		if (num > 0) {
			cout << " ";
		}
		num++;
		cout << str[h];
		h--;
	}
	return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM