ACM/OJ输入输出Tips
ACM竞赛题目和OJ的输入数据和输出数据一般有多组(不定),并且格式多种多样,所以,如何处理题目的输入输出是对大家的一项最基本的要求。这也是困扰初学者的一大问题。
1.使用纯C
输入:
- 读取一个字符串:scanf("%s",&s);
- 读取一个整数:scanf("%d",&d);
- 读取一个浮点数:scanf("%f",&f);
- 读取一整行:gets(str);
多组数据处理:
- while(~scanf("%d",&d)),读取多组数据(数据不能有空格,因为scanf把空格和换行符当成一次输入的结束) ,Windows按Ctrl+Z跳出循环,Linux按Ctrl+D退出循环
- while(scanf("%d",&d)!=EOF),和上一个作用一样,EOF是END OF FILE的缩写,表示输入缓冲区的结束) ,退出循环方法同上
- while(gets(str)),str是数组名,不能是C++里的数组,因为gets是c函数,不支持c++的string
2.使用C++
输入:
- 读取一个字符串:cin>>s;
- 读取一个整数:cin>>d;
- 读取一个浮点数:cin>>f;
- 读取一整行:getline(cin,str);
3.使用Java
输入:
- 格式1:Scanner sc = new Scanner (System.in);
- 格式2:Scanner sc = new Scanner (new BufferedInputStream(System.in));
- 格式3:BufferedReader br = new BufferedReader(new InputStreamReader(System.in));