题目描述
计算a+b
输入描述:
输入包含多组数据,每组数据输入一行,包含两个整数
输出描述:
对于每组数据输出一行包含一个整数表示两个整数的和
方法1:
在scanf前加个~(按位取反),就是把二进制中的0变成1,1变成0,用在这里导致只有scanf返回-1,循环才会结束,也就是要返回EOF为止。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, m;
while(~scanf("%d %d",&n,&m))
{
cout << n+m << endl;
}
return 0;
}
方法2:
用while输入语句不断检查输入的值是否为文件结束的条件
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, m;
while(cin >> n>> m)
{
cout << n+m << endl;
}
return 0;
}
方法3:
在C语言中使用while循环语句,判断输入数据是否为文件结束符,如果不是就能够达到多组输入的结果。
#include <stdio.h>
int main()
{
int n, m;
while(scanf("%d %d",&n,&m) != EOF)
// 或者while(scanf("%d %d",&n,&m) == 1)
{
printf("%d\n",n+m);
}
return 0;
}
扩展题目:
第一行输入一个数据组数n
接下来n行每行输入两个整数
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, i, a, b;
cin >> n;
for(i=0; i<n; i++)
{
cin >> a >> b;
cout << a+b << endl;
}
return 0;
}
多组数据,每组输入两个整数,当两个整数都为0时表示输入结束
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, m;
while(~scanf("%d %d",&n,&m))
{
if(n==0 && m==0)
break;
else
cout << n+m << endl;
}
return 0;
}