ACM练习——第一天

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

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

开始钻研

1.从Java过度到C++

题目源于牛客网:

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

 先来看一道题目:

可以先给出Java的写法

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 循环读取每组数据
        while (scanner.hasNext()) {
            // 读取两个正整数 a 和 b
            int a = scanner.nextInt();
            int b = scanner.nextInt();

            // 计算 a + b 并输出结果
            int result = a + b;
            System.out.println(result);
        }
        
        scanner.close();
    }
}

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

#include <iostream>

int main() {
    // 循环读取每组数据
    while (true) {
        // 读取两个正整数a和b
        int a, b;
        if (!(std::cin >> a >> b)) {
            // 当没有更多输入时退出循环
            break;
        }
        
        // 计算a+b并输出结果
        int result = a + b;
        std::cout << result << std::endl;
    }

    return 0;
}


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

疑问1

#include <iostream>

#include <iostream>

这是什么

答: 

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

具体来说:

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

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

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

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

```cpp
#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}
```

在这个例子中,#include <iostream>`允许你使用 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

当然也可以拆成两个句子

#include <iostream>

int main() {
    int a, b;

    // 分开输入两个整数
    std::cin >> a;
    std::cin >> b;

    // 输出结果
    std::cout << "a: " << a << ", b: " << b << std::endl;

    return 0;
}

 

疑问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 <iostream> 引入输入输出流库。

std::cin 用于接收输入

std::cout 用于输出

std::endl 用于换行

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MTK手机平台充电原理

EPT GPIO初始化文件 bsp_gpio_ept_config.c 1 知识点总结 1.1 Official 参考充电电路 Figure 1-1 参考电路 VCHG&#xff1a;USB正极 VCDT&#xff1a;VCHG Charger Detect充电电压检测脚 ISENSE&#xff1a;充电电流检测电阻的正极 BATSNS&#xff1a;充电电流检测电阻的负极 …

洗地机哪个牌子最好用?洗地机怎么选?2023洗地机选购推荐

家里有小孩或者是养有宠物的都有一个深刻的体验&#xff0c;那就是房子每天都很乱&#xff0c;隔三岔五就得做一次卫生清理、地板杀菌等。如果是房屋面积太大的话&#xff0c;只靠自己手动清洁是非常的耗时间并且还很劳累。洗地机的出现可谓是造福人类&#xff0c;解脱了家庭劳…

多个微信快速同步发圈

做营销最重要的任务是什么&#xff1f; 毋庸置疑&#xff0c;就是发布朋友圈。 为什么要发圈呢&#xff1f; 现在社交媒体中&#xff0c;微信不管在生活上、工作上都是不可或缺的工具&#xff0c;而朋友圈是微信中社交场景之一&#xff0c;也是很多企业作为推广产品和服务的重…

copilot 产生 python工具函数并生成单元测试

stock.py 这个文件&#xff0c;我只写了注释&#xff08;的开头&#xff09;&#xff0c;大部分注释内容和函数都是copilot # split a string and extract the environment variable from it # input can be , pathabc, pathabc;pathdef, pathabc;pathdef;pathghi # output i…

电商平台api接口,淘宝/天猫、1688、拼多多、亚马逊等电商数据平台api接口演示案例

API简单来说是一种数据的传输方式&#xff0c;使用已经开发好的API接口可以缩短项目时间&#xff0c;减少开发成本。 比如说数据宝平台提供的实名认证API接口&#xff0c;像这种实名认证类的API接口是无法自行开发的&#xff0c;如果自行对接部委&#xff0c;能否成功不说&…

利用LangChain实现RAG

检索增强生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;结合了搜寻检索生成能力和自然语言处理架构&#xff0c;透过这个架构&#xff0c;模型可以从外部知识库搜寻相关信息&#xff0c;然后使用这些信息来生成response。要完成检索增强生成主要包含四个步骤…

Android权限动态申请(包括悬浮窗)

目录 效果图 一、环境配置 二、新建工具类 三、开始使用 备注&#xff08;一&#xff09;&#xff1a;用户手动设置权限 手动设置效果图 备注&#xff08;二&#xff09;&#xff1a;在Fragment中如何调用动态权限申请 备注&#xff08;三&#xff09;&#xff1a;悬浮窗…

软件外包开发的需求表达方法

软件开发需求的有效表达对于项目的成功至关重要。无论选择哪种需求表达方法&#xff0c;清晰、详细、易于理解是关键。与开发团队建立良好的沟通渠道&#xff0c;确保他们对需求有充分的理解&#xff0c;并随着项目的推进及时调整和更新需求文档。以下是一些常用的需求表达方法…

CMT2300A超低功耗127-1020MHz Sub-1GHz全频段SUB-1G 射频收发芯片

CMT2300A超低功耗127-1020MHz Sub-1GHz全频段SUB-1G 射频收发芯片 Sub-1GHz&#xff0c;是指小于1GHz频率的统称。Sub-1GHz无线电频段应用的主要特点&#xff1a;&#xff08;1&#xff09;频率较低波长较长&#xff0c;传输距离远&#xff0c;穿透性强&#xff1b;&#xff0…

互联网Java工程师面试题·微服务篇·第一弹

目录 ​编辑 1、您对微服务有何了解&#xff1f; 2、微服务架构有哪些优势&#xff1f; 3、微服务有哪些特点&#xff1f; 4、设计微服务的最佳实践是什么&#xff1f; 5、微服务架构如何运作&#xff1f; 6、微服务架构的优缺点是什么&#xff1f; 7、单片&#xff0c…

本地PHP搭建简单Imagewheel私人云图床,在外远程访问——“cpolar内网穿透”

文章目录 1.前言2. Imagewheel网站搭建2.1. Imagewheel下载和安装2.2. Imagewheel网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测…

ceph的体系结构

文章目录 CephCeph的体系结构对象存储RADOSOSDOSD的状态osd状态检测 数据寻址file--->Object映射Object--->pg映射pg--->osd思考&#xff1a;为什么要在Object和osd之间增加一层pg的映射呢&#xff1f; 存储池monitormonitor与客户端的通信Monitor与osd的通信 数据操作…

Jmeter添加变量的四种方法

一、在样本中添加同请求一起发送的参数。根据服务器设置的数据类型&#xff0c;来添加不同类型的参数 二、用户定义的变量 1、创建&#xff1a;添加->配置元件->用户定义的变量 2、作用&#xff1a;当前的线程组内所有Sampler都可以引用变量&#xff0c;方便脚本更新&a…

[PyTorch][chapter 62][强化学习-基本概念]

前言&#xff1a; 目录&#xff1a; 强化学习概念 马尔科夫决策 Bellman 方程 格子世界例子 一 强化学习 强化学习 必须在尝试之后&#xff0c;才能发现哪些行为会导致奖励的最大化。 当前的行为可能不仅仅会影响即时奖赏&#xff0c;还有影响下一步奖赏和所有奖赏 强…

BUUCTF刷题十一道【缺】(10)

文章目录 EasyBypass[SCTF2019]Flag Shop[BSidesCF 2019]SVGMagic[极客大挑战 2020]Greatphp[GYCTF2020]Easyphp【留坑-反序列化】[HarekazeCTF2019]Avatar Uploader 1[FireshellCTF2020]Caas[ISITDTU 2019]EasyPHP[N1CTF 2018]eating_cms[GYCTF2020]Ez_Express【留坑-nodejs原…

Power Automate-变量和excel表数据的应用

前提表格 Power Automate连接excel请参考&#xff1a;SharePoint-连接Excel-CSDN博客 需求1&#xff1a;计算表格中某列的和 添加操作&#xff0c;搜索变量&#xff0c;选择初始化变量 添加变量的名称、类型和初始值 再新增操作&#xff0c;搜索Excel&#xff0c;点击查看更多…

二叉树题目:二叉树最大宽度

文章目录 题目标题和出处难度题目描述要求示例数据范围 前言解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;二叉树最大宽度 出处&#xff1a;662. 二叉树最大宽度 难度 5 级 题目描述 要求 给定一个二叉树的根结点 …

【Python基础】一个简单的TCP通信程序

&#x1f308;欢迎来到Python专栏 &#x1f64b;&#x1f3fe;‍♀️作者介绍&#xff1a;前PLA队员 目前是一名普通本科大三的软件工程专业学生 &#x1f30f;IP坐标&#xff1a;湖北武汉 &#x1f349; 目前技术栈&#xff1a;C/C、Linux系统编程、计算机网络、数据结构、Mys…

事务JdbcTemplate

Spring框架对JDBC进行封装&#xff0c;使用JdbcTemplate方便对数据库操作。 1.搭建模块 2.引入依赖 <dependencies><!-- spring jdba Spring持久化层支持jar包--><dependency><groupId>org.springframework</groupId><artifactId>…