今天的A+B问题,主体还是计算输入的两个数:a和b的和。但是相比于上一题,多了一个循环部分,题目提示信息:“注意,测试数据不仅仅一组。也就是说,会持续输入N以及后面的a和b”。所以说我们在这一题中便引入了循环的概念。
这道题中,我们可以使用while实现循环输入。while在使用时,一旦条件为真,便会一直执行花括号里的内容:
while(条件){
//当条件为真时,就会一直执行
}
所以,我们将cin>>n作为条件便可以实现多组输入。在输入n值后,同样我们使用链式输入cin >> a >> b完成a和b值的输入(谈及输入输出,还是需要内置库的声明也就是#include<iostream>)。但是,如何根据我们上一个输入的n值来保证程序循环的次数是n呢?这就需要另一个循环了。这时候我们可以使用两种常见的方法:
1.while循环。我们此时已经知道后面会有n行a和b的输入,所以我们每一次执行a和b的输入后,就将n的值减一,我们使用自减操作--来完成。而对于自减操作,就要考虑--符号是在变量前还是后的问题了。如果你写的是--i,比如你想要每次输入1行a和b,此时n为1,在接下来的程序执行中while(--n),while中会先执行n的自减操作,n会变为0,while则会认为此时条件不为真,不执行输入;相反,while(n--)则会先条件判断再将n值减一。所以,自减符号要考虑好放在变量前还是后。--n也被称为前缀递减操作符,同理n--为后缀递减。
2.for循环。我们引入一个新的变量i,利用c++中的for语法
for (初始化语句;条件判断;操作){
//代码块
}
假如后续会有10行输入,则n设置为10.我们初始化i为1,只要i≤10,我们便一直执行代码块中的操作,也就是输入a,b,同时i加一,这对应着初始化语句int i = 1, 条件判断 i ≤10以及操作 i++。一般来说,在编程中,变量的初始值都被设置为0,所以有:
for (int i < 0; i < n; i++){
//代码块
}
除此之外,我们注意到while在进行条件判断时,输入应该是一个布尔类型的值才对,比如true或者false,但是我们使用的确实n--,这是因为在进行条件判断时,我们如果给定一个整数类型的值,编译器会自动转换数据类型,将非0的数值转换为布尔类型的true,而0则被转换为false 。