刚开始刷OJ题的时候总少不了出一些answer wrong的问题.对于新手来说很有可能就是因为输入输出控制不规范.当然也有可能是因为你的解决思路还不完善,承受不了测试的狂轰乱炸.今天,只总结一下关于输入输出的控制.
一.无限输入(变量不限,以下均以两个为例)
1.while(cin>>a>>b)
2.while(scanf("%d%d",&n,&m)!=EOF)
3.while(1) cin>>a>>b;
杭电OJ示例:
http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=1&problemid=3001
二.有条件输入
1.while(cin>>a>>b&&(a!=-1||b!=-1)) (以都等于-1结束)
2.while(cin>>a&&a!=0) (以输入开头为0的测试结束)
杭电OJ示例:
http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=1&problemid=3003
http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=1&problemid=3004
三.给定了输入测试案例个数
1.比如先输入t=2控制个数,然后输入2个测试案例
cin>>t
while(t--){cin>>a>>b}
2.
cin>>n;
int i=0;
while(i<n&&cin>>a>>b)
{
//cout<<a+b<<endl;
i++;
}
杭电OJ示例:
http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=1&problemid=3002
四.每次输出答案后然后是空行
while(cin>>a>>b)
{
cout<<a+b<<endl;
cout<<endl;
}
五.输出小数,整数时的控制
#include <iostream>
#include <stdio.h>
#include <iomanip>
using namespace std;
const int m = 30;
int main()
{
int a=9;
double b=3.1415926;
float c=3.1415926;
double d=3.1415926;
printf("%3d\n",a);
printf("%.3f\n",b);
printf("%.4f\n",c);
cout<<fixed<<setprecision(5)<<d<<endl;
return 0;
}
六.其它输出控制(按要求输出字符串)
YES NO之类,注意大小写;
注意输出数字前是否需要加$,#等符号
杭电OJ示例:
http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=2&problemid=7
http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=2&problemid=9
以上所有杭电示例由于主要考察输入输出控制,所以AC代码不再一一列出