题目 1094: 字符串的输入输出处理
题目描述
字符串的输入输出处理。
输入
第一行是一个正整数N,最大为100。之后是多行字符串(行数大于N), 每一行字符串可能含有空格,字符数不超过1000。
输出
先将输入中的前N行字符串(可能含有空格)原样输出,再将余下的字符串(不含有空格)以空格或回车分割依次按行输出。每行输出之间输出一个空行。
样例输入
2
www.dotcpp.com DOTCPP
A C M
D O T CPP
样例输出
www.dotcpp.com DOTCPP
A C M
D
O
T
CPP
思路:
这是一道很基础的题目,考察对于字符串的认识以及运用,但是很奇怪的一点是,我给出的答案跟题目要求不太一样但还是给过了,很迷。
C++的代码:
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
cin >> n;
getchar();
string s;
for(int i = 0; i < n; i++)
{
getline(cin,s);
cout << s << endl << endl;
}
while(cin >> s)
{
cout << s << endl << endl;
}
return 0;
}
JAVA的代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
for (int i = 0; i < n; i++ )
{
String str = s.nextLine();
System.out.println(str + "\n");
}
while(s.hasNext())
{
String str2 = s.next();
System.out.println(str2 + "\n");
}
s.close();
}
}
两者的结果完全相同。
备注:为什么在第一个for循环之前要用一个.nextLine()?原因是没它不能AC,我想了想也许是第一行没有存进数据,兴许各位大佬能够给出点结论。