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解析、机器学习等方面。你可以选择其中感兴趣或适合你学习目标的主题进行深入学习。每个示例都可能需要额外的学习和研究,以理解相关的概念和技术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/609951.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SPDK】【NoF】使用SPDK部署NVMe over TCP

SPDK NVMe over Fabrics Target是一个用户空间应用程序&#xff0c;通过以太网&#xff0c;Infiniband或光纤通道等结构呈现块设备,SPDK目前支持RDMA和TCP传输。 本文将在已经编译好SPDK的基础上演示如何使用SPDK搭建NVMe over TCP&#xff0c;前提是您已经将一块NVMe硬盘挂载…

Python使用函数统计指定数字的个数

本题要求实现一个统计整数中指定数字的个数的简单函数。 CountDigit(number,digit )其中number是整数&#xff0c;digit为[1, 9]区间内的整数。函数CountDigit应返回number中digit出现的次数。 函数接口定义&#xff1a; 在这里描述函数接口。例如&#xff1a; CountDigit(n…

Android Room数据库升级Migration解决方案

一、介绍 Android Room 是 Android 官方提供的一个轻量级数据库框架&#xff0c;用于在 Android 应用程序中管理数据持久性。它简化了数据库访问&#xff0c;提供了更安全、更快速的数据存储方式&#xff0c;并使得数据操作更加便捷。 二、Room的特点(八股文可以参考) 以下是…

【Spring实战】27 统一异常处理最佳实践

文章目录 1. 自定义异常2. 统一异常处理3. 配置4. 应用5. 启动类6. 启动服务7. 验证8. 优点总结 在 Spring 项目中&#xff0c;有效的异常处理是确保应用程序稳定性和用户体验的关键因素之一。通过实现统一异常处理&#xff0c;我们能够更好的管理和响应应用程序中的各种异常情…

Hadoop之mapreduce参数大全-2

25.指定在Reduce任务在shuffle阶段的fetch操作中重试的超时时间 mapreduce.reduce.shuffle.fetch.retry.timeout-ms是Apache Hadoop MapReduce任务配置中的一个属性&#xff0c;用于指定在Reduce任务在shuffle阶段的fetch操作中重试的超时时间&#xff08;以毫秒为单位&#x…

Phi-2小语言模型QLoRA微调教程

前言 就在不久前&#xff0c;微软正式发布了一个 27 亿参数的语言模型——Phi-2。这是一种文本到文本的人工智能程序&#xff0c;具有出色的推理和语言理解能力。同时&#xff0c;微软研究院也在官方 X 平台上声称&#xff1a;“Phi-2 的性能优于其他现有的小型语言模型&#…

安卓(雷电)模拟器清除屏幕密码

1、设置磁盘可写 启动模拟器&#xff0c;然后在模拟器的设置界面&#xff0c;设置磁盘共享为可写入&#xff0c;重启模拟器&#xff0c;如下图&#xff1a; 2、找到模拟器目录 返回桌面&#xff0c;右键模拟器图标&#xff0c;打开文件所在目录&#xff0c;如下图&#xff1a…

Arduino驱动ISD1820音频录放模块(声音传感器)

目录 1、传感器特性 2、硬件原理图 3、控制器和传感器连线图 4、驱动程序 ISD1820录放音模块,集成录放音功能为一体。板载按键和麦克风,可直接通过

javaWebssh校园物业管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh校园物业管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用 B/S模式开发。开发环境为TOMCAT7.…

洛谷 P8833 [传智杯 #3 决赛] 课程 讲解

前言&#xff1a; 大家好&#xff01; 我们又见面啦~~~ 对于我20多天没上号&#xff0c;深表歉意&#xff01;&#xff01; 希望大家给我的account点一个赞&#xff0c;加一个粉丝&#xff0c;谢谢&#xff01; 也对CSDN的所有博主们送上衷心的祝福&#xff01; 如有错误…

如何申请api接口,快速对接数据源

申请API接口并快速对接数据源通常需要以下步骤&#xff1a; 寻找合适的API供应商&#xff1a;首先需要找到提供所需数据的API供应商&#xff0c;可以通过搜索引擎或者专业的API市场找到合适的API接口服务提供商。 注册并获取API密钥&#xff1a;在供应商的网站上注册账户&…

蓝牙物联网多个核心应用场景开发与应用细化分析

蓝牙物联网是指利用蓝牙技术将物理设备与互联网连接起来&#xff0c;实现设备之间的信息共享与互通。蓝牙物联网在各个领域得到了广泛应用&#xff0c;并且在未来有着巨大的发展潜力。本文将围绕蓝牙物联网的五大核心应用场景进行介绍&#xff0c;包括智能家居、智能健康、智能…

[数据结构-1]:环形buffer以及读写同步

目录 一、什么是环形buffer 二、环形buffer的优点与使用场合 三、环节buffer的读写同步 3.1 基本原理 3.2 代码示例 一、什么是环形buffer 环形缓冲区&#xff08;Circular Buffer&#xff09;也被称为环形队列&#xff08;Circular Queue&#xff09;或循环缓冲区&#…

Java容器技术:Docker与Kubernetes

Docker 与 Kubernetes 是目前非常流行的 Java 容器技术&#xff0c;它们可以帮助开发者更轻松地构建、部署和管理 Java 应用程序。以下是对 Docker 和 Kubernetes 的详细介绍&#xff1a; 一、Docker&#xff1a; Docker 是一种开源的容器化平台&#xff0c;可以将应用程序和其…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑电氢耦合和碳交易的电氢能源系统置信间隙鲁棒规划》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 这标题涉及到一个复杂的能源系统规划问题&#xff0c;其中考虑了电氢耦合、碳交易和置信间隙鲁棒规划。以下是对标题各个部分的解读&#xff1a; 电氢耦…

矩阵中的最长递增路径

题目链接 矩阵中的最长递增路径 题目描述 注意点 不能 在 对角线 方向上移动或移动到 边界外&#xff08;即不允许环绕&#xff09; 解答思路 因为最长递增路径一定是连续的&#xff0c;所以想到使用深度优先遍历来做。如果只使用深度优先遍历会导致超时&#xff08;同一个…

MT6785安卓核心板_联发科MTK6785/Helio G95/曦力G95核心板定制

MT6785安卓核心板是基于MT6785(Helio G95)处理器&#xff0c;具备八核处理器结构&#xff0c;包括2颗主频为2.05GHz的Cortex A76处理器和6颗主频为2.0GHz的Cortex A55处理器&#xff0c;以及六颗Cortex-A55处理器。而在GPU方面&#xff0c;采用了Arm Mali-G76 MC4&#xff0c;频…

ESP32-Touch(Arduino)

Touch Touch传感器是一种外围设备&#xff0c;具有内部振荡器电路&#xff0c;可在固定时间段内测量相应GPIO引脚上的充电/放电频率。 因此&#xff0c;这些触摸传感器也被称为电容式传感器。例如&#xff0c;如果您触摸这些引脚中的任何一个&#xff0c;手指电荷将改变这个周…

MATHPILE:一个高质量的大规模的数学语料库

简介 MATHPILE&#xff1a;一个高质量、大规模的数学语料库&#xff0c;29 GB&#xff0c;包含约 95 亿个token。涵盖从 K-12 到大学、研究生水平和数学竞赛的内容&#xff0c;包括高质量教科书、讲义、科学论文等。提供详细的数据记录&#xff0c;包括数据集表格和质量注释&a…

渐变登录页

效果演示 实现了一个简单的登录页面的样式和交互效果。 Code <div class"flex"><div class"login color">Login</div><label class"color">Username :</label><input type"text" class"input&…