🔒 C3-10 课程密码

请输入本节课的密码进入课程

密码错误,请重新输入

📚 C3-10 导航: 课程学习 知识点回顾 随堂练习 课后拓展 代码填空 OJ练习 拓展解析

🏆 C3-10 阶段测试

本节课我们将综合复习C3阶段学过的所有知识,通过阶段测试检验学习成果!

📋 本节课内容

💡 准备好你的大脑和键盘,我们开始吧!

📦 回顾一:数组基础

数组声明与下标

int a[100]; // 创建100个int空间 // 下标从0开始!a[0]是第一个,a[99]是最后一个 // 最大下标 = 长度 - 1 = 99

字符数组 vs 整数数组

char s[20]; cin >> s; // ✅ 字符数组可以整体输入! int a[100]; // cin >> a; // ❌ int数组不能这样!必须逐个cin >> a[i];
⚠️ 易错:int a[100]的最大下标是99,不是100!越界访问会导致程序崩溃。

🔄 回顾二:循环与枚举

for循环三要素

for(初始化; 条件; 更新) { // 循环体 } // 输出1到100: for(int i = 1; i <= 100; i++) { // ★ <= 包含100 cout << i << endl; }

枚举法判断倍数/因数

// 判断i是m的倍数: if(i % m == 0) { ... } // ★ == 是判断,不是= // 公因数:两个都要整除 if(a % i == 0 && b % i == 0) { ... }
💡 打擂台法求最大最小值:先设第一个为擂主,后面逐个挑战,赢了换擂主。

🔐 回顾三:凯撒密码

字母加密(26个字母)

// 小写字母向后移k位: c = (c - 'a' + k) % 26 + 'a'; // 大写字母: c = (c - 'A' + k) % 26 + 'A';

数字加密(10个数字)

// ★ 数字只有0~9共10个!用%10不是%26! c = (c - '0' + k) % 10 + '0';
⚠️ 最易错点:字母用%26(26个字母),数字用%10(10个数字),别搞混!

📦 回顾四:自定义函数

函数定义格式

返回值类型 函数名(参数列表) { // 函数体 return 返回值; } // 示例:求两数之和 int add(int a, int b) { return a + b; }

调用函数

int result = add(3, 5); // 调用,结果存入result cout << result << endl; // 输出8
💡 void函数没有return值,用来执行操作不返回结果。

🔀 回顾五:排序

sort函数基础

#include // ★ 头文件 sort(a, a + n); // 默认升序(从小到大)

降序排序(自定义cmp)

bool cmp(int a, int b) { return a > b; // ★ 从大到小 } sort(a, a + n, cmp);
⚠️ sort一定要加#include <algorithm>,否则编译错误!

✏️ 选择题 1/4:数组下标

我们声明了数组 int a[100],这个数组的最大下标是多少?

A. 98
B. 99
C. 100
D. 101
💡 解析:C++数组下标从0开始。int a[100]有100个元素,下标是0,1,2,...,99。所以最大下标是99,不是100!这是最高频的易错点。

✏️ 选择题 2/4:for循环输出

下面哪个for循环可以正确输出1到100的所有整数?

A. for(int i=1; i<100; i++)
B. for(int i=1; i<=100; i++)
C. for(int i=0; i<=100; i++)
D. for(int i=0; i<100; i++)
💡 解析:要输出1到100:起始i=1(不从0开始),条件i<=100(必须包含100,不能用<100否则漏掉100),每次i++。选项B完全正确。

✏️ 选择题 3/4:凯撒密码数字

凯撒密码中,对数字字符加密应该用哪个公式?

A. (ming-'0'+k)%26+'0'
B. (ming-'0'+k)%10+'0'
C. (ming-'a'+k)%10+'a'
D. (ming-'A'+k)%26+'A'
💡 解析:数字只有0~9共10个,所以取模应该是10(%10),不是26。字母才是26个用%26。这是凯撒密码最容易搞混的地方。

✏️ 选择题 4/4:数组与字符数组

关于数组,以下哪个说法是正确的?

A. int a[5]; 可以用 cin >> a; 整体输入
B. char s[20]; 可以用 cin >> s; 整体输入
C. 数组初始化的元素个数可以超过声明长度
D. for(int i=0; i<=5; i++) 可以遍历a[5]的全部元素
💡 解析:字符数组可以用cin>>s整体输入字符串。但int数组不能这样,必须逐元素cin>>a[i]。遍历数组时i<n不是i<=n(否则越界)。

💻 编程题 1/3:m的倍数

📝 题目描述

输入两个正整数n和m,请输出1到n之间所有是m的倍数的数,每行一个。

📥 输入输出

样例输入: 10 3 样例输出: 3 6 9

💡 思路提示

用for循环遍历1到n,判断i%m==0,是就输出。注意==是两个等号!

💻 编程题 2/3:公因数之和

📝 题目描述

输入两个正整数a和b,请求出它们的所有公因数之和。

📥 输入输出

样例输入: 12 18 样例输出: 12

💡 思路提示

枚举i从1到a,判断a%i==0 && b%i==0,满足就累加到sum。两个条件缺一不可!

💻 编程题 3/3:最大跨度值

📝 题目描述

输入n个整数,请求出这些数中最大值与最小值的差(最大跨度值)。

📥 输入输出

样例输入: 5 3 7 2 9 1 样例输出: 8

💡 思路提示

打擂台法:先设第一个数同时为max和min,遍历更新,最后输出max-min。

🎉 课程结束!

恭喜你完成了C3-10阶段测试的课程内容!

📌 课后任务

  1. ✅ 完成随堂练习(5选择+3判断)
  2. ✅ 完成知识大闯关5个关卡
  3. ✅ 完成OJ平台15道练习题
  4. ✅ 查看拓展解析(问妈妈要密码)
💪 C3阶段圆满结束!接下来我们将进入C4的学习——循环嵌套与枚举!