
🫧个人主页:小年糕是糕手
🎨你不能左右天气,但你可以改变心情;你不能改变过去,但你可以决定未来!
目录
一、条件判断与循环语句
条件判断与循环是我们写代码中非常常用的东西,大家可以重点学习一下,这里给出一篇博主之前的博客供大家学习,这样效率会比较高,本节内容会提供大量习题供大家练习:
条件判断与循环语句
https://blog.csdn.net/2501_91731683/article/details/147494152
1.1、if-else
https://www.luogu.com.cn/problem/B2039
https://www.luogu.com.cn/problem/B2036
https://www.luogu.com.cn/problem/B2037
1.2、switch
https://ac.nowcoder.com/acm/contest/19304/O
https://www.luogu.com.cn/problem/B2052
1.3、while
https://ac.nowcoder.com/acm/contest/18839/1023
https://ac.nowcoder.com/acm/problem/22199
https://www.nowcoder.com/practice/ce0b2eacd3d04647831358c2876e44ff
https://www.luogu.com.cn/problem/B2078
https://www.luogu.com.cn/problem/B2077
https://www.luogu.com.cn/problem/B2080
1.4、for
计算1~100之间3的倍数的数字之和
https://www.luogu.com.cn/problem/B2054
https://www.luogu.com.cn/problem/B2058
https://www.luogu.com.cn/problem/B2065
https://www.luogu.com.cn/problem/B2066
https://www.luogu.com.cn/problem/B2070
https://www.luogu.com.cn/problem/B2069
1.5、do-while
统计正整数的位数:输入一个正整数,计算这个整数是几位数
https://www.luogu.com.cn/problem/B2076
二、操作符补充
前面我们了解了部分常见的操作符,在这里再给大家补充一部分,这样大家就可以自行去解决大部分有关操作符的习题了
2.1、关系操作符
用于比较的表达式称为关系表达式,这里的运算符就是关系操作符,主要是有下面几个:

关系表达式通常返回0或1,表示真假(0表示假,所有非零值表示真),下面举个例子:

这里a>b是假所以这里输出的就是一个零,相等运算符==与赋值运算符=是两个不一样的运算符,切记不要混淆。
这里我们还需要关注一个点多个关系运算符是不宜连用的,例如:a>b>c这是不对的,编译器会从左到右依次解读,会先看a>b,结果会返回1 / 0,再用这个结果与后面c比较,最后返回1 / 0,那么我们该如何解决这种连续比较呢?后面会有专门的操作符&&与||,后面会为大家细致讲解。
这里我们还需要关注的一个点是浮点数比较相等:

我们先按照逻辑来举个例子:
cpp
#include<iostream>
using namespace std;
int main()
{
double a = 0.1;
double b = 0.2;
double c = 0.3;
if (a + b == c)
cout << "==" << endl;
else
cout << "!=" << endl;
return 0;
}
我们乍一看肯定会以为这里打印的结果是==,那我们来运行代码看看结果:

有点出乎我们的预料了,这是因为浮点数会转换成二进制保存在计算机中,而有些浮点数在计算机中可能无法精确保存,所以我们一般不直接用==去比较浮点数,我们比较浮点数的时候往往就要允许有误差存在,下面举个例子:
cpp
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
double a = 0.1;
double b = 0.2;
double c = 0.3;
if (fabs(a + b == c) < 1e-6) //1e-6是允许的误差值
cout << "==" << endl;
else
cout << "!=" << endl;
return 0;
}
这里我们需要介绍两个函数abs()和fabs():

https://www.luogu.com.cn/problem/B2044
https://www.luogu.com.cn/problem/B2032
2.2、逻辑操作符
逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有下面三个运算符

我们需要着重关注的一个点是短路:
逻辑运算符还有一个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是固定的。如果左边的表达式就能确定整个表达式的结果,就不再对右边的表达式求值。这种情况称为--短路,我们用大白话解释就是,如果a>b&&b>c,这段代码里如果我们已经知道了a>b是不成立的话,我们就没有必要再去判断后面的b>c了,因为表达式最后的结果肯定是会返回0 的了,如果a>b||b>c,在这个表达式中我们知道了a>b是成立的,那我们也就不需要再去判断后面的b>c是否正确了,光说不练假把式,我们还是靠下面的题目来找找感觉
https://www.luogu.com.cn/problem/P5711
https://www.luogu.com.cn/problem/B2045
https://www.luogu.com.cn/problem/B2050
https://www.luogu.com.cn/problem/B2043
https://www.luogu.com.cn/problem/P5710
2.3、条件操作符
条件操作符也叫三目操作符,需要接受三个操作数,形式如下:

举个例子:a>b?a:b,这个的意思就是a和b比较大小,如果a>b返回a,如果a!>b返回b,大家可以直接理解这中间的问号就是问我们前面的条件是否成立,成立返回第一个,不成立返回第二个,我们来看下面的一段代码加深理解:

https://www.luogu.com.cn/problem/B2049
https://ac.nowcoder.com/acm/contest/19304/E
https://www.luogu.com.cn/problem/P5709
三、break和continue
在循环执行的过程中,如果某些状况发生的时候,需要提前终止循环,这是非常常见的现象。C++ 中提供了
break和continue两个关键字,就是应用到循环中的。
break的作用是用于永久地终止循环,只要break被执行,直接就会跳出循环,继续往后执行。
continue的作用是跳过本次循环continue后边的代码,在for循环和while循环中有所差异。
我们只需要记住最关键的一点:break终止循环,continue跳过一次循环,我们来看下面的例子:
cpp
#include <iostream>
using namespace std;
int main() {
cout << "break示例(找5就停):" << endl;
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break; // 触发break,循环直接结束
}
cout << "当前数字:" << i << endl;
}
cout << "循环已终止" << endl;
return 0;
}

cpp
#include <iostream>
using namespace std;
int main() {
cout << "\ncontinue示例(跳过5):" << endl;
for (int i = 1; i <= 10; i++) {
if (i == 5) {
continue; // 触发continue,跳过本次cout,直接进下一轮
}
cout << "当前数字:" << i << endl;
}
cout << "循环正常结束" << endl;
return 0;
}

https://www.luogu.com.cn/problem/B2084
四、循环嵌套
前面学习了三种循环 while,do-while,for,这三种循环往往会嵌套在一起才能更好的解决问题,就是我们所说的:循环嵌套,下面我们尝试来写一个代码打印乘法口诀,大家从中去感受一下循环嵌套的用法:
cpp
#include <cstdio>
int main()
{
for (int i = 1; i < 10; i++)
{
for (int j = 1; j <= i; j++)
{
printf("%d*%d=%2d ", j, i, i * j);
}
printf("\n");
}
return 0;
}
https://ac.nowcoder.com/acm/problem/22206
https://www.luogu.com.cn/problem/B2064
https://www.luogu.com.cn/problem/B2079
https://ybt.ssoier.cn/problem_show.php?pid=2027
https://www.luogu.com.cn/problem/B2083
https://www.luogu.com.cn/problem/B2085
https://ybt.ssoier.cn/problem_show.php?pid=2029
