C++语言程序员编程必收藏的20个经典实战案例(附完整源码)

C++ 作为一门底层高性能语言,拥有广泛的应用领域,从系统开发、游戏引擎、图形图像、嵌入式到人工智能等,都能看到它的身影。本文为你整理并实操了 20 个 必收藏的经典 C++ 案例,协助你提升实战水平与编程逻辑。

一、基础语法与算法类案例

案例1:斐波那契数列(递归 + 动态规划)

int Fibonacci(int n) {

if (n <= 1) return n;

return Fibonacci(n – 1) + Fibonacci(n – 2);

}

案例2:判断素数

bool isPrime(int n) {

if (n <= 1) return false;

for (int i = 2; i * i <= n; ++i)

if (n % i == 0) return false;

return true;

}

案例3:冒泡排序实现

void bubbleSort(vector<int>& arr) {

for (int i = 0; i < arr.size() – 1; ++i)

for (int j = 0; j < arr.size() – 1 – i; ++j)

if (arr[j] > arr[j + 1])

swap(arr[j], arr[j + 1]);

}

案例4:字符串反转

void reverseString(string &s) {

int l = 0, r = s.size() – 1;

while (l < r) swap(s[l++], s[r–]);

}

二、数据结构类经典案例

案例5:链表反转

struct Node {

int data;

Node* next;

};

Node* reverse(Node* head) {

Node* prev = nullptr;

while (head) {

Node* next = head->next;

head->next = prev;

prev = head;

head = next;

}

return prev;

}

案例6:栈的实现

class Stack {

private:

vector<int> data;

public:

void push(int x) { data.push_back(x); }

void pop() { if (!data.empty()) data.pop_back(); }

int top() { return data.back(); }

bool empty() { return data.empty(); }

};

案例7:二叉树前序遍历(递归)

void preorder(TreeNode* root) {

if (!root) return;

cout << root->val << ” “;

preorder(root->left);

preorder(root->right);

}

三、实用工具类案例

案例8:日期格式化

string getCurrentDate() {

time_t now = time(0);

tm *ltm = localtime(&now);

char buf[20];

strftime(buf, sizeof(buf), “%Y-%m-%d”, ltm);

return string(buf);

}

案例9:简单日志系统

void log(string msg) {

ofstream out(“log.txt”, ios::app);

out << getCurrentDate() << ” – ” << msg << endl;

}

案例10:读取配置文件

unordered_map<string, string> readConfig(string filename) {

unordered_map<string, string> config;

ifstream in(filename);

string key, value;

while (in >> key >> value)

config[key] = value;

return config;

}

四、项目实战类案例

案例11:猜数字小游戏

void guessNumber() {

srand(time(0));

int number = rand() % 100 + 1, guess;

do {

cout << “Enter guess: “;

cin >> guess;

if (guess < number) cout << “Too low!
“;

else if (guess > number) cout << “Too high!
“;

else cout << “Correct!
“;

} while (guess != number);

}

案例12:命令行计算器

double calculator(double a, double b, char op) {

switch(op) {

case ‘+’: return a + b;

case ‘-‘: return a – b;

case ‘*’: return a * b;

case ‘/’: return b != 0 ? a / b : 0;

default: return 0;

}

}

案例13:文件行数统计器

int countLines(string filename) {

ifstream in(filename);

return count(istreambuf_iterator<char>(in),

istreambuf_iterator<char>(), ‘
‘);

}

五、系统与内存管理类案例

案例14:动态分配二维数组

int** createMatrix(int rows, int cols) {

int** mat = new int*[rows];

for (int i = 0; i < rows; ++i)

mat[i] = new int[cols];

return mat;

}

案例15:模拟内存泄露检测

void memoryLeakExample() {

int* p = new int[100]; // 未 delete[],存在内存泄漏

}

六、网络编程类基础案例

案例16:简单Socket客户端(Linux)

int sock = socket(AF_INET, SOCK_STREAM, 0);

struct sockaddr_in server;

server.sin_family = AF_INET;

server.sin_port = htons(8080);

inet_pton(AF_INET, “127.0.0.1”, &server.sin_addr);

connect(sock, (struct sockaddr*)&server, sizeof(server));

send(sock, “Hello”, 5, 0);

七、STL与泛型编程类案例

案例17:模板函数排序

template<typename T>

void sortArray(vector<T>& arr) {

sort(arr.begin(), arr.end());

}

案例18:优先队列使用

priority_queue<int> pq;

pq.push(10);

pq.push(5);

pq.push(20);

// 输出最大元素 20

八、C++11/14新特性案例

案例19:智能指针示例

#include <memory>

void useSmartPtr() {

shared_ptr<int> sp = make_shared<int>(10);

cout << *sp << endl;

}

案例20:lambda 表达式 + std::function

auto add = [](int a, int b) { return a + b; };

cout << add(5, 6); // 输出 11

总结

以上 20 个 C++ 实战案例涵盖了从基础语法、数据结构、系统开发、文件操作、STL 应用,到现代 C++ 的典型场景,每个案例都可直接运行、调试和扩展,适合用于:

  • 编程学习入门
  • 技术面试准备
  • 项目实战参考
  • 算法训练强化
© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
霜凌绛的头像 - 鹿快
评论 共4条

请登录后发表评论