你想提升自己对 C++ 语言的掌控力吗?让我们来探索这个庞大的 C++ 练习题库,其中包含了专为初学者以及高级程序员量身定制的题目。我们提供了大量涵盖所有重要主题的编程练习,包括类、对象、数组、矩阵和指针。通过这种注重实战的方法,掌握 C++ 并在线进行练习吧。
这里有超过 50 道 C++ 练习题供你实践,并且每一题都附有详细的解答以便更好地理解。你可以直接在我们的在线 IDE 中解决这些问题。
对于 C++ 学习者来说,定期测试自己的知识至关重要。我们的在线练习平台提供了广泛的问题集,旨在提升你的 C++ 熟练度。
Q1. 编写一个程序,在控制台屏幕上打印 “Hello World”。
编写一个简单的程序,在控制台上输出 "Hello World" 字样。
例如,
> 输出: Hello World
点击这里查看解决方案。
Q2. 编写一个程序,读取并打印用户输入的数字。
在这个问题中,你需要创建一个简单的程序,读取用户输入的数字并将其打印在控制台屏幕上。
例如,
> 输入: 输入任意数字: 25
> 输出: 输入的数字: 25
点击这里查看解决方案。
Q3. 编写一个程序,打印字符的 ASCII 值。
在 C++ 中,每个字符都有其关联的 ASCII 值。在这个问题中,我们需要在控制台上打印出该字符的 ASCII 值。
例如,
> 输入: 字符 = A
> 输出: ‘A‘ 的 ASCII 值 = 65
点击这里查看解决方案。
Q4. 编写一个程序,交换两个数字。
你需要创建一个程序,交换两个数字变量的值。这意味着第一个变量的值将被存储在第二个变量中,而第二个变量的值应存储在第一个变量中。
例如,
> 输入: a = 10, b = 250
> 输出: a = 250, b = 10
点击这里查看解决方案。
Q5. 编写一个程序,查找 int、float、double 和 char 的大小。
在 C++ 中,每种数据类型都需要一定的内存来存储数据。在这个程序中,你需要在控制台上打印 int、float、double 和 char 数据类型所需的内存(即字节大小)。
例如,
> 输出:
> int 的大小: 10 bytes
> float 的大小: 20 bytes
> double 的大小: 30 bytes
> char 的大小: 40 bytes
点击这里查看解决方案。
Q6. 编写一个程序,计算复利。
在这个问题中,你需要编写一个程序,根据给定的本金、利率和时间计算并打印复利。
例如,
> 输入:
> 本金 = 25000
> 利率 = 12%
> 时间 = 5 年
>
> 输出:
> 复利 = 19058.54
点击这里查看解决方案。
Q7. 编写一个程序,检查整数是奇数还是偶数。
在这个问题中,我们只需简单地判断给定的整数是奇数还是偶数,并在控制台上打印输出结果。
例如,
> 输入: 数字 = 28
> 输出: 28 是偶数。
点击这里查看解决方案。
Q8. 编写一个程序,找出 3 个数字中最大的一个。
在这个问题中,给定 3 个数字,你需要找出其中最大的那个。
例如,
> 输入: a = 10, b = 21 以及 c = 4
> 输出: b 是最大的。
点击这里查看解决方案。
Q9. 编写一个程序,检查给定的年份是否为闰年。
在这个问题中,你需要编写一个程序,接收一个年份作为输入,然后检查它是否是闰年。
例如,
> 输入: 2020
> 输出: 2020 是闰年
点击这里查看解决方案。
Q10. 编写一个程序,检查一个数字是否为质数。
根据因子的数量,数字可能是质数或非质数。在这个程序中,我们需要判断一个数是否只能被 1 和它自身整除。这是理解循环和条件判断逻辑的经典案例。
例如,
> 输入: 数字 = 7
> 输出: 7 是质数。
点击这里查看解决方案。
—
进阶挑战:2026 年视角的现代 C++ 开发范式
仅仅掌握语法是远远不够的。在我们最近的几个企业级项目中,我们发现代码的可维护性、安全性以及对现代硬件的利用能力,才是区分初级和高级程序员的关键。让我们深入探讨一些 2026 年必不可少的现代 C++ 开发理念。
现代内存管理与智能指针:告别 delete
在早期的 C++ 教程中,你可能经常看到 INLINECODEd0ab4fca 和 INLINECODE561533d5 成对出现。但在现代工程实践中,直接管理原始指针是极其危险的,容易导致内存泄漏或悬空指针。我们现在完全遵循 RAII(资源获取即初始化)原则。
让我们来看一个实际的例子:
假设我们需要处理一个大型数据矩阵。
#include
#include
#include // 包含智能指针头文件
#include
// 使用 std::unique_ptr 自动管理内存
// 我们不再需要手动写 delete,这大大降低了内存泄漏的风险
void processMatrix() {
// 创建一个包含 1000 个整数的 vector,自动管理堆内存
auto data = std::make_unique<std::vector>(1000);
// 填充数据
for(int i = 0; i < 1000; ++i) {
(*data)[i] = i * i;
}
// 即使发生异常,unique_ptr 也会自动释放内存
std::cout << "Matrix processed. Size: " <size() << std::endl;
}
int main() {
processMatrix();
return 0;
}
现代并发编程:利用多核 CPU
2026 年的硬件环境早已是多核天下。如果我们编写的程序仍然是单线程的,那就是在浪费硬件资源。我们使用 C++11 引入并在后续版本中大幅优化的 INLINECODEe7cf45d1 和 INLINECODE23f1c3af 库来编写高性能并发代码。
让我们来看一个并发处理的例子:
在处理大量数据计算时,我们可以将任务分配给多个线程。
#include
#include
#include
#include
// 模拟一个繁重的计算任务
void heavyComputation(int id) {
std::cout << "Thread " << id << " starting work..." << std::endl;
// 模拟工作负载
volatile double sum = 0;
for(int i = 0; i < 1000000; ++i) {
sum += i;
}
std::cout << "Thread " << id << " finished." << std::endl;
}
int main() {
std::vector threads;
// 我们启动 4 个并发线程
// 在现代 IDE(如 Cursor 或 Visual Studio 2022)中,
// 你可以清楚地看到这些线程的并行执行轨迹
for(int i = 0; i < 4; ++i) {
threads.emplace_back(heavyComputation, i);
}
// 等待所有线程完成 (Join 确保主线程不会提前退出)
for(auto& t : threads) {
t.join();
}
std::cout << "All threads completed. Benchmark finished." << std::endl;
return 0;
}
在我们最近的一个项目中,通过引入并发处理,我们将数据处理的时间缩短了近 4 倍(取决于核心数)。这种性能优化对于用户延迟敏感的应用至关重要。
探索 2026 技术前沿:AI 辅助与 "氛围编程"
编程的本质正在发生变化。现在的我们不再仅仅是在与编译器对话,更是在与 AI 结对编程。这被称为 "Vibe Coding" —— 我们通过自然语言描述意图,AI 帮助我们生成骨架代码,然后我们负责验证、优化和架构设计。
1. 使用 AI 进行单元测试生成
以前我们需要手动编写大量的边界条件测试。现在,我们可以将上述的 processMatrix 函数直接提交给 AI IDE(如 GitHub Copilot 或 Windsurf),并提示:"为这个函数生成包含边界情况、空指针异常测试的 Google Test 套件。"
2. 交互式调试
当我们面对复杂的 C++ 模板错误信息时,往往会感到头大。现代的做法是直接询问 AI:"为什么这段代码在 C++20 标准下编译失败?如何修正 Concepts 约束?"
避免常见陷阱:来自生产环境的经验
在我们的实战经验中,新手最容易犯的错误包括:
- 过度使用全局变量:这会导致严重的线程安全问题。我们尽量使用局部变量和依赖注入。
- 忽视 INLINECODE6ef03d38 正确性:如果函数不应该修改参数,请务必标记为 INLINECODE377fc2de。这不仅能让编译器帮你优化代码,还能让代码意图更清晰。
- 未初始化的变量:这是导致 C++ 程序出现 "Undefined Behavior"(未定义行为)的主要原因。永远在声明时初始化变量,或者使用
std::optional来处理可能为空的值。
结语
C++ 是一门强大且不断进化的语言。通过掌握这些经典练习题,并融合现代 C++20/23 的特性(如 Concepts、Modules、Coroutines)以及 AI 辅助开发工作流,你将能够构建出既高效又健壮的系统。
让我们继续在下一个章节中探讨更复杂的算法与数据结构实战吧。