acm之奇葩数据输入专题:
1.每組测试数据都在一行,不知道每组测试数据的长度,以换行为测试数据输入的结束
关键代码:if (cin.get() == '\n') {语句}
举个栗子:找出每组测试的最大值,每行数据第一个数字是测试数据量:
输入: 3 1 4 2 3//3个数据 5 1 4 2 -1 6//5个数据 输出: 4 6
代码:
#include<iostream> using namespace std; #define inf -922337 int main() { int max=inf,t; while(cin>>t){ if(t>max) max=t; if(cin.get()=='\n'){ cout<<max<<endl; max=inf; } }}
题目链接:https://cn.vjudge.net/problem/HDU-6297
题目介绍:一道关于输出格式规范问题
wrong answer代码:
错误点:
1.识别Tstr字符串是否为“Running"时,只以首字母标记(Tstr[0]=='R'),导致识别资料不足,可以识别“RTE"与”Running",识别混乱,所以改成(Tstr==”Running")
2.与输出样式相比,末尾多输出了一个空格
ac代码:
接下来,我们来学习一下常用的输出格式:
头文件:#include<iomanip>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
以下是一些常用的:
dec 置基数为10 相当于
"%d"
hex 置基数为16 相当于
"%X"
oct 置基数为8 相当于
"%o"
setfill(c) 设填充字符为c
setprecision(n) 设显示小数精度为n位
setw(n) 设域宽为n个字符
setioflags(ios::
fixed
) 固定的浮点显示
setioflags(ios::scientific) 指数表示
setiosflags(ios::left) 左对齐
setiosflags(ios::right) 右对齐
setiosflags(ios::skipws 忽略前导空白
setiosflags(ios::uppercase) 16进制数大写输出
setiosflags(ios::lowercase) 16进制小写输出
setiosflags(ios::showpoint) 强制显示小数点
setiosflags(ios::showpos) 强制显示符号
|
代码举例:
19|qqqqq_University|1001|[XXX ] 125|quailty_U_2 |1002|[ WA ] 4|quailty_U_3 |1003|[ TLE ]
比如上面的那道题,需要用到输出时每个数据是 右对齐3 左对齐16 4 10
像第一个数据需要右对齐:cout<<right<<setw(3)<<Rank<<"|";
第二个数据需要左对齐:cout<<left<<setw(16)<<name<<"|";
第三个数据左对齐:cout<<left<<setw(4)<<pro<<"|[";
第四个需要分类:
针对下面两个的类型:输出字符串,但字符串是居中的(我们可以这样处理:先输出四个空字符,然后对字符串进行左对齐:cout<<" "<<setw(6)<<status<<"]"<<endl;
题目链接:https://cn.vjudge.net/problem/HDU-6297
题目介绍:一道关于输出格式规范问题
wrong answer代码:
错误点:
1.识别Tstr字符串是否为“Running"时,只以首字母标记(Tstr[0]=='R'),导致识别资料不足,可以识别“RTE"与”Running",识别混乱,所以改成(Tstr==”Running")
2.与输出样式相比,末尾多输出了一个空格
ac代码:
接下来,我们来学习一下常用的输出格式:
头文件:#include<iomanip>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
以下是一些常用的:
dec 置基数为10 相当于
"%d"
hex 置基数为16 相当于
"%X"
oct 置基数为8 相当于
"%o"
setfill(c) 设填充字符为c
setprecision(n) 设显示小数精度为n位
setw(n) 设域宽为n个字符
setioflags(ios::
fixed
) 固定的浮点显示
setioflags(ios::scientific) 指数表示
setiosflags(ios::left) 左对齐
setiosflags(ios::right) 右对齐
setiosflags(ios::skipws 忽略前导空白
setiosflags(ios::uppercase) 16进制数大写输出
setiosflags(ios::lowercase) 16进制小写输出
setiosflags(ios::showpoint) 强制显示小数点
setiosflags(ios::showpos) 强制显示符号
|
代码举例:
19|qqqqq_University|1001|[XXX ] 125|quailty_U_2 |1002|[ WA ] 4|quailty_U_3 |1003|[ TLE ]
比如上面的那道题,需要用到输出时每个数据是 右对齐3 左对齐16 4 10
像第一个数据需要右对齐:cout<<right<<setw(3)<<Rank<<"|";
第二个数据需要左对齐:cout<<left<<setw(16)<<name<<"|";
第三个数据左对齐:cout<<left<<setw(4)<<pro<<"|[";
第四个需要分类:
针对下面两个的类型:输出字符串,但字符串是居中的(我们可以这样处理:先输出四个空字符,然后对字符串进行左对齐:cout<<" "<<setw(6)<<status<<"]"<<endl;