【NOI】C++程序结构入门之循环结构三-计数求和
文章目录
- 前言
- 一、计数求和
- 1.导入
- 2.计数器
- 3.累加器
- 二、例题讲解
- 问题:1741 - 求出1~n中满足条件的数的个数和总和?
- 问题:1002. 编程求解1+2+3+...+n
- 问题:1004. 编程求1 * 2 * 3*...*n
- 问题:1014. 编程求1+1/2+1/3+...+1/n
- 问题:1056. 所有不超过1000的数中含有数字3的自然数
- 问题:1055. 求满足条件的整数个数
- 问题:1393. 与7无关的数?
- 三、总结
- 四、感谢
前言
在C++编程的学习过程中,循环结构是一个非常重要的概念。通过前两节的学习,我们已经掌握了while循环和for循环的基本使用方法,并且学会了如何利用这些循环来输出一组符合条件的数。然而,在实际应用中,仅仅输出这些数是不够的。很多时候我们需要进一步处理这些数据,例如统计出符合条件的数的数量以及计算它们的总和。这就是本章节的重点——循环计数求和。我们将深入探讨如何使用计数器和累加器来实现这一目标,并通过具体的实例帮助大家更好地理解和掌握这些技巧。
学习路线:C++从入门到NOI学习路线
学习大纲:C++全国青少年信息学奥林匹克竞赛(NOI)入门级-大纲
一、计数求和
1.导入
在前两节中,我们学习了两种不同的循环结构——while循环和for循环。
并学会了在一组数字中,如何输出多个符合条件的数。

让你统计出这些符合条件的数的数量是多少?并且计算出它们的和你会吗?
这就是我们今天需要学习处理的问题——循环计数求和。
2.计数器
首先我们需要知道一个关于计数器的概念,什么是计数器?
计数器用于跟踪循环执行的次数或某些事件发生的频率。它通常从一个初始值开始,在每次满足特定条件时递增或递减。
哇,好复杂,感觉要长脑子了QAQ

其实并没有那么复杂,大家可以想想比赛用的计时器。

当按下开始键,时间每过去一秒,计时器就会加1。同理,在我们程序里面,当满足条件时,我们也将计数器+1。
示例:
int c=0 //定义一个计数器,并初始化为0
for(int i=1;i<=20;++i){ //循环1-20的数if(i%2==0){ //判断当前数是否是偶数++c; //如何是偶数,则将计数器+1}
}
上面代码中就演示了如何统计1-20中偶数的数量。
看见没,就是这样简单。
3.累加器
接下来,让我们来了解一下求和的部分。
累加器用来累积一系列数值的总和。在每次迭代中,将当前数值添加到累加器中,从而实现对多个数值的求和。
说到这里,大家脑子里面肯定想到了计算器这个东西。

没错,我们的累加器基于相当于是一个会自己按的计算器。当然这里的累加器也可以包括加减乘除等一系列操作,只是一般用来求和而已。
示例:
int sum=0 //定义一个累加器,并初始化为0
for(int i=1;i<=20;++i){ //循环1-20的数sum+=i; //累计计算1-20的和
}
依然是一段很简单的代码,循环1-20的每一个数,然后将它们累计相加。
但这里有的人可能会有一点小问题。
1.问题一:sum+=i是什么意思?
- 在C++编程中,sum += i; 是一种简洁的写法,用来表示将变量 i 的值加到变量 sum 上,并将结果存回 sum 中。这实际上是一个复合赋值操作符的例子,它结合了加法运算和赋值操作。
- sum += i 可以理解为 sum = sum + i。
2.问题二:为什么sum=sum+i就是累加?
- 模拟计算器过程:想象你正在使用一个计算器来连续相加几个数字。每次你输入一个新的数并按下“等于”键时,计算器会显示当前所有已输入数值的总和。
- 累加器的角色:在这个过程中,sum 就像是计算器上的显示屏,它保存了到目前为止所有已添加数值的总和。而 i 则代表当前要加入的新值。
- 每一步的更新:在语句 sum = sum + i; 中,右边的 sum 表示的是上一次累加后的结果(也就是当前的总和),而 + i 是指现在要加到总和上去的新值。执行这行代码之后,新的总和就会被计算出来,并通过赋值操作(=)更新到左边的 sum 变量中。
- 循环中的累加:当这条语句位于一个循环体内时,随着循环的每一次迭代,i 的值会发生变化,代表着不同的新值。每次执行 sum = sum + i; 都是在前一次总和的基础上再加上新的值,从而实现了累加的效果。最终,sum 将包含所有数值的总和。
二、例题讲解
问题:1741 - 求出1~n中满足条件的数的个数和总和?
类型:简单循环
题目描述:
请求出 1∼n 之间所有满足 2 的倍数但不是 3 的倍数的数,有多少个,总和是多少?
输入:
读入一个整数 n(n≤100000) 。
输出:
输出有 2 行,每行 1 个整数;
第 1 行输出满足条件的数有几个;
第 2 行输出满足条件的数的总和。
样例:
输入:
10
输出:
4
24
1.分析问题
- 已知:给定一个整数n;
- 未知:找出1到n之间所有满足既是2的倍数但又不是3的倍数的数。需要计算满足条件的数的总数(记为c)以及这些数的总和(记为s)。
2.定义变量
- n为输入值,count记录满足条件的数的数量,sum记录这些数的总和。
// 二、数据定义int n, count = 0, sum = 0;
3.输入数据
- 从用户处获取整数n的值。
// 三、数据输入cin >> n;
4.数据计算
- 从2开始,每次递增2(确保是2的倍数),直到n(包含n)。
- 检查当前数i是否不是3的倍数。
- 如果i不是3的倍数,则计数加1,并将其累加到总和中
// 四、数据处理与计算for (int i = 2; i <= n; i += 2) {if (i % 3 != 0) {count++; // 或者使用 ++countsum += i;}}
5.输出结果
- 输出满足条件的数的总数和总和,中间用换行符分隔
cout << count << endl << sum;
完整代码如下:
#include <bits/stdc++.h> // 包含常用的C++库函数
using namespace std; // 使用std命名空间,简化对标准库函数的调用int main() {// 一、问题分析// 给定一个整数n,找出1到n之间所有满足既是2的倍数但又不是3的倍数的数。// 需要计算满足条件的数的总数(记为c)以及这些数的总和(记为s)。// 二、数据定义int n, count = 0, sum = 0; // n为输入值,count记录满足条件的数的数量,sum记录这些数的总和// 三、数据输入cin >> n; // 从用户处获取整数n的值// 四、数据处理与计算// 从2开始,每次递增2(确保是2的倍数),直到n(包含n)for (int i = 2; i <= n; i += 2) {// 检查当前数i是否不是3的倍数if (i % 3 != 0) {// 如果i不是3的倍数,则计数加1,并将其累加到总和中count++; // 或者使用 ++countsum += i;}}// 五、输出结果// 输出满足条件的数的总数和总和,中间用换行符分隔cout << count << endl << sum;return 0; // 程序执行成功,返回0
}
欢迎关注本专栏《C++从零基础到信奥赛入门级(CSP-J)》
问题:1002. 编程求解1+2+3+…+n
类型:简单循环
题目描述:
编程求解下列式子的值: S=1+2+3+⋯+n。
输入:
输入一行,只有一个整数 n(1≤n≤1000) 。
输出:
输出只有一行(这意味着末尾有一个回车符号),包括 1 个整数。
样例:
输入:
100
输出:
5050
1.分析问题
- 已知:一个整数n;
- 未知:计算出1-n中所有数的和;
- 关系:计数求和。
2.定义变量
- n - 存储用户输入的上限;
- sum - 累加器,初始化为0,用来累计从1到n的整数之和。
int n,sum=0;
3.输入数据
- 输入整数n。
cin>>n;
4.数据计算
- 开始一个循环,从1遍历到n(包括n)。
- 在每次循环中,将当前的i累加到sum中。
for(int i=1;i<=n;i++){sum+=i;
}
5.输出
- 输出结果sum。
cout << sum << endl;
完整代码如下:
#include<bits/stdc++.h> // 包含了C++标准库中的所有头文件,方便快捷但不推荐用于实际项目中。
using namespace std; // 使用std命名空间,避免每次使用标准库元素时都得加上std::前缀。int main(){ // 定义主函数,程序从这里开始执行。//一、分析问题//已知:整数n。//未知:前n项和。//关系:累加。//二、数据定义 int n, sum = 0; // 定义两个整型变量:// n - 存储用户输入的上限;// sum - 累加器,初始化为0,用来累计从1到n的整数之和。//三、数据输入cin >> n; // 从标准输入读取一个整数n,表示累加的上限。//四、数据计算 for(int i = 1; i <= n; ++i){ // 开始一个循环,从1遍历到n(包括n)。sum += i; // 在每次循环中,将当前的i累加到sum中。}//五、输出结果cout << sum << endl; // 输出累加的结果,并换行。return 0; // 主函数结束,返回0给操作系统,表示程序正常结束。
}
欢迎关注本专栏《C++从零基础到信奥赛入门级(CSP-J)》
问题:1004. 编程求1 * 2 * 3*…*n
类型:简单循环
题目描述:
编程求 1×2×3×⋯×n 。
输入:
输入一行,只有一个整数 n(1≤n≤10);
输出:
输出只有一行(这意味着末尾有一个回车符号),包括 1 个整数。
样例:
输入:
5
输出:
120
1.分析问题
- 已知:一个整数n;
- 未知:编程求 n的阶乘。
- 关系:n 的阶乘定义为从 1 到 n 所有整数的乘积,表示为 n! = 1 * 2 * … * n。
2.定义变量
定义两个整型变量:
- n - 存储用户输入的整数;
- r - 累乘器,初始化为1,用来累计从1到n的整数乘积。
int n,r=1;
3.输入数据
- 读取一个整数n,表示要计算阶乘的数。
cin>>n;
4.数据计算
- 开始一个循环,从1遍历到n(包括n)。
- 在每次循环中,将当前的i与累乘器r相乘,并更新r。
for(int i=1;i<=n;++i){r*=i;
}
5.输出
- 输出累乘的结果,即n的阶乘。
cout<<r;
完整代码如下:
#include<bits/stdc++.h> // 包含了C++标准库中的所有头文件,方便快捷但不推荐用于实际项目中。
using namespace std; // 使用std命名空间,避免每次使用标准库元素时都得加上std::前缀。int main(){ // 定义主函数,程序从这里开始执行。//一、分析问题//已知:一个整数n //未知:编程求 n的阶乘。//关系:n 的阶乘定义为从 1 到 n 所有整数的乘积,表示为 n! = 1 * 2 * ... * n。//二、数据定义int n, r = 1; // 定义两个整型变量:// n - 存储用户输入的整数;// r - 累乘器,初始化为1,用来累计从1到n的整数乘积。//三、数据输入cin >> n; // 从标准输入读取一个整数n,表示要计算阶乘的数。//四、数据计算for(int i = 1; i <= n; ++i){ // 开始一个循环,从1遍历到n(包括n)。r *= i; // 在每次循环中,将当前的i与累乘器r相乘,并更新r。}//五、输出结果cout << r; // 输出累乘的结果,即n的阶乘。return 0; // 主函数结束,返回0给操作系统,表示程序正常结束。
}
欢迎关注本专栏《C++从零基础到信奥赛入门级(CSP-J)》
问题:1014. 编程求1+1/2+1/3+…+1/n
类型:简单循环
题目描述:
编程求 1+1/2+1/3+⋯+1/n 。
输入:
输入一行,只有一个整数 n(1≤n≤200) 。
输出:
输出只有一行(这意味着末尾有一个回车符号),包括 1 个实数。(保留 3 位小数) 。
样例:
输入:
5
输出:
2.283
1.分析问题
- 已知:一个整数n;
- 未知:编程求1+1/2+1/3+…+1/n;
- 关系:调和级数求和,即求从1到n分之一的所有项之和。
2.定义变量
- 定义一个整型变量n,用来存储用户输入的上限。
- 定义一个双精度浮点型变量r,初始化为0,用来累计调和级数的和。
int n;
double r=0;
3.输入数据
- 读取一个整数n,表示求和的上限。
cin>>n;
4.数据计算
- 开始一个循环,从1遍历到n(包括n)。
- 在每次循环中,将当前项1/i累加到r中。
- 注意使用1.0以确保除法是浮点数除法,而不是整数除法。
for(int i=1;i<=n;++i){r+=1.0/i;
}
5.输出
- 输出累加的结果,设置输出格式为固定小数点形式,并保留三位小数。
cout<<fixed<<setprecision(3)<<r;
完整代码如下:
#include<bits/stdc++.h> // 包含了C++标准库中的所有头文件,方便快捷但不推荐用于实际项目中。
using namespace std; // 使用std命名空间,避免每次使用标准库元素时都得加上std::前缀。int main(){ // 定义主函数,程序从这里开始执行。//一、分析问题//已知:一个整数n;//未知:编程求1+1/2+1/3+...+1/n//关系:调和级数求和,即求从1到n分之一的所有项之和。//二、数据定义int n; // 定义一个整型变量n,用来存储用户输入的上限。double r = 0; // 定义一个双精度浮点型变量r,初始化为0,用来累计调和级数的和。//三、数据输入cin >> n; // 从标准输入读取一个整数n,表示求和的上限。//四、数据计算for(int i = 1; i <= n; ++i){ // 开始一个循环,从1遍历到n(包括n)。r += 1.0 / i; // 在每次循环中,将当前项1/i累加到r中。// 注意使用1.0以确保除法是浮点数除法,而不是整数除法。}//五、输出结果cout << fixed << setprecision(3) << r; // 输出累加的结果,设置输出格式为固定小数点形式,并保留三位小数。return 0; // 主函数结束,返回0给操作系统,表示程序正常结束。
}
欢迎关注本专栏《C++从零基础到信奥赛入门级(CSP-J)》
问题:1056. 所有不超过1000的数中含有数字3的自然数
类型:简单循环
题目描述:
编程求出所有不超过 1000 的数中,含有数字 3 的自然数,并统计总数。
输入:
无。
输出:
输出只有一行(这意味着末尾有一个回车符号),包括 1 个整数。
样例:
输入:
输出:
1.分析问题
- 已知:无输入,直接处理范围内的数。
- 未知:求出所有不超过 1000 的数中,含有数字 3 的自然数,并统计总数。
- 关系:通过拆分每一位数字来检查是否包含数字3。
2.定义变量
- 定义一个整型变量c,初始化为0,用来累计包含数字3的数的数量。
int c=0;
3.输入数据
无。
4.数据计算
- 开始一个循环,从1遍历到999(包括999)。
- 检查当前数i的每一位是否包含数字3。
- 如果包含,则将计数器c加1。
for(int i=3;i<1000;++i){if(i%10==3||i/10%10==3||i/100==3) ++c;
}
5.输出
- 输出包含数字3的数的总数。
cout<<c;
完整代码如下:
#include<bits/stdc++.h> // 包含了C++标准库中的所有头文件,方便快捷但不推荐用于实际项目中。
using namespace std; // 使用std命名空间,避免每次使用标准库元素时都得加上std::前缀。int main(){ // 定义主函数,程序从这里开始执行。//一、分析问题//已知:无输入,直接处理范围内的数。//未知:求出所有不超过 1000 的数中,含有数字 3 的自然数,并统计总数。//关系:通过拆分每一位数字来检查是否包含数字3。//二、数据定义int c = 0; // 定义一个整型变量c,初始化为0,用来累计包含数字3的数的数量。//三、数据输入// 无需用户输入,直接在代码中处理1到999的所有数。//四、数据计算for(int i = 1; i < 1000; ++i){ // 开始一个循环,从1遍历到999(包括999)。if(i % 10 == 3 || i / 10 % 10 == 3 || i / 100 == 3) { // 检查当前数i的每一位是否包含数字3。++c; // 如果包含,则将计数器c加1。}}//五、输出结果cout << c; // 输出包含数字3的数的总数。return 0; // 主函数结束,返回0给操作系统,表示程序正常结束。
}
欢迎关注本专栏《C++从零基础到信奥赛入门级(CSP-J)》
问题:1055. 求满足条件的整数个数
类型:简单循环
题目描述:
在 1∼n 中,找出能同时满足用 3 除余 2 ,用 5 除余 3 ,用 7 除余 2 的所有整数的个数,如果没有请输出 0 。
输入:
输入一行,只有一个整数 n(1≤n≤2000) 。
输出:
输出只有一行(这意味着末尾有一个回车符号),包括 1 个整数。
样例:
输入:
100
输出:
1
1.分析问题
- 已知:一个整数n;
- 未知:找出能同时满足用 3 除余 2 ,用 5 除余 3 ,用 7 除余 2 的所有整数的个数,如果没有请输出 0 。
- 关系:逻辑运算&&。
2.定义变量
- 定义两个整型变量:n 和 计数器c。
int n,c=0;
3.输入数据
- 读取一个整数n,表示范围的上限。
cin>>n;
4.数据计算
- 开始一个循环,从1遍历到n(包括n)。
- 检查当前数i是否满足所有条件。
- 如果满足条件,则将计数器c加1。
for(int i=1;i<=n;++i){if(i%3==2&&i%5==3&&i%7==2) ++c;
}
5.输出
- 输出个数。
cout<<c;
完整代码如下:
#include<bits/stdc++.h> // 包含了C++标准库中的所有头文件,方便快捷但不推荐用于实际项目中。
using namespace std; // 使用std命名空间,避免每次使用标准库元素时都得加上std::前缀。int main(){ // 定义主函数,程序从这里开始执行。//一、分析问题//已知:一个整数n;//未知:找出能同时满足用 3 除余 2 ,用 5 除余 3 ,用 7 除余 2 的所有整数的个数,如果没有请输出 0 。//关系:逻辑运算符 //二、数据定义int n, c = 0; // 定义两个整型变量:// n - 存储用户输入的上限;// c - 计数器,初始化为0,用来累计满足条件的整数数量。//三、数据输入cin >> n; // 从标准输入读取一个整数n,表示范围的上限。//四、数据计算for(int i = 1; i <= n; ++i){ // 开始一个循环,从1遍历到n(包括n)。if(i % 3 == 2 && i % 5 == 3 && i % 7 == 2) { // 检查当前数i是否满足所有条件。++c; // 如果满足条件,则将计数器c加1。}}//五、输出结果cout << c; // 输出满足条件的整数的数量。return 0; // 主函数结束,返回0给操作系统,表示程序正常结束。
}
欢迎关注本专栏《C++从零基础到信奥赛入门级(CSP-J)》
问题:1393. 与7无关的数?
类型:简单循环
题目描述:
一个整数,如果这个数能够被 7 整除,或者其中有一位是7,我们称为这个数是与 7 有关的数。比如: 14 能被 7 整除,17 有一位为 7 ,这两个数都是与 7有关的数。
请你编程求出 1∼n(n≤999) 中,与 7 无关的数的总和是多少?
比如 1∼10 中与 7 无关的数的和为:1+2+3+4+5+6+8+9+10=48 。
输入:
一个整数 n(n≤999) 。
输出:
1∼n 中与 7 无关的数的总和。
样例:
输入:
10
输出:
48
1.分析问题
- 已知:一个整数n;
- 未知:1-n中,与 7 无关的数的总和是多少?
2.定义变量
- n - 存储用户输入的整数;
- r - 累加器,初始化为0,用来累计满足条件的整数之和。
int n,r=0;
3.输入数据
- 输入读取一个整数n,表示范围的上限。
cin>>n;
4.数据计算
- 开始一个循环,从1遍历到n(包括n)。
- 检查当前数i是否满足以下条件:
1. 不能被7整除 (i % 7 != 0)
2. 不包含数字7 - 如果满足条件,则将当前数i累加到r中。
for(int i=1;i<=n;++i){if(!(i%7==0 || i%10==7 || i/10%10==7 || i/100==7)){r+=i;}
}
5.输出
- 输出结果r。
cout<<r;
完整代码如下:
#include<bits/stdc++.h> // 包含了C++标准库中的所有头文件,方便快捷但不推荐用于实际项目中。
using namespace std; // 使用std命名空间,避免每次使用标准库元素时都得加上std::前缀。int main(){ // 定义主函数,程序从这里开始执行。//一、分析问题//已知:一个整数n;//未知:与 7 无关的数的总和是多少?//关系:不能被7整除且不包含数字7的数。//二、数据定义int n, r = 0; // 定义两个整型变量:// n - 存储用户输入的上限;// r - 累加器,初始化为0,用来累计满足条件的整数之和。//三、数据输入cin >> n; // 从标准输入读取一个整数n,表示范围的上限。//四、数据计算for(int i = 1; i <= n; ++i){ // 开始一个循环,从1遍历到n(包括n)。// 检查当前数i是否满足以下条件:// 1. 不能被7整除 (i % 7 != 0)// 2. 不包含数字7 (i % 10 != 7 && i / 10 % 10 != 7 && i / 100 != 7)if(!(i % 7 == 0 || i % 10 == 7 || i / 10 % 10 == 7 || i / 100 == 7)) {r += i; // 如果满足条件,则将当前数i累加到r中。}}//五、输出结果cout << r; // 输出满足条件的整数之和。return 0; // 主函数结束,返回0给操作系统,表示程序正常结束。
}
三、总结
通过本章节的学习,我们不仅回顾了C++中的循环结构,还学习了如何利用计数器和累加器来进行复杂的数值处理。具体来说,我们了解了:
- 计数器:用于跟踪满足特定条件的事件发生的次数。它通常从一个初始值开始,在每次满足特定条件时递增或递减。
- 累加器:用来累积一系列数值的总和。通过在循环体内不断将当前数值添加到累加器中,可以实现对多个数值的求和。
此外,我们通过几个具体的编程问题,如求解调和级数、寻找与7无关的数等,展示了如何将这些概念应用于解决实际问题。
四、感谢
如若本文对您的学习或工作有所启发和帮助,恳请您给予宝贵的支持——轻轻一点,为文章点赞;若觉得内容值得分享给更多朋友,欢迎转发扩散;若认为此篇内容具有长期参考价值,敬请收藏以便随时查阅。
每一次您的点赞、分享与收藏,都是对我持续创作和分享的热情鼓励,也是推动我不断提供更多高质量内容的动力源泉。期待我们在下一篇文章中再次相遇,共同攀登知识的高峰!

相关文章:
【NOI】C++程序结构入门之循环结构三-计数求和
文章目录 前言一、计数求和1.导入2.计数器3.累加器 二、例题讲解问题:1741 - 求出1~n中满足条件的数的个数和总和?问题:1002. 编程求解123...n问题:1004. 编程求1 * 2 * 3*...*n问题:1014. 编程求11/21/3...1/n问题&am…...
[Linux]Shell脚本中以指定用户运行命令
前言 当我们为Linux设置了用户自启动的shel脚本,默认会使用root用户执行启动脚本中的命令,那么我们如何在启动脚本中切换为指定用户指定命令呢。 命令 以下将列出两条命令,两条命令都可以实现以指定用户运行命令,凭喜好选择使用…...
通过 NAudio 控制电脑操作系统音量
根据您的需求,以下是通过 NAudio 获取和控制电脑操作系统音量的方法: 一、获取和控制系统音量 (一)获取系统音量和静音状态 您可以使用 NAudio.CoreAudioApi.MMDeviceEnumerator 来获取系统默认音频设备的音量和静音状态&#…...
新项目上传gitlab
Git global setup git config --global user.name “FUFANGYU” git config --global user.email “fyfucnic.cn” Create a new repository git clone gitgit.dev.arp.cn:casDs/sawrd.git cd sawrd touch README.md git add README.md git commit -m “add README” git push…...
【异步编程基础】FutureTask基本原理与异步阻塞问题
文章目录 一、FutureTask 的桥梁作用二、Future 模式与异步回调三、 FutureTask获取异步结果的逻辑1. 获取异步执行结果的步骤2. 举例说明3. FutureTask的异步阻塞问题 Runnable 用于定义无返回值的任务,而 Callable 用于定义有返回值的任务。然而,Calla…...
原生 Node 开发 Web 服务器
一、创建基本的 HTTP 服务器 使用 http 模块创建 Web 服务器 const http require("http");// 创建服务器const server http.createServer((req, res) > {// 设置响应头res.writeHead(200, { "Content-Type": "text/plain" });// 发送响应…...
LeetCode热题100(一)—— 1.两数之和
LeetCode热题100(一)—— 1.两数之和 题目描述代码实现思路解析 你好,我是杨十一,一名热爱健身的程序员在Coding的征程中,不断探索与成长LeetCode热题100——刷题记录(不定期更新) 此系列文章用…...
二叉树高频题目——下——不含树型dp
一,普通二叉树上寻找两个节点的最近的公共祖先 1,介绍 LCA(Lowest Common Ancestor,最近公共祖先)是二叉树中经常讨论的一个问题。给定二叉树中的两个节点,它的LCA是指这两个节点的最低(最深&…...
vue事件总线(原理、优缺点)
目录 一、原理二、使用方法三、优缺点优点缺点 四、使用注意事项具体代码参考: 一、原理 在Vue中,事件总线(Event Bus)是一种可实现任意组件间通信的通信方式。 要实现这个功能必须满足两点要求: (1&#…...
PyCharm介绍
PyCharm的官网是https://www.jetbrains.com/pycharm/。 以下是在PyCharm官网下载和安装软件的步骤: 下载步骤 打开浏览器,访问PyCharm的官网https://www.jetbrains.com/pycharm/。在官网首页,点击“Download”按钮进入下载页面。选择适合自…...
《CPython Internals》读后感
一、 为什么选择这本书? Python 是本人工作中最常用的开发语言,为了加深对 Python 的理解,更好的掌握 Python 这门语言,所以想对 Python 解释器有所了解,看看是怎么使用C语言来实现Python的,以期达到对 Py…...
音频入门(一):音频基础知识与分类的基本流程
音频信号和图像信号在做分类时的基本流程类似,区别就在于预处理部分存在不同;本文简单介绍了下音频处理的方法,以及利用深度学习模型分类的基本流程。 目录 一、音频信号简介 1. 什么是音频信号 2. 音频信号长什么样 二、音频的深度学习分…...
Redis --- 分布式锁的使用
我们在上篇博客高并发处理 --- 超卖问题一人一单解决方案讲述了两种锁解决业务的使用方法,但是这样不能让锁跨JVM也就是跨进程去使用,只能适用在单体项目中如下图: 为了解决这种场景,我们就需要用一个锁监视器对全部集群进行监视…...
用C++编写一个2048的小游戏
以下是一个简单的2048游戏的实现。这个实现使用了控制台输入和输出,适合在终端或命令行环境中运行。 2048游戏的实现 1.游戏逻辑 2048游戏的核心逻辑包括: • 初始化一个4x4的网格。 • 随机生成2或4。 • 处理玩家的移动操作(上、下、左、…...
【设计模式-行为型】状态模式
一、什么是状态模式 什么是状态模式呢,这里我举一个例子来说明,在自动挡汽车中,挡位的切换是根据驾驶条件(如车速、油门踏板位置、刹车状态等)自动完成的。这种自动切换挡位的过程可以很好地用状态模式来描述。状态模式…...
CentOS/Linux Python 2.7 离线安装 Requests 库解决离线安装问题。
root@mwcollector1 externalscripts]# cat /etc/os-release NAME=“Kylin Linux Advanced Server” VERSION=“V10 (Sword)” ID=“kylin” VERSION_ID=“V10” PRETTY_NAME=“Kylin Linux Advanced Server V10 (Sword)” ANSI_COLOR=“0;31” 这是我系统的版本,由于是公司内网…...
【flutter版本升级】【Nativeshell适配】nativeshell需要做哪些更改
flutter 从3.13.9 升级:3.27.2 nativeshell组合库中的 1、nativeshell_build库替换为github上的最新代码 可以解决两个问题: 一个是arg("--ExtraFrontEndOptions--no-sound-null-safety") 在新版flutter中这个构建参数不支持了导致的build错误…...
使用 Vue 3 的 watchEffect 和 watch 进行响应式监视
Vue 3 的 Composition API 引入了 <script setup> 语法,这是一种更简洁、更直观的方式来编写组件逻辑。结合 watchEffect 和 watch,我们可以轻松地监视响应式数据的变化。本文将介绍如何使用 <script setup> 语法结合 watchEffect 和 watch&…...
使用shell命令安装virtualbox的虚拟机并导出到vagrant的Box
0. 安装virtualbox and vagrant [rootolx79vagrant ~]# cat /etc/resolv.conf #search 114.114.114.114 nameserver 180.76.76.76-- install VirtualBox yum install oraclelinux-developer-release-* wget https://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 -O /etc/pki/rpm-g…...
MySQL 基础学习(3):排序查询和条件查询
MySQL 查询与条件操作:详解与技巧 在本文中,我们将探讨 MySQL 中的查询操作及其相关功能,包括别名、去重、排序查询和条件查询等,并总结一些最佳实践和注意事项。 一、使用别名(AS) 在查询中,…...
2025数学建模美赛|赛题翻译|E题
2025数学建模美赛,E题赛题翻译 更多美赛内容持续更新中......
solidity高阶 -- 继承
Solidity是一种面向区块链的智能合约编程语言,广泛应用于以太坊等区块链平台。继承是Solidity中一个非常重要的特性,它允许开发者通过创建子合约来扩展父合约的功能,从而实现代码的复用和层次化设计。本文将通过具体实例详细介绍Solidity语言…...
SpringBoot统一数据返回格式 统一异常处理
统一数据返回格式 & 统一异常处理 1. 统一数据返回格式1.1 快速入门1.2 存在问题1.3 案列代码修改1.4 优点 2. 统一异常处理 1. 统一数据返回格式 强制登录案例中,我们共做了两部分⼯作 通过Session来判断⽤⼾是否登录对后端返回数据进⾏封装,告知前端处理的结果 回顾 后…...
C语言学习强化
前言 数据的逻辑结构包括: 常见数据结构: 线性结构:数组、链表、队列、栈 树形结构:树、堆 图形结构:图 一、链表 链表是物理位置不连续,逻辑位置连续 链表的特点: 1.链表没有固定的长度…...
反馈驱动、上下文学习、多语言检索增强等 | Big Model Weekly 第55期
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 01 A Bayesian Approach to Harnessing the Power of LLMs in Authorship Attribution 传统方法严重依赖手动特征,无法捕捉长距离相关性,限制了其有效性。最近的研究利用预训练语言模型的…...
Redis 详解
简介 Redis 的全称是 Remote Dictionary Server,它是一个基于内存的 NoSQL(非关系型)数据库,数据以 键值对 存储,支持各种复杂的数据结构 为什么会出现 Redis? Redis 的出现是为了弥补传统数据库在高性能…...
git reset (取消暂存,保留工作区修改)
出现这种情况的背景:我不小心把node_modules文件添加到暂存区了,由于文件过大,导致不能提交,所以我想恢复之前的状态,但又不想把修改的代码恢复为之前的状态,所以使用这个命令可以只恢复暂存区的状态&#…...
C++ 自定义字面量
在C11中,用户自定义字面量(User-Defined Literals)为程序员提供了前所未有的灵活性和便利性,它允许我们根据自己的需求定义字面量,从而使代码更加直观、易读且富有表现力。 什么是用户定义字面量? 在C中&…...
2024年面对不确定性
24年处在了十字路口,面对工作、家庭、生活的责任,一切变得不确定了,量子力学给了我们新的认识世界的角度,不确定性才是这个世界的底色,我们怎么选择? 不停的思考 霍金在大设计书中给出了深刻的哲学思想&a…...
Coze插件开发之基于已有服务创建并上架到扣子商店
Coze插件开发之基于已有服务创建并上架到扣子商店 在应用开发中,需要调用各种插件,以快速进行开发。但有时需要调用的插件在扣子商店里没有,那怎么办呢? 今天就来带大家快速基于已有服务创建一个新的插件 简单来讲,就是…...
