码迷,mamicode.com
首页 > 其他好文 > 详细

关于A+B的一点点看法和总结

时间:2015-09-06 20:01:44      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

今天开始写了一道题技术分享

本来以为是一个直来直去的题,英语水平也不怎么样没怎么在意这句terminate by EOF,在这种情况下,编了一个基本的程序,果不其然,编译失败。好郁闷,新人做的第一道ACM题就被打击到了。于是哥打开了有道该句翻译为“通过EOF终止”,术语EOF意思是文件结束符(end of file),于是我开始疯狂百度,找到了这一题的正确解答(不得不说百度是个好东西,开心),以下是百度的一些解答,分享给自己和大家,别说的我盗版啊。只是留下来以后好看。

A+B Coming 

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函数在补充的问题中。谢谢。

提问者评价

谢谢。

C++中while(cin>>a)是什么意思 

C语言编程

分享到: 

 

专业回答

wchyumo2011 

2015-05-20 15:43 

while(cin>>a)

将会一直测试输入流是否正常,如果输入流正常,就会继续循环,如果输入流错误,或者达到文件末尾,循环就会终止。

本回答专业性由电脑网络分类达人 武岩认证

其他类似问题

更多关于while(cin>>x)的问题>> 

为您推荐:

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,基本数据类型)

 

关于A+B的一点点看法和总结

标签:

原文地址:http://www.cnblogs.com/gemenjiegehuo/p/4786881.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!