ACM/OJ输入输出Tips

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));
原文地址:https://www.cnblogs.com/umrx/p/7750243.html