2025年6月28和29日复习和预习(C++)

学习笔记大纲​

一、预习部分:数组基础​

(一)核心知识点​

  1. 数组的创建:掌握一维数组的声明方式,如int arr[5];(创建一个包含 5 个整数的数组)。重点在于理解数组长度需为常量,且在声明时确定。​
  1. 数组的初始化:学会为数组赋值,例如int arr[] = {1, 2, 3};,可省略数组长度,编译器根据初始化值自动确定。​
  1. 数组元素的访问:通过索引访问数组元素,索引从 0 开始,如arr[1]表示访问数组arr的第二个元素。​

(二)重点考点​

  1. 数组声明时长度的正确设定。​
  1. 数组初始化的不同方式及适用场景。​
  1. 数组元素索引的正确使用。​

(三)难点易错点​

  1. 数组索引越界问题,如访问arr[5](数组长度为 5 时,最大索引为 4)。​
  1. 错误地将变量作为数组长度进行声明,例如int n = 5; int arr[n];(C++ 中这种写法在部分编译器不支持)。​

(四)预习练习题​

1. 填空题​

(1) 声明一个包含 10 个浮点数的数组,正确写法是______。​

(2) 初始化一个数组arr,包含元素 3、5、7,写法为______。​

(3) 若int arr[] = {1, 2, 3, 4, 5},访问数组中第 4 个元素的表达式是______。​

2. 选择题​

(1) 以下数组声明正确的是( )​

A. int arr;​

B. int arr [ ];​

C. int n = 10; int arr [n];​

D. int arr [10];​

(2) 若int arr[] = {1, 2, 3},则数组arr的长度为( )​

A. 1​

B. 2​

C. 3​

D. 不确定​

(3) 访问数组int arr[5]的最后一个元素,正确的是( )​

A. arr [5]​

B. arr [4]​

C. arr [6]​

D. arr [-1]​

3. 判断题​

(1) 数组索引可以从 1 开始。( )​

(2) 声明数组时,长度必须在编译时确定。( )​

(3) 初始化数组时,必须指定数组长度。( )​

4. 编程题​

(1) 声明并初始化一个包含 5 个整数的数组,然后输出数组中的所有元素。​

(2) 创建一个数组,存储 5 个学生的成绩,计算并输出这些成绩的平均值。​

(3) 编写程序,交换数组中第一个元素和最后一个元素的值,并输出交换后的数组。​

(4) 声明一个数组,接收用户输入的 10 个整数,找出其中的最大值并输出。​

(5) 初始化一个数组,包含 10 个随机整数,统计数组中偶数的个数并输出。​

(6) 编写程序,判断数组中是否存在某个特定的整数(用户输入),若存在则输出其索引,否则输出 - 1。​

(7) 创建一个数组,存储一周 7 天的温度,找出温度最高的一天并输出是第几天。​

(8) 声明一个数组,将数组中的元素逆序存储(例如原数组为 {1, 2, 3},逆序后为 {3, 2, 1}),并输出逆序后的数组。​

(9) 初始化一个数组,包含 8 个字符,判断这些字符组成的字符串是否为回文串(正读和反读都一样),并输出判断结果。​

(10) 编写程序,创建一个数组,接收用户输入的 8 个整数,将数组中所有奇数移到数组的前面,偶数移到数组的后面,并输出调整后的数组。​

二、复习部分:循环与判断语句​

(一)核心知识点​

  1. 累加器公式:​
  • 初始化累加器变量,如int sum = 0;。​
  • 在循环中执行累加操作,如sum = sum + i;(i为循环变量)。​
  • 循环结束后,sum即为累加结果。​
  1. 循环语句:​
  • for 循环:掌握其语法结构for (初始化表达式; 条件表达式; 更新表达式) { 循环体; },常用于已知循环次数的场景。重点是理解三个表达式的作用及执行顺序。​
  • while 循环:语法为while (条件表达式) { 循环体; },条件为真时执行循环体。​
  1. 判断语句:​
  • if - else if - else:用于多条件判断,如判断奇数和偶数。​
  • switch - case:适用于多个固定值的判断,如根据输入数字判断是否上编程课。​

(二)重点考点​

  1. 累加器的正确使用及在循环中的位置。​
  1. for 循环和 while 循环的条件判断与循环体执行逻辑。​
  1. if - else if - else 和 switch - case 语句的适用场景及语法规则。​

(三)难点易错点​

  1. 循环条件设置不当导致死循环或循环次数错误。​
  1. 在 switch - case 语句中忘记使用break,导致穿透执行。​
  1. 累加器初始化位置错误,或在错误的循环中使用累加器。​

(四)复习练习题​

1. 填空题​

(1) for 循环中,若要计算 1 到 100 的和,初始化表达式为int i = 1;,条件表达式为______,更新表达式为______。​

(2) 在 if 语句中,判断一个数num为偶数的条件表达式是______。​

(3) switch 语句中,每个 case 分支后通常需要添加______语句,以防止穿透执行。​

2. 选择题​

(1) 以下 for 循环的循环次数是( )​

for (int i = 0; i < 10; i += 2) {​

// 循环体​

}​

A. 5​

B. 10​

C. 20​

D. 无限次​

(2) 若要判断一个数是否在 1 到 100 之间,以下 if 语句正确的是( )​

A. if (num > 1 && num < 100) {... }​

B. if (num >= 1 || num <= 100) {... }​

C. if (num >= 1 && num <= 100) {... }​

D. if (num > 1 || num < 100) {... }​

(3) 在 switch - case 语句中,若没有匹配的 case,执行( )​

A. 第一个 case 分支​

B. 最后一个 case 分支​

C. default 分支(如果存在)​

D. 不执行任何分支​

3. 判断题​

(1) while 循环中,只要条件表达式为真,循环体就会一直执行。( )​

(2) 在 for 循环中,初始化表达式只能初始化一个变量。( )​

(3) if - else if - else 语句中,最多只能有一个 else if 分支。( )​

4. 编程题​

(1) 使用 for 循环计算 1 到 200 中所有能被 3 整除的数的和。​

(2) 输入一个整数,使用 while 循环输出 1 到该整数的所有偶数。​

(3) 编写程序,使用 if - else if - else 语句判断一个年份是否为闰年(闰年的条件:能被 4 整除但不能被 100 整除,或者能被 400 整除)。​

(4) 使用 switch - case 语句,根据用户输入的 1 - 7 的数字,输出对应的星期几(如输入 1,输出 “星期一”)。​

(5) 计算 1 到 1000 中,能被 6 和 7 整除的数的和,并输出这些数字(用空格分开),最后输出数字的个数。​

(6) 输入一个整数,判断它是正数、负数还是零,使用 if - else 语句实现,并输出判断结果。​

(7) 使用 for 循环输出 1 到 100 之间所有能被 5 整除但不能被 3 整除的数。​

(8) 编写程序,接收用户输入的 5 个整数,使用 switch - case 语句对这 5 个数进行排序(简单选择排序,通过多次比较和交换实现),并输出排序后的结果。​

(9) 利用 while 循环,计算用户输入的一组数字(以 - 1 作为结束标志)的平均值,并输出结果。​

(10) 编写程序,判断一个字符串(用户输入)中是否包含特定字符(用户输入),使用 for 循环遍历字符串,若包含则输出该字符在字符串中的位置,否则输出 “未找到”。



1. 填空题

(1) float arr[10];
解析:声明数组需指定类型(float)、数组名(arr)和元素个数(10),方括号内为常量表达式。

(2) int arr[] = {3, 5, 7};
解析:初始化时若提供全部元素值,可省略数组大小,编译器自动推断长度为 3,元素类型为整型(int)。

(3) arr[3]
解析:C++ 数组下标从 0 开始,第 4 个元素对应下标 3,值为 4。

2. 选择题

(1) D. int arr [10];
解析:

  • A 错误:未指定数组大小。
  • B 错误:声明数组时必须指定大小(初始化时可省略)。
  • C 错误:C++ 不支持用变量声明数组大小(需为常量表达式)。

(2) C. 3
解析:初始化列表中有 3 个元素,数组长度为 3。

(3) B. arr [4]
解析:数组int arr[5]的下标范围为 0~4,最后一个元素为arr[4]

3. 判断题

(1) ×
解析:C++ 数组索引必须从 0 开始,不能从 1 开始。

(2) 
解析:静态数组的长度需在编译时确定(动态数组需用newvector)。

(3) ×
解析:初始化时若提供全部元素值,可省略数组长度(如int arr[] = {1,2,3};)。

4. 编程题

(1) 声明、初始化并输出数组

cpp

运行

#include <iostream>
using namespace std;
int main() {int arr[5] = {1, 2, 3, 4, 5};for (int i = 0; i < 5; i++) {cout << arr[i] << " ";}return 0;
}

解析:用for循环遍历数组并输出元素。

(2) 计算成绩平均值

cpp

运行

#include <iostream>
using namespace std;
int main() {int scores[5] = {85, 90, 75, 80, 95};int sum = 0;for (int i = 0; i < 5; i++) {sum += scores[i];}double avg = (double)sum / 5;cout << "平均值:" << avg << endl;return 0;
}

解析:累加元素后除以 5,用double避免整数除法截断。

(3) 交换首尾元素

cpp

运行

#include <iostream>
using namespace std;
int main() {int arr[5] = {10, 20, 30, 40, 50};int temp = arr[0];arr[0] = arr[4];arr[4] = temp;for (int i = 0; i < 5; i++) {cout << arr[i] << " ";}return 0;
}

解析:用临时变量temp暂存首元素,避免直接赋值导致数据丢失。

(4) 找最大值

cpp

运行

#include <iostream>
using namespace std;
int main() {int arr[10];for (int i = 0; i < 10; i++) {cin >> arr[i];}int max_val = arr[0];for (int i = 1; i < 10; i++) {if (arr[i] > max_val) {max_val = arr[i];}}cout << "最大值:" << max_val << endl;return 0;
}

解析:先假设第一个元素为最大值,再遍历更新max_val

(5) 统计偶数个数

cpp

运行

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {srand(time(0)); // 初始化随机数种子int arr[10];int even_count = 0;for (int i = 0; i < 10; i++) {arr[i] = rand() % 100; // 生成0~99的随机数if (arr[i] % 2 == 0) {even_count++;}}cout << "偶数个数:" << even_count << endl;return 0;
}

解析:用rand()%100生成随机数,arr[i]%2==0判断偶数。

(6) 查找特定整数

cpp

运行

#include <iostream>
using namespace std;
int main() {int arr[7] = {12, 34, 56, 78, 90, 11, 22};int target;cin >> target;int index = -1;for (int i = 0; i < 7; i++) {if (arr[i] == target) {index = i;break;}}cout << index << endl;return 0;
}

解析:遍历数组,找到目标值后记录下标并跳出循环。

(7) 找温度最高的一天

cpp

运行

#include <iostream>
using namespace std;
int main() {int temp[7] = {25, 28, 26, 30, 27, 29, 28};int max_temp = temp[0];int max_day = 1;for (int i = 1; i < 7; i++) {if (temp[i] > max_temp) {max_temp = temp[i];max_day = i + 1; // 天数从1开始}}cout << "第" << max_day << "天温度最高(" << max_temp << "℃)" << endl;return 0;
}

解析:遍历数组时记录最大值及其下标(转换为天数需 + 1)。

(8) 数组逆序

cpp

运行

#include <iostream>
using namespace std;
int main() {int arr[3] = {1, 2, 3};for (int i = 0; i < 1; i++) { // 循环次数为长度/2int temp = arr[i];arr[i] = arr[2 - i];arr[2 - i] = temp;}for (int i = 0; i < 3; i++) {cout << arr[i] << " ";}return 0;
}

解析:交换首尾对称元素,循环次数为length/2(3 个元素只需交换 1 次)。

(9) 判断回文串

cpp

运行

#include <iostream>
using namespace std;
int main() {char str[8] = {'a', 'b', 'c', 'd', 'd', 'c', 'b', 'a'};bool is_palindrome = true;for (int i = 0; i < 4; i++) {if (str[i] != str[7 - i]) {is_palindrome = false;break;}}cout << (is_palindrome ? "是回文串" : "不是回文串") << endl;return 0;
}

解析:比较对称位置的字符(如第 i 个与第 7-i 个),全部相等则为回文。

(10) 奇偶元素分区

cpp

运行

#include <iostream>
using namespace std;
int main() {int arr[8];for (int i = 0; i < 8; i++) {cin >> arr[i];}int temp[8], odd_idx = 0, even_idx = 0;// 先存奇数for (int i = 0; i < 8; i++) {if (arr[i] % 2 != 0) {temp[odd_idx++] = arr[i];}}// 再存偶数for (int i = 0; i < 8; i++) {if (arr[i] % 2 == 0) {temp[odd_idx++] = arr[i];}}// 复制回原数组并输出for (int i = 0; i < 8; i++) {arr[i] = temp[i];cout << arr[i] << " ";}return 0;
}

解析:用临时数组先存奇数,再存偶数,最后复制回原数组。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/89845.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/89845.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【centos8服务如何给服务器开发3306端口】

在 CentOS 8 中开放 MySQL 默认端口 3306&#xff0c;需要配置防火墙和 SELinux。以下是详细步骤&#xff1a; 1. 开放防火墙端口&#xff08;Firewalld&#xff09; CentOS 8 默认使用 firewalld 管理防火墙&#xff0c;执行以下命令开放 3306 端口&#xff1a; # 开放 TCP 33…

python系列之:使用md5和sha256完成签名认证,调用接口

python系列之:使用md5和sha256完成签名认证,调用接口 MD5签名和sha256签名认证md5认证代码sha256认证代码拼接签名生成签名拼接url调用接口MD5签名和sha256签名认证 MD5签名认证 算法特性: 生成128位(16字节)的哈希值计算速度快已被证明存在碰撞漏洞(不同输入可能产生相同…

SpringBatch配置与入门实例

通过对SpringBatch基础概念的了解&#xff0c;参考&#xff1a;SpringBatch使用介绍 任何技术用起来之后&#xff0c;再去探究内部细节的原理&#xff0c;才会事半功倍。下面记录一下笔者在SpringBoot项目中集成SpringBatch&#xff0c;并且通过一个小的实例展示如何简单使用它…

spdlog 项目介绍与二次封装

目录 介绍 二次封装 介绍 spdlog 是C开源的第三方日志库&#xff0c;整个项目在 spdlog 命名空间中。 在 spdlog 命名空间的 level 命名空间里定义了枚举类型&#xff0c;把日志分为了 5 个等级&#xff1a;trace debug info warn err critical enum level_enum : in…

shell编程之awk命令详解

1. awk 教程 1.1 调用 awk awk 是一种强大的文本处理工具&#xff0c;在 Linux 系统中广泛应用于日志分析、数据处理等场景。调用 awk 主要有以下三种方式&#xff1a; 1.1.1 命令行方式 基本语法为&#xff1a; awk (-F filed-separator) commands input-files其中&#…

服务器需要备案吗?在哪些地区需要备案?

&#x1f3af; 服务器是否需要备案&#xff1f; 是否需要备案&#xff0c;关键看以下两个因素&#xff1a; 服务器所在地&#xff08;机房位置&#xff09; 网站面向的访问群体&#xff08;境内或境外&#xff09; &#x1f3f7; 中国大陆&#xff08;境内&#xff09;服务器…

HarmonyOS学习3---ArkUI

1、组件 1.1、基础组件 1.2、布局容器 1.3、页面导航 1.4、其他组件 2、ArkTs/C混合开发&#xff0c;高性能编码 3、布局能力&交互归一 4、实时开发预览

Java学习第十五部分——MyBatis

目录 一.概述 二.特点 三.组件 四.Mapper 五.配置文件 六.使用步骤 七.高级功能 八.优点缺点 九.项目实战 1.打开idea创建一个Java项目&#xff0c;构建系统选“Maven”​ 2.创建完成后若依赖报错&#xff0c;可通过下载或重新加载来解决​ 3.配置pom.xml文件&…

小企业如何搭建本地私有云服务器,并设置内部网络地址提供互联网访问

在数字化时代&#xff0c;很多普通公司小企业规模的&#xff0c;利用本地小型服务器或计算机搭建私有云服务器&#xff0c;不仅可以提升数据管理效率&#xff0c;还能保障业务数据的安全性和灵活性。以下是为小企业量身定制的私有云服务器搭建指南&#xff0c;及最后附无公网IP…

MySQL 八股文【持续更新ing】

MySQL 八股文【持续更新ing】 文章目录 MySQL 八股文【持续更新ing】前言一、MySQL的存储引擎有哪些&#xff1f;他们之间有什么区别&#xff1f;二、MySQL InnoDB 引擎中的聚簇索引和非聚簇索引有什么区别&#xff1f;1.InnoDB 中的聚簇索引2.InnoDB 中的非聚簇索引 三、MySQL…

每日算法刷题Day42 7.5:leetcode前缀和3道题,用时2h

7. 3026.最大好子数组和(中等,学习) 3026. 最大好子数组和 - 力扣&#xff08;LeetCode&#xff09; 思想 1.给你一个长度为 n 的数组 nums 和一个 正 整数 k 。 如果 nums 的一个子数组中&#xff0c;第一个元素和最后一个元素 差的绝对值恰好 为 k &#xff0c;我们称这个…

Linux操作系统之文件(四):文件系统(上)

前言&#xff1a; 我们前几篇文章讲了缓冲区与重定向的有关概念&#xff0c;这些设计是linux系统的核心机制&#xff0c;对系统性能、资源管理和用户操作灵活性有重要意义。 不涉及一些硬件就不可能让大家清楚地去理解文件系统&#xff0c;所以这篇文章&#xff0c;我将会从计…

java中,stream的filter和list的removeIf筛选速度比较

在 Java 里&#xff0c;Stream 的filter和 List 的removeIf筛选效率要依据具体情形来判断。 1. 操作本质有别 Stream 的 filter&#xff1a; 它是一种中间操作&#xff0c;不会立刻执行&#xff0c;而是把筛选条件记录下来。只有遇到终端操作时&#xff0c;才会开始处理元素。…

Python(28)Python循环语句指南:从语法糖到CPython字节码的底层探秘

目录 引言一、推导式家族全解析1.1 基础语法对比1.2 性能对比测试 二、CPython实现揭秘2.1 字节码层面的秘密2.2 临时变量机制 三、高级特性实现3.1 嵌套推导式优化3.2 条件表达式处理 四、性能优化指南4.1 内存使用对比4.2 执行时间优化技巧 五、最佳实践建议六、总结&#x1…

深度分析:Microsoft .NET Framework System.Random 的 C++ 复刻实现

深度分析&#xff1a;Microsoft .NET Framework Random 的 C 复刻实现 核心原理与算法结构 本实现基于 Knuth 减随机数生成器&#xff08;Subtractive Random Number Generator&#xff09;&#xff0c;是 .NET Framework 中 System.Random 的精确复刻。其核心特点包括&#x…

[论文阅读] 人工智能 | 在非CUDA硬件上运行几何学习:基于Intel Gaudi-v2 HPU的PyTorch框架移植实践

在非CUDA硬件上运行几何学习&#xff1a;基于Intel Gaudi-v2 HPU的PyTorch框架移植实践 论文标题&#xff1a;PyTorch-based Geometric Learning with Non-CUDA Processing Units: Experiences from Intel Gaudi-v2 HPUs arXiv:2507.01031 (cross-list from cs.LG) PyTorch-ba…

Python-多线程-threading

1 需求 2 接口 3 示例 4 参考资料 Python treading 模块 | 菜鸟教程

2025年- H91-Lc199-- 62.不同路径(多维动态规划)--Java版

1.题目描述 2.思路 dp含义&#xff1a;代表到当前位置的路径数 递推公式&#xff1a;dp[i][j]dp[i-1][j]dp[i][j-1] dp数组初始化&#xff0c;我们要确保第一行和第一列是有值的. dp数组的遍历顺序&#xff1a;我们需要从左往右遍历&#xff0c;从上往下遍历。并且把第一行和第…

char 不是 Java 中的 2 字节(16 位)吗? 为什么用 UTF-8 编码写入时,一个中文要占 3 个字节?

char 不是 Java 中的 2 字节&#xff08;16 位&#xff09;吗&#xff1f; 为什么用 UTF-8 编码写入时&#xff0c;一个中文要占 3 个字节&#xff1f; ✅ 一、Java 中的 char 是什么&#xff1f; Java 的 char 是一个 固定大小的 2 字节&#xff08;16 位&#xff09;类型&am…

【Elasticsearch】检索排序 分页

检索排序 & 分页 1.测试数据准备2.排序功能2.1 简单字段排序2.2 多字段排序2.3 日期排序 3.分页功能3.1 基础分页3.2 深度分页&#xff08;不推荐大数据量使用&#xff09;3.3 使用 search_after 进行高效分页 4.综合示例&#xff1a;高亮排序分页5.实践建议 1.测试数据准备…