• ACM练习——第一天


    因为最近要去农大参加他们的算法邀请赛,然后赛制是ACM赛制的,所以我就直接很迷茫。

    然后我就找到了牛客的ACM练习题,好好的练习一下ACM写法,而且我还要被迫写C++,哭了。

    开始钻研

    1.从Java过度到C++

    题目源于牛客网

    A-A+B(1)_OJ在线编程常见输入输出练习场 (nowcoder.com)

     先来看一道题目:

    可以先给出Java的写法

    1. import java.util.Scanner;
    2. public class Main {
    3. public static void main(String[] args) {
    4. Scanner scanner = new Scanner(System.in);
    5. // 循环读取每组数据
    6. while (scanner.hasNext()) {
    7. // 读取两个正整数 a 和 b
    8. int a = scanner.nextInt();
    9. int b = scanner.nextInt();
    10. // 计算 a + b 并输出结果
    11. int result = a + b;
    12. System.out.println(result);
    13. }
    14. scanner.close();
    15. }
    16. }

    然后就可以写出如下的C++代码

    1. #include
    2. int main() {
    3. // 循环读取每组数据
    4. while (true) {
    5. // 读取两个正整数a和b
    6. int a, b;
    7. if (!(std::cin >> a >> b)) {
    8. // 当没有更多输入时退出循环
    9. break;
    10. }
    11. // 计算a+b并输出结果
    12. int result = a + b;
    13. std::cout << result << std::endl;
    14. }
    15. return 0;
    16. }

    如果只学习过Python和Java我说句实话,直接懵逼

    疑问1

    #include

    #include 

    这是什么

    答: 

            `#include ` 是C++中的一个预处理器指令,它告诉编译器将 `` 头文件包含到程序中。在C++中,`` 是输入输出流库的头文件,提供了用于输入和输出的基本工具,例如 `cin` 和 `cout`。

    具体来说:

    - 提供了用于输入和输出的流对象,包括 std::cin(用于标准输入)和

    std::cout(用于标准输出)。
    - 这个头文件还包括其他一些与输入输出相关的类和功能,比如 std::endl 用于输出换行。
    - 使用 是进行基本的输入输出操作的一种标准方式。

    整个 `#include ` 的目的是在编译时将与输入输出相关的声明和定义包含到你的程序中,以便你可以使用这些标识符来执行输入输出操作。

    例如,你可以使用 std::cout`来输出文本到控制台:

    1. ```cpp
    2. #include
    3. int main() {
    4.     std::cout << "Hello, World!" << std::endl;
    5.     return 0;
    6. }
    7. ```

    在这个例子中,#include `允许你使用 std::cout 和 std::endl,而不需要显式地提供它们的定义。


    疑问2

     于是就有一个精简的写法

    using namespace std

    using namespace std;那这是什么意思呢

    答;

            using namespace std; 是C++中的一个声明,它表示使用标准命名空间(std 命名空间)中的所有标识符,而不需要在使用这些标识符时显式地加上 std::`前缀。

            在C++中,许多标准库的组件(如 cin、cout、endl 等)都定义在 std 命名空间中。为了使用这些组件,通常你需要在代码中加上 std:: 前缀,例如 std::coutstd::cin 等。

    当你使用 using namespace std; 时,它告诉编译器在整个程序中都使用 std 命名空间中的标识符,这样你就可以直接使用 coutcin 等,而不需要写成 std::coutstd::cin

            这个语句的使用可以使代码更简洁,但在大型项目中,有时可能会导致命名冲突,因为不同的命名空间中可能有相同名称的标识符。在小型程序或学习阶段使用时,通常是方便的。但在实际开发中,一些团队可能更喜欢显式地指定使用哪些标识符,以避免潜在的命名冲突。


    好继续看

    疑问3

     std::cin >> a >> b这个是什么意思啊

    答:

            std::cin 是C++标准库中用于标准输入的输入流对象std::cin 可以通过使用提取运算符 >> 从标准输入流中读取数据。在这里,std::cin >> a >> b 表示从标准输入中读取两个整数,分别存储到变量 a 和 b 中

    具体解释如下:

    std::cin 是输入流对象,用于从标准输入设备(通常是键盘)读取数据。
     >>       是提取运算符,用于从输入流中提取数据。
    a 和 b 是两个整型变量,它们用于存储从输入流中读取的整数值。

            所以,std::cin >> a >> b 表示先将一个整数读入变量 a,然后再将另一个整数读入变量 b。这样的链式输入可以方便地一次性从输入流中读取多个值。

            在你的例子中,int a, b; std::cin >> a >> b; 用于读取两个正整数,这两个整数由空格分隔。例如,如果输入是 "1 5",那么 a 将被赋值为 1b 将被赋值为 5

    当然也可以拆成两个句子

    1. #include
    2. int main() {
    3. int a, b;
    4. // 分开输入两个整数
    5. std::cin >> a;
    6. std::cin >> b;
    7. // 输出结果
    8. std::cout << "a: " << a << ", b: " << b << std::endl;
    9. return 0;
    10. }

     

    疑问4

    std::cout << result << std::endl;

    这又是啥!!!

    答:

            std::cout << result << std::endl; 是C++中用于输出到标准输出流(通常是控制台)的语句。这个语句使用了输出流对象 `std::cout` 和流插入运算符 `<<`。

    具体解释如下:

    std::cout 是C++标准库中的标准输出流对象,用于向标准输出设备(通常是屏幕)输出数据。
    <<是流插入运算符,用于将右侧的数据插入到左侧的流中。

            在这个特定的语句中,它将整数变量 `result` 的值插入到标准输出流中,并紧接着插入一个表示换行的 std::endlstd::endl 代表一个换行符,并且会刷新输出缓冲区,确保输出立即显示在屏幕上。

            这个语句的效果是将 result 的值输出到控制台,并在输出结束时换行。如果 result 的值是 6,那么输出可能是:

    ```
    6
    ```

            这样的语句通常用于调试或向用户显示程序的输出。

    然后return 0;就完事了

    总结

    当使用C++编程时,

    通过 #include  引入输入输出流库。

    std::cin 用于接收输入

    std::cout 用于输出

    std::endl 用于换行

    使用 using namespace std; 可以直接在代码中使用 std 命名空间的标识符。

    在C++中,return 0; 表示程序正常结束,返回值0通常表示成功执行。

  • 相关阅读:
    【2023校园招聘】 钉钉AI应用开发平台开始校招拉~
    自动驾驶坐标系与旋转矩阵的确定(位置补偿)
    java 自定义水印位置demo
    ggplot2 -- geom_linerange 函数的简单使用
    高新技术企业认定分数出炉!国高申报常见未通过原因分析
    2022年测试岗最新自动化测试面试题整理,干货满满
    使springAOP生效不一定要加@EnableAspectJAutoProxy注解
    html+css+js实现简单的交互效果
    云原生之PVE虚拟化平台创建LXC容器
    如何将一三两行数据中电话号码相同的数据(标签-spark)
  • 原文地址:https://blog.csdn.net/DDDDWJDDDD/article/details/134375143