忙完了一段学习任务,应该会每天打卡了吧~希望如此
今天的问题还是A+B,问题没有给出行数n了,也就是说如果没有终止条件,输入将会一直进行下去。所以,题目给出限定,当a和b同时为0时,输入就停止了,并且该行输入的a和b是不需要计算的。
因为输入没有限制行数,我们可以直接使用之前所提到的链式输入和while循环实现:
while(cin >> a >> b){
}
当然,前面需要a和b的定义,这里便不赘述。
对于终止条件,我们需要使用if语句来进行判断:
if (condition){
/代码块
}
中的条件为真则运行代码块中的内容,否则继续执行下面的内容。对于本题来说,我们需要在a和b同时为0的时候停止循环,所以我们对a和b进行判断,使用关系运算符“==”来比较它们和0的关系。这个关系运算符属于比较特殊的了,因为你不能写等号=来进行判断,在C++中,这会被视为一种定义或者赋值等操作。其他的常用的关系运算符比如<=,>=,>,<都与平常数学中使用方法一致。除此之外,还有不等于的表示是!=,这个需要注意一下。
我们想要同时判断a和b是否等于0,还需要引入逻辑运算符。C++中提供了几种运算符:
1.逻辑与 && 当两边条件判断都为真时,结果才是真;
2.逻辑或 || 当两边条件判断至少有一个为真时,结果便是真,数学(电)中常说有1则1,全0才0;
3.逻辑非 ! 将条件取反后如果真则为真
if(a==0 && b==0),这样我们便实现了分别对a和b的判断。但是还需要填充代码块,我们需要在a和b同时为0时执行代码块中的内容,而要求是不进行运算。所以我们需要跳出循环while,可以通过break语句实现:
if (a == 0 && b == 0){
break;
}
break会直接跳出最近距离的循环。
当正常输入时,我们只需要输出a和b的加和就好了:
#include<iostream>
using namespace std;
int main(){
int a, b;
while(cin >> a >> b){
if (a == 0 && b == 0){
break;
}
cout << a + b << endl;
}
return 0;
}
C++ primer plus上有对逻辑运算符的一些补充:
AND也就是逻辑与的优先级要大于OR(逻辑或),但是它们优先级都低于关系运算符,所以我们如果有这样的表达式:
a < 1 && b > 2 || c < 3
也就是((a < 1) && (b > 2)) || (c < 3)了。