当前位置: 首页 > news >正文

C++经典程序

C++有许多经典的程序示例,以下是其中一些简单但常见的例子,以帮助你更好地了解C++语言的基本概念。

1. **Hello World程序:**
   ```cpp
   #include <iostream>
   
   int main() {
       std::cout << "Hello, World!" << std::endl;
       return 0;
   }
   ```

2. **计算器程序:**
   ```cpp
   #include <iostream>
   
   int main() {
       double num1, num2, result;
       char op;
   
       std::cout << "Enter first number: ";
       std::cin >> num1;
   
       std::cout << "Enter operator (+, -, *, /): ";
       std::cin >> op;
   
       std::cout << "Enter second number: ";
       std::cin >> num2;
   
       switch(op) {
           case '+':
               result = num1 + num2;
               break;
           case '-':
               result = num1 - num2;
               break;
           case '*':
               result = num1 * num2;
               break;
           case '/':
               if(num2 != 0)
                   result = num1 / num2;
               else {
                   std::cout << "Error! Division by zero." << std::endl;
                   return 1; // Exit with an error code
               }
               break;
           default:
               std::cout << "Error! Invalid operator." << std::endl;
               return 1; // Exit with an error code
       }
   
       std::cout << "Result: " << result << std::endl;
   
       return 0;
   }
   ```

3. **循环程序:**
   ```cpp
   #include <iostream>
   
   int main() {
       for (int i = 1; i <= 5; ++i) {
           std::cout << "Iteration " << i << std::endl;
       }
   
       return 0;
   }
   ```

4. **数组和循环:**
   ```cpp
   #include <iostream>
   
   int main() {
       const int size = 5;
       int numbers[size] = {1, 2, 3, 4, 5};
   
       std::cout << "Array elements: ";
       for (int i = 0; i < size; ++i) {
           std::cout << numbers[i] << " ";
       }
       std::cout << std::endl;
   
       return 0;
   }
   ```

当然,接下来是一些稍微复杂一点的C++程序,涉及到函数、类和文件操作等方面:

5. **函数示例:**
   ```cpp
   #include <iostream>
   
   // 函数声明
   int add(int a, int b);
   
   int main() {
       int num1, num2, sum;
   
       std::cout << "Enter first number: ";
       std::cin >> num1;
   
       std::cout << "Enter second number: ";
       std::cin >> num2;
   
       // 调用函数
       sum = add(num1, num2);
   
       std::cout << "Sum: " << sum << std::endl;
   
       return 0;
   }
   
   // 函数定义
   int add(int a, int b) {
       return a + b;
   }
   ```

6. **类和对象示例:**
   ```cpp
   #include <iostream>
   
   // 类的声明
   class Rectangle {
   public:
       double length;
       double width;
   
       double calculateArea();
   };
   
   // 类的成员函数定义
   double Rectangle::calculateArea() {
       return length * width;
   }
   
   int main() {
       // 创建对象
       Rectangle rect;
   
       // 初始化对象的属性
       rect.length = 5.0;
       rect.width = 3.0;
   
       // 调用对象的方法
       double area = rect.calculateArea();
   
       std::cout << "Area of the rectangle: " << area << std::endl;
   
       return 0;
   }
   ```

7. **文件操作示例:**
   ```cpp
   #include <iostream>
   #include <fstream>
   
   int main() {
       std::ofstream outFile("example.txt");
   
       if (outFile.is_open()) {
           outFile << "Hello, File!\n";
           outFile << "This is a C++ file example.\n";
           outFile.close();
           std::cout << "File written successfully.\n";
       } else {
           std::cout << "Unable to open file.\n";
       }
   
       return 0;
   }
   ```

8. **递归函数:**
   ```cpp
   #include <iostream>
   
   int factorial(int n) {
       if (n <= 1) {
           return 1;
       }
       return n * factorial(n - 1);
   }
   
   int main() {
       int num;
       std::cout << "Enter a number: ";
       std::cin >> num;
       std::cout << "Factorial of " << num << ": " << factorial(num) << std::endl;
       return 0;
   }
   ```

9. **链表:**
   ```cpp
   #include <iostream>
   
   struct Node {
       int data;
       Node* next;
   };
   
   int main() {
       // 略,包括链表的创建、插入和打印等操作
       return 0;
   }
   ```

10. **异常处理:**
    ```cpp
    #include <iostream>
    
    int main() {
        try {
            // 程序代码,可能引发异常
        } catch (const std::exception& e) {
            std::cerr << "Exception caught: " << e.what() << std::endl;
        } catch (...) {
            std::cerr << "Unknown exception caught." << std::endl;
        }
        return 0;
    }
    ```

11. **多线程:**
    ```cpp
    #include <iostream>
    #include <thread>
    
    void printNumbers() {
        for (int i = 1; i <= 5; ++i) {
            std::cout << "Thread: " << i << std::endl;
        }
    }
    
    int main() {
        std::thread t(printNumbers);
        t.join(); // 等待线程结束
        return 0;
    }
    ```

12. **文件读取和写入:**
    ```cpp
    #include <iostream>
    #include <fstream>
    #include <string>
    
    int main() {
        std::ifstream inFile("input.txt");
        std::ofstream outFile("output.txt");
    
        if (inFile.is_open() && outFile.is_open()) {
            std::string line;
            while (std::getline(inFile, line)) {
                // 处理每一行数据
                outFile << line << std::endl;
            }
    
            inFile.close();
            outFile.close();
        } else {
            std::cout << "Unable to open files." << std::endl;
        }
    
        return 0;
    }
    ```

13. **面向对象继承:**
    ```cpp
    #include <iostream>
    
    // 基类
    class Shape {
    public:
        virtual double area() const = 0; // 纯虚函数,表示需要在派生类中实现
    };
    
    // 派生类
    class Circle : public Shape {
    private:
        double radius;
    
    public:
        Circle(double r) : radius(r) {}
    
        double area() const override {
            return 3.14 * radius * radius;
        }
    };
    
    int main() {
        Circle circle(5.0);
        std::cout << "Area of the circle: " << circle.area() << std::endl;
        return 0;
    }
    ```

14. **模板:**
    ```cpp
    #include <iostream>
    
    // 函数模板
    template <typename T>
    T add(T a, T b) {
        return a + b;
    }
    
    int main() {
        std::cout << "Sum of integers: " << add(5, 7) << std::endl;
        std::cout << "Sum of doubles: " << add(3.14, 2.71) << std::endl;
        return 0;
    }
    ```

15. **STL容器:**
    ```cpp
    #include <iostream>
    #include <vector>
    
    int main() {
        std::vector<int> numbers = {1, 2, 3, 4, 5};
    
        for (int num : numbers) {
            std::cout << num << " ";
        }
    
        std::cout << std::endl;
    
        return 0;
    }
    ```

16. **STL算法:**
    ```cpp
    #include <iostream>
    #include <algorithm>
    #include <vector>
    
    int main() {
        std::vector<int> numbers = {5, 2, 8, 1, 6};
    
        // 使用STL算法对容器进行排序
        std::sort(numbers.begin(), numbers.end());
    
        for (int num : numbers) {
            std::cout << num << " ";
        }
    
        std::cout << std::endl;
    
        return 0;
    }
    ```

17. **Lambda表达式:**
    ```cpp
    #include <iostream>
    #include <vector>
    
    int main() {
        std::vector<int> numbers = {1, 2, 3, 4, 5};
    
        // 使用Lambda表达式对每个元素进行平方操作
        std::for_each(numbers.begin(), numbers.end(), [](int& num) {
            num = num * num;
        });
    
        for (int num : numbers) {
            std::cout << num << " ";
        }
    
        std::cout << std::endl;
    
        return 0;
    }
    ```

18. **网络编程基础:**
    ```cpp
    // 编写一个简单的TCP服务器或客户端程序,涉及socket编程
    // 这里可能涉及到很多代码,可以参考相关网络编程的C++库或教程
    ```

19. **图形用户界面(GUI)应用:**
    ```cpp
    // 使用Qt或其他GUI库创建一个简单的窗口应用程序
    // 这里可能涉及到GUI库的使用,事件处理等
    ```

20. **数据结构 - 栈:**
    ```cpp
    #include <iostream>
    #include <stack>
    
    int main() {
        std::stack<int> myStack;
    
        myStack.push(1);
        myStack.push(2);
        myStack.push(3);
    
        while (!myStack.empty()) {
            std::cout << myStack.top() << " ";
            myStack.pop();
        }
    
        std::cout << std::endl;
    
        return 0;
    }
    ```

21. **数据结构 - 队列:**
    ```cpp
    #include <iostream>
    #include <queue>
    
    int main() {
        std::queue<int> myQueue;
    
        myQueue.push(1);
        myQueue.push(2);
        myQueue.push(3);
    
        while (!myQueue.empty()) {
            std::cout << myQueue.front() << " ";
            myQueue.pop();
        }
    
        std::cout << std::endl;
    
        return 0;
    }
    ```

22. **多态和虚函数:**
    ```cpp
    #include <iostream>
    
    // 基类
    class Animal {
    public:
        virtual void makeSound() const {
            std::cout << "Animal makes a sound" << std::endl;
        }
    };
    
    // 派生类
    class Dog : public Animal {
    public:
        void makeSound() const override {
            std::cout << "Dog barks" << std::endl;
        }
    };
    
    int main() {
        Animal* animalPtr = new Dog();
        animalPtr->makeSound(); // 调用派生类的虚函数
        delete animalPtr;
        return 0;
    }
    ```

23. **数据库连接:**
    ```cpp
    // 使用C++连接数据库,例如MySQL、SQLite等
    // 这里可能涉及到数据库API的使用,SQL查询等
    ```

24. **正则表达式:**
    ```cpp
    #include <iostream>
    #include <regex>
    
    int main() {
        std::string text = "Hello, 12345!";
        std::regex pattern("\\d+");
    
        if (std::regex_search(text, pattern)) {
            std::cout << "Numbers found in the text." << std::endl;
        } else {
            std::cout << "No numbers found in the text." << std::endl;
        }
    
        return 0;
    }
    ```

25. **游戏编程基础:**
    ```cpp
    // 编写一个简单的控制台游戏,涉及到游戏循环、用户输入处理等
    ```

26. **OpenGL图形编程:**
    ```cpp
    // 使用OpenGL库进行简单的图形渲染,例如绘制三角形
    // 这里可能涉及到OpenGL的初始化,渲染循环等
    ```

27. **Web服务器:**
    ```cpp
    // 编写一个简单的Web服务器,处理HTTP请求
    // 这里可能涉及到socket编程、HTTP协议解析等
    ```

28. **单元测试:**
    ```cpp
    // 使用C++的单元测试框架,例如

Catch2 或 Google Test,编写一些简单的测试用例来验证程序的正确性。

```cpp
#define CATCH_CONFIG_MAIN
#include <iostream>
#include "catch.hpp"

// 示例类
class Calculator {
public:
    int add(int a, int b) {
        return a + b;
    }

    int multiply(int a, int b) {
        return a * b;
    }
};

// 测试用例
TEST_CASE("Calculator addition", "[Calculator]") {
    Calculator calc;
    REQUIRE(calc.add(2, 3) == 5);
    REQUIRE(calc.add(-1, 1) == 0);
    REQUIRE(calc.add(0, 0) == 0);
}

TEST_CASE("Calculator multiplication", "[Calculator]") {
    Calculator calc;
    REQUIRE(calc.multiply(2, 3) == 6);
    REQUIRE(calc.multiply(-2, 3) == -6);
    REQUIRE(calc.multiply(0, 5) == 0);
}
```

29. **XML或JSON解析:**
    ```cpp
    // 使用第三方库(如pugixml或jsoncpp)解析和生成XML或JSON数据
    // 这里可能涉及到文件读取、数据结构映射等
    ```

30. **机器学习基础:**
    ```cpp
    // 使用开源机器学习库(如Eigen、MLPack)进行简单的线性回归或分类任务
    // 这里可能涉及到矩阵运算、模型训练和预测等
    ```

这是一系列更高级的示例,涉及到面向对象设计、数据结构、网络编程、图形编程、数据库连接、正则表达式、游戏编程、OpenGL图形编程、Web服务器、单元测试、XML/JSON解析、机器学习等方面。你可以选择其中感兴趣或适合你学习目标的主题进行深入学习。每个示例都可能需要额外的学习和研究,以理解相关的概念和技术。

相关文章:

C++经典程序

C有许多经典的程序示例&#xff0c;以下是其中一些简单但常见的例子&#xff0c;以帮助你更好地了解C语言的基本概念。 1. **Hello World程序:** cpp #include <iostream> int main() { std::cout << "Hello, World!" << std…...

Java多线程-Thread类的run方法

Java多线程-Thread类的run方法 一、背景二、研究Thread类的start()源码1、源码&#xff08;比较短&#xff0c;贴一下&#xff09;1.1 重点&#xff1a;start0(); 三、研究Thread类的run()源码1、源码&#xff08;很关键&#xff0c;必须贴&#xff09; 四、创建线程的2种方式1…...

java基础之Java8新特性-方法引入

目录 1.简介 2.方法引入 方法引入遵循规范 方法引入种类 1.静态方法引入 2.对象方法引入 3.实例方法引入 4.构造函数引入 1.简介 方法引用是 Java 8 中引入的另一个重要特性&#xff0c;它提供了一种简洁的语法来直接引用现有方法或构造函数。方法引用可以看作是 Lambd…...

K8S中的hostPort、NodePort 、targetPort、port、containerPort 的区别

Dockerfile的EXPOSE Dockerfile中端口的声明: EXPOSE <端口1> [<端口2>...] 所以:EXPOSE的 第一个作用:只是说明docker容器开放了哪些端口,并没有将这些端口实际开放了出来!更多的作用是告诉运维人员或容器操作人员我开放了容器的哪些端口,只是一种说明。 …...

SpringBoot整合FreeMarker模板引擎

中文官方参考手册 http://freemarker.foofun.cn/ 1.先加入FreeMarker依赖 <dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.23</version> </dependency>2.新建一个FreeMark…...

编程基础 - 变量与常量

编程基础 - 变量与常量 返回序言及专栏目录 文章目录 编程基础 - 变量与常量前言一、变量是什么&#xff1f;二、为什么要有变量三、局部变量和全局变量四、常量五、只读变量小结 前言 变量是编程最重要知识点之一&#xff0c;从根本上讲&#xff0c;编程就是对数据的操作&a…...

Linux入门攻坚——12、Linux网络属性配置相关知识2

CentOS 7网络属性配置&#xff1a; 传统命名机制&#xff1a;以太网eth[0,1,2,...]&#xff0c;wlan[0,1,2...] 可预测功能的命名机制&#xff1a; udev支持多种不同的命名方案&#xff1a; Firmware &#xff0c;拓扑结构 在对待设备文件这块&#xff0c;Linux改…...

如何自己实现一个分布式事务

实现分布式事务是一个复杂的过程&#xff0c;它需要精心设计并考虑数据的一致性、系统的可用性和分区容错能力。分布式事务确保在分布式系统中&#xff0c;即使是跨多个数据库、服务或消息队列&#xff0c;事务要么完全成功&#xff0c;要么完全失败。 以下是实现分布式事务的…...

使用Nonebot编写QQ机器人

使用 NoneBot 这个工具&#xff0c;来编写 QQ 机器人。 安装基础软件 一、安装 NoneBot 库 直接使用 pip 安装即可 pip install nonebot二、安装酷Q 软件和 HTTP API 插件 酷Q 软件可以直接到官网下载&#xff0c;https://cqp.cc/b/news&#xff0c;或者可以到网盘下载&am…...

认识SpringBoot中的条件注解

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 循序渐进学SpringBoot ✨特色专栏&…...

使用PAI-DSW搭建基于LangChain的检索知识库问答机器人

教程简述 在本教程中&#xff0c;您将学习如何在阿里云交互式建模&#xff08;PAI-DSW&#xff09;中&#xff0c;基于LangChain的检索知识库实现知识问答。旨在建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。 LangChain是一个开源的框架&#xff0c…...

优雅的通过Shell脚本生成Go的程序包

前言 随着Go语言的普及&#xff0c;越来越多的开发人员选择使用Go编写代码。虽然越来越多的公司项目已使用持续集成/持续部署&#xff08;CI/CD&#xff09;工具&#xff0c;用于自动化构建、测试和部署Go程序包&#xff0c;但存在一些部署在ECS服务器的Go程序包或需要手动编译…...

益生菌抗癌?补充这种益生菌,抑制肝癌,还改善肠道健康

撰文 | 宋文法 肠道菌群&#xff0c;是人体不可分割的组成部分&#xff0c;生活在我们肠道内的数万亿细菌对健康起着重要作用&#xff0c;它们影响着人的新陈代谢、消化能力、抵御感染、控制人体对药物的反应&#xff0c;甚至还能预防某些癌症。 非酒精性脂肪肝病&#xff0c;是…...

LLM漫谈(二)| QAnything支持任意格式文件或数据库的本地知识库问答系统

一、QAnything介绍 QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统&#xff0c;可断网安装使用。 您的任何格式的本地文件都可以往里扔&#xff0c;即可获得准确、快速、靠谱的问答体验。 目前已支持格式: PDF&…...

Linux环境vscode clang-format格式化:vscode clang format command is not available亲测有效!

问题现象 vscode安装了clang-format插件&#xff0c;但是使用就报错 问题原因 设置中配置的clang-format插件工具路径不正确。 解决方案-亲测有效&#xff01; 确认本地安装了clang-format工具&#xff1a;终端输入clang-format&#xff08;也可能是clang-format-13等版本…...

Vue3前端 响应式数据 知识点

一、ref(基本类型数据&#xff0c;也可以定义对象类型的响应式数据。此时底层用的还是reactive) ref 创建基本类型的响应式数据 作用:定义响应式变量语法: let xxx ref(初始值)返回值: 一个 RefImp1 的实例对象&#xff0c;简称 ref对象或ref&#xff0c;ref 对象的 value 属…...

golang数据库连接池设置多少比较合适,如何设置?

设置数据库连接池的大小需要综合考虑应用程序的需求、数据库系统的性能、服务器资源等因素。连接池大小的不合理设置可能导致性能问题或资源浪费。 以下是一些建议&#xff1a; 考虑应用程序的并发需求&#xff1a; 连接池的大小应该足够满足应用程序的并发需求。如果你的应用…...

一、Mybatis 简介

本章概要 简介持久层框架对比快速入门&#xff08;基于Mybatis3方式&#xff09; 1.1 简介 https://mybatis.org/mybatis-3/zh/index.html MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投G…...

苹果Vision Pro将于1月27日上市!

在无数期待中&#xff0c;苹果全新产品Vision Pro头显终于定下上市日期。 彭博社记者马克古曼&#xff08;Mark Gurman&#xff09;于近日在X&#xff08;前推特&#xff09;平台爆料了这一信息&#xff0c;预计苹果Vision Pro头显将于2024年1月27日率先在美国上市。 在过去看…...

密码学(一)

文章目录 前言一、Cryptographic Primitives二、Cryptographic Keys2.1 Symmetric key cryptography2.2 asymmetric key cryptography 三、Confidentiality3.1 Symmetric key encryption algorithms3.2 asymmetric key block ciphers3.3 其他 四、Integrity4.1 secure hashing …...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...

实战设计模式之模板方法模式

概述 模板方法模式定义了一个操作中的算法骨架&#xff0c;并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下&#xff0c;重新定义算法中的某些步骤。简单来说&#xff0c;就是在一个方法中定义了要执行的步骤顺序或算法框架&#xff0c;但允许子类…...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要&#xff0c;uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件&#xff0c;需要安装才能使用。 一、安装扩展插件 安装方法&#xff1a; 1.访问uniapp官方文档组件部分&#xff1a;组件使用的入门教程 | uni-app官网 点击左侧…...