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!\n";

else if (guess > number) cout << "Too high!\n";

else cout << "Correct!\n";

} 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>(), '\n');

}





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




案例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++ 的典型场景,每个案例都可直接运行、调试和扩展,适合用于:


  • 编程学习入门
  • 技术面试准备
  • 项目实战参考
  • 算法训练强化
原文链接:,转发请注明来源!