【35天从0开始备战蓝桥杯 -- Day2】

🫧个人主页:小年糕是糕手

💫个人专栏:《C++》《Linux》《数据结构》《C语言》

🎨你不能左右天气,但你可以改变心情;你不能改变过去,但你可以决定未来!


目录

一、条件判断与循环语句

1.1、if-else

1.2、switch

1.3、while

1.4、for

1.5、do-while

二、操作符补充

2.1、关系操作符

2.2、逻辑操作符

2.3、条件操作符

三、break和continue

四、循环嵌套


一、条件判断与循环语句

条件判断与循环是我们写代码中非常常用的东西,大家可以重点学习一下,这里给出一篇博主之前的博客供大家学习,这样效率会比较高,本节内容会提供大量习题供大家练习:

条件判断与循环语句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++ 中提供了 breakcontinue 两个关键字,就是应用到循环中的。

  • 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.nowcoder.com/practice/0948f4f3344c452f843afd3585dd0f8d?tpId=290&tqId=320953&ru=/exam/oj&qru=/ta/beginner-programmers/question-ranking&sourceUrl=%2Fexam%2Foj

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


相关推荐
数据知道2 小时前
MongoDB:如何构建“数据回收站“,防止人为误删数据(延迟节点)
数据库·mongodb
云边有个稻草人2 小时前
KingbaseES融合数据库:内核级一体化架构,实现一库多能全域支撑
数据库·国产数据库·kingbasees·金仓数据库
零基础的修炼2 小时前
Linux网络---多路转接
数据库
小年糕是糕手2 小时前
【35天从0开始备战蓝桥杯 -- Day1】
jvm·数据结构·c++·程序人生·算法·职场和发展·蓝桥杯
Gold Steps.2 小时前
Go 语言核心:函数、结构体与接口深度解析
开发语言·后端·golang
z20348315202 小时前
17届蓝桥杯嵌入式赛道开发板外设使用教程——LED
stm32·单片机·蓝桥杯
阿部多瑞 ABU2 小时前
Python爬虫实战:话本小说网通用爬虫开发指南
开发语言·爬虫·python
Han.miracle2 小时前
JavaScript 中 var、let、const 的核心区别与实战应用
开发语言·前端·javascript
cookqq2 小时前
MongoDB $in查询参数上限是多少个?
数据库·mongodb