HDU 1000 A + B Problem

来源:互联网 发布:win10电脑优化 编辑:程序博客网 时间:2024/04/28 05:04


作为经典的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的那几条,事实上后台还存有很多隐藏的样例,用来检测你的代码是否存在漏洞,所以在提交代码前,你应该确认你已经考虑到所有的情况了。

1 0