标签:
今天开始写了一道题
本来以为是一个直来直去的题,英语水平也不怎么样没怎么在意这句terminate by EOF,在这种情况下,编了一个基本的程序,果不其然,编译失败。好郁闷,新人做的第一道ACM题就被打击到了。于是哥打开了有道该句翻译为“通过EOF终止”,术语EOF意思是文件结束符(end of file),于是我开始疯狂百度,找到了这一题的正确解答(不得不说百度是个好东西,开心),以下是百度的一些解答,分享给自己和大家,别说的我盗版啊。只是留下来以后好看。
2011-08-08 13:22 第四步踏天仙逆 | 浏览 684 次
用c++解。
Input may contain multiple test cases. Each case contains A and B in one line.
A, B are hexadecimal number.
Input terminates by EOF.
Output
Output A+B in decimal number in one line.
主要是Input terminates by EOF不知道如何实现
int hd(char x)
{
char a[10]={‘0‘,‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘};
char b[7]={‘ ‘,‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘};
char c[7]={‘ ‘,‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘};
int i;
for(i=0;i<=9;i++)
{
if(x==a[i])
return i;
}
for(i=1;i<=6;i++)
{
if(x==b[i]||x==c[i])
return i+9;
}
}
这是我的代码,比较烦琐,通过不了。求解
分享到:
2011-08-08 20:39 提问者采纳
HDU1720吧。
#include <cstdio>
int main()
{
int a,b;
while(~scanf("%x %x",&a,&b))
printf("%d\n",a+b);
return 0;
}
scanf你们学过吧?
Input terminates by EOF主要通过while (scanf("%x %x",&a,&b)!=EOF)
或while (~scanf("%x %x",&a,&b)) 实现
其中的%x指带符号的16进制数
P.S: scanf需要头文件<cstdio>或<stdio.h>
还有啥不懂的请补充~
追问:
我学的c++,那种c语言输入没学,想问c++中怎么实现Input terminates by EOF,最好有完整代码。
追答:
嘛,scanf、printf这些有时间的话最好还是学一学,迟早会用到的,毕竟对于大型输入输出它们的速度比cin、cout快多了。不用scanf的代码如下:
#include <iostream>
using namespace std;
int main()
{
int a,b;
while(cin>>hex>>a>>hex>>b)
cout<<a+b<<endl;
return 0;
}
本题中实现Input terminates by EOF 靠得是while(cin>>hex>>a>>hex>>b)这句
其中的hex表示16进制格式
一般c++中实现Input terminates by EOF 都用while(cin>>x)就可以了
追问:
int main()
{
int hd(char x);
char a,b;
while(cin>>a>>b)
{
cout<<hd(a)+hd(b)<<endl;
}
return 0;
}
hd函数在补充的问题中。谢谢。
提问者评价
谢谢。
分享到:
专业回答
2015-05-20 15:43
while(cin>>a)
将会一直测试输入流是否正常,如果输入流正常,就会继续循环,如果输入流错误,或者达到文件末尾,循环就会终止。
本回答专业性由电脑网络分类达人 武岩认证
2010-11-27 00:39 提问者采纳
例如:
#include <iostream>
using namespace std;
int main()
{
int a;
while(cin>>a)
cout<<a<<endl;
return 0;
}
该代码会把从标准输入的整数打到标准输出,直到输入流到达文件末尾,或者输入流出错。
while(cin>>a)
将会一直测试输入流是否正常,如果输入流正常,就会继续循环,如果输入流错误,或者达到文件末尾(在windows下Ctrl+Z,在Linux下Ctrl+D),循环就会终止。
cin是istream类的一个C++预定义对象。
而istream重载了void * 和!等等一些运算符,
代码cin>>a之后返回还是一个cin对象的引用,此时cin会测试是否达到
文件末尾(会设置eofbit位),或者流出错(设置badbit或者failbit)。
进而去控制循环。
上面的代码也可以写成这样子。
#include <iostream>
using namespace std;
int main()
{
int a;
cin>>a;
while(a.good())
{
cout<<a<<endl;
cin>>a;
}
return 0;
}
可以进行cin>>a这样的调用,是因为istream为所有的基本数据类型重载了
>>运算符。
istream & operator >> (istream & is,基本数据类型)
标签:
原文地址:http://www.cnblogs.com/gemenjiegehuo/p/4786881.html