目录
前言
仅个人记录所用
源自卡码网的C++基础课
“这门C++基础课 帮助 编程零基础学员快速学习刷算法题所需要的基础语法知识,学完之后,再来刷代码随想录,或者自己去刷编程题,基本不会有语法方面的困惑了,可以帮助大家快速上手刷题。 ”
第二题包含以下内容:
- for循环的执行流程
- while循环的终止
- do while循环的执行流程
++i
和i++
自增运算--i
和i--
自减运算- 数据类型转换
一、题目描述
题目描述:计算a+b,但输入方式有所改变。
输入描述:第一行是一个整数N,表示后面会有N行a和b,通过空格隔开。
输出描述:对于输入的每对a和b,你需要在相应的行输出a、b的和。如第二对a和b,对应的和也输出在第二行。
输入示例:
2 2 4 9 21
输出示例:
6 30
提示信息:注意,测试数据不仅仅一组。也就是说,会持续输入N以及后面的a和b
二、解题思路
1.++和--
++i和i++区别
++i
是前缀递增操作符,所谓前缀递增是指,它会先将变量增加 1,然后返回增加后的值,再将返回增加后的值参与别的运算i++
是后缀递增操作符,它会先返回变量的当前值,然后再将变量增加 1。
int i = 99;
int result = ++i;
//i=100,result=100
int i = 99;
int result = i++;
//i=100, result=99
--i
是前缀递增操作符,所谓前缀递增是指,它会先将变量减小 1,然后返回减小后的值,再将返回减小后的值参与别的运算i--
是后缀递增操作符,它会先返回变量的当前值,然后再将变量减小 1。
int i = 100;
int result = --i; // i 先减少为 99,然后赋值给 result
// 现在 i = 99, result = 99
int i = 100;
int result = i--; // 先赋值给 result,然后 i 减少为 99
// 现在 i = 99, result = 100
2.for循环
for语句的语法格式是:
-
for(初始化语句;条件判断;操作) { // 代码块 }
初次接触,或许不是很好理解,让我们使用计数的例子来类比,假设我们从1数到100
- 初始化语句:我们计数通常从1开始,也就是说,我们最开始初始化了一个值1
- 条件:判断值是否小于100,如果小于100,说明我们还没有计数完,需要继续计数,如果等于100,说明已经计数完毕,则结束计数
- 操作:如果本次计数值小于100,将值加1
- 重复步骤二,再次判断值是否小于100
- 重复步骤三,计数值再加1
每次循环,都需要接收输入的a和b,并根据a和b计算出结果,这个代码和上一题的类似,就不再赘述,代码如下:
for(int i = 0; i < n; i++) {
cin >> a >> b; // 接收 a和b的输入
cout << a + b << endl; // 输出结果并换行
}
3.while循环
while(条件) {
// 当条件为真时,就会一直执行
}
与上面的for循环对比就会发现,while只有条件判断,而没有初始化语句和操作语句,所以要在while结构之外进行书写。所以按照for循环的逻辑,我们可以这样写代码:
while(cin >> n) {
// 提前初始化变量i
var i = 0;
// 条件判断, 判断 i是否小于n
while(i < n) {
cin >> a >> b;
cout << a + b << endl;
// 循环控制
i++;
}
}
这样这个循环才算是完整的,但是这样做引入了无关变量i, 又加了一个循环控制语句,有没有简化的办法呢?
while (n--) {
cin >> a >> b;
cout << a + b << endl;
}
//while 循环中, while(0) 会终止循环, 因为0可以转换成false, false代表条件为假,循环结束。
4.do while 循环
其实除了for循环
和while
循环之外,还有一种循环结构,叫做do while
, 它和 while
循环有些类似, 使用方法如下:
do {
// 循环体(代码块)
} while (条件判断);
do while
循环会先去执行循环体内的代码块,然后再检查条件判断,如果条件判断为真,则继续执行下一次循环迭代;如果 条件判断为假,则终止循环,这意味着,无论条件的值如何,我们都至少执行一次循环。
int sum = 0;
int i = 11;
// 先去执行一次循环体中的代码,再去判断条件要不要执行
do {
sum = sum + i; // 将 sum + i的值赋值给sum
i++; // i的值自增
} while (i <= 10);
在这个例子中,虽然不满足于i < =10
的条件,但是仍然会执行一次循环体中的代码。
三、完整代码
两个方法:
第一个:
#include <iostream>
using namespace std;
int main()
{
int n , a , b ;
while(cin>>n)
{
for(int i=0 ; i<n ; i++)
{
cin>>a>>b;
cout<< a+b << endl;
}
}
}
第二个:
#include<iostream>
using namespace std;
int main() {
int n, a, b;
// 使用while循环接收持续输入的n
while (cin >> n) {
// 使用while循环控制代码执行n次,当n为0的时候,结束循环
while (n--) {
cin >> a >> b;
cout << a + b << endl;
}
}
}
总结
这是基础课的第二节课,主要学习了三种循环以及++--的问题。