您的位置:首页 > 其它

HDU 1000 A + B Problem

2016-05-09 19:16 288 查看
作为经典的ACM入门题,这应该是很多人入坑时做的第一道题,可以说,A+B问题对ACMer的意义相当于Hello World对于程序员的意义。很多题目很简单,但是有些人知道做法也不一定能AC,因此借这道题讲讲初学者可能遇到的种种问题。让我们先来看题。

Problem Description

Calculate A + B.

Input

Each line will contain two integers A and B. Process to end of file.

Output

For each case, output A + B in one line.

Sample Input

1 1


Sample Output

2


难度:1星

题目很简单,相信你可以轻易读懂。话不多说,先上代码:

#include <iostream>

using namespace std;

int main()
{
int a=0,b=0;
while(cin>>a>>b)
{
cout<<a+b<<endl;
}
return 0;
}


有一点你要注意,输入并不只有一组,因此在这里需要使用一个while循环。当有输入的时候,就输出对应的结果并换行,直到输入结束。所以输出结果后不要忘记换行,否则也是不能AC的。

另外,在使用cin和cout进行输入输出时,必须要引入iostream头文件和使用标准命名空间。

若是使用C语言的scanf和printf进行输入输出,引入cstdio头文件即可,代码如下:

#include <cstdio>

int main()
{
int a=0,b=0;
while(~scanf("%d%d",&a,&b))
{
printf("%d\n",a+b);
}
return 0;
}

在使用scanf进行输入的时候,变量前记得加上&符号,不然会出错。另外,代码中的

while(~scanf("%d%d",&a,&b))

表示是输入多组数据,直到输入结束为止,其功能相当于:

while(scanf("%d%d",&a,&b)!=EOF)

因此如下代码也是可以的:

#include <cstdio>

int main()
{
int a=0,b=0;
while(scanf("%d%d",&a,&b)!=EOF)
{
printf("%d\n",a+b);
}
return 0;
}


这里特别说一点,很多初学者会认为要等输入结束才可以开始输出,其实不然。在Online Judge系统里,只要最终所有的输出部分拼起来后跟他的样例输出相同,那么代码就是正确的。至于你的结果是一次性输出的,还是断断续续输出的,是无关紧要的。所以,遇到一次性输出很困难的情况,完全可以输入部分就开始输出,然后再输入部分再输出。

另外,所谓的样例并不只有展示出来的sample input和sample output的那几条,事实上后台还存有很多隐藏的样例,用来检测你的代码是否存在漏洞,所以在提交代码前,你应该确认你已经考虑到所有的情况了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: