很容易可以看到,本题考查的主要是输入输出流函数的使用。
这里使用的思路是,正常使用cin读入单词,然后使用**getchar()**函数读入下一个字符,然后判断该字符是否为换行符。若为空格,则证明输入未完毕。若为换行符,则读入完毕。
cin一般情况下来说,会忽略空格符以及换行符。因此,我们这里必须使用getchar函数来判断下一个字符是否未空格或者换行。
首先,我们测试一下getchar是否能读入空格或者换行符。
使用简单的一段代码:
#include <iostream>
int main(){
char blank = getchar();
char enter = getchar();
std::cout << "blank" << blank << "blank" << std::endl;
std::cout << std::endl;
std::cout << "enter" << enter << "enter" << std::endl;
}
首先,输入一个空格,然后输入一个回车,看一看会输出什么。
可以看到这里char类型变量blank读入了一个空格符,同时enter变量读入了换行符。验证完毕,我们可以使用getchar函数来解决1009题目中的问题。
下面是题解代码:
#include <iostream>
int main(){
std::string s[80];
char ch; //接收空格或回车
int i;
for( i = 0; i < 80;i ++){
// 读入单词
std::cin >> s[i];
ch = getchar();
// 若单词后为空格,则继续读入;若为换行符,则跳出循环
if(ch == '\n') break;
}
//输出
for(int j = i;j > 0;j --){
std::cout << s[j] << " ";
}
std::cout << s[0];
return 0;
}
提交一下:
成功通过。