SZTUOJ 1001. A+B (I)

Posted 徒手拆机甲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SZTUOJ 1001. A+B (I)相关的知识,希望对你有一定的参考价值。

1001. A+B (I)

Description

Your task is to Calculate a + b.

Input

Input contains multiple test cases. Each test case consists of a pair of integers a and b ( 0 <= a, b <= 20 ), separated by a space, one pair of integers per line.

Output

For each pair of input integers a and b you should output the sum of a and b in one line, and with one line of output for each line in input.

Sample Input

1 1

Sample Output

2

题目解析

这道题目是oj里的第一题,也是最简单的一个题,但是这道题的通过率只有1/3。这是因为大部分人,在刚刚入门ACM的时候,还不能熟练处理多组数据输入。

那么我们就简单给大家介绍一下多组数据输入的方式和方法。

这里给大家两个最基本的例子,

如果你习惯使用c语言来读入数据

我们只需要在执行核心代码之前,加上一句这个。

while(scanf("...") != EOF)
{
    ...
}

用来处理多组数据,他的处理原理也很简单当读入发生错误,或者是到达文件尾,scanf就会返回EOF这个宏的值。while(scanf("%d%d",&a,&b)!=EOF),这个语句就是说,当读取没有到达文件尾的话,就不停的读取。scanf 函数的返回值反映的是按照指定的格式符正确读入的数据的个数。如果输入数据与指定格式不符,则会产生输入错误。遇到输入错误,scanf函数会立即终止,返回已经成功读取的数据的个数。所以,通过scanf函数的返回值和指定输入数据的个数(由格式符决定)的比较,可以判断数据输入是否成功。scanf("%d%d",&a,&b); 这个语句会去读两个整型到a, b。如果读取成功,应该返回2。就是它成功读取变量的个数。在实际使用的过程中,我们可以一直输入不同的数据,如果想要结束输入,就按ctrl+z来结束这个循环。实际上如果我输入ctrl-z(unix上是ctrl-d)则会返回-1(随编译器而定).这实际上就是常量EOF的值

如果你更喜欢c++的读入方式

同样也只用加上类似的一句话

while(cin>>n)
{
    ...
}

原理也基本是一个道理,只是cin在读取会自动帮你判断是否有文件结束符EOF。输入缓冲是行缓冲。当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储。每当按下回车键后,cin.get() 就会检测输入缓冲区中是否有了可读的数据。cin.get() 还会对键盘上是否有作为流结束标志的 Ctrl+Z 或者 Ctrl+D 键按下作出检查

这里需要提醒大家,如果数据量较大,一般建议使用scanf来读取数据,因为常规情况了cin读取数据时比scanf慢很多的,一旦数据量过大,会导致代码超时。如果真的要用cin,可以用一些特殊手段来加速cin的过程,这里就不详细介绍了,之后有机会会给大家科普一下的。

学习完了多组数据的处理,这道题目也就迎刃而解了。他的核心代码就时读入数据,计算a+b,然后输出数据。

代码实现

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int a,b;
	while(cin>>a>>b)
	{
		cout<<a+b<<endl;
	}
}

以上是关于SZTUOJ 1001. A+B (I)的主要内容,如果未能解决你的问题,请参考以下文章

SZTUOJ 1003.A+B(III)

SZTUOJ 1018.素数

[Codeforces Round #522 (Div. 2, based on Technocup 2019 Elimination Round 3)][C. Playing Piano](代码片段

PAT甲级(1001:A+B Format)

apriori片段代码

1001.A+B Format (20)解题随笔