当前位置: 首页 > 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 …...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

go 里面的指针

指针 在 Go 中&#xff0c;指针&#xff08;pointer&#xff09;是一个变量的内存地址&#xff0c;就像 C 语言那样&#xff1a; a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10&#xff0c;通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...