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 和 bint 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和bint 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通常表示成功执行。

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

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

相关文章

超越视觉:探索The Foundry NUKE 15 的无限可能性

你是否曾被电影中那些令人震撼的特效所吸引&#xff1f;是否曾梦想过自己也能制作出这样的特效&#xff1f;现在&#xff0c;这个梦想即将成为现实。今天&#xff0c;我们将向你介绍一款引领影视后期特效制作潮流的软件——The Foundry NUKE 15。 The Foundry NUKE 15是一款专…

07.智慧商城——商品详情页、加入购物车、拦截器封装token

01. 商品详情 - 静态布局 静态结构 和 样式 <template><div class"prodetail"><van-nav-bar fixed title"商品详情页" left-arrow click-left"$router.go(-1)" /><van-swipe :autoplay"3000" change"onCha…

结合 Django 和 Vue.js 打造现代 Web 应用

概要 在 Web 开发的世界里&#xff0c;Django 和 Vue.js 分别是后端和前端两个非常流行的框架。Django 以其强大的后端能力、快速开发以及安全性而著称&#xff0c;而 Vue.js 因其简洁、灵活和易于上手在前端开发领域广受欢迎。 本篇文章将详细介绍如何将 Django 与 Vue.js 结…

双点双向重发布

配置IP [R1-GigabitEthernet0/0/0]ip ad 192.168.12.1 24 [R1-GigabitEthernet0/0/1]ip ad 192.168.13.1 24 [R1-LoopBack0]ip address 1.1.1.1 24 [R2-GigabitEthernet0/0/0]ip address 192.168.12.2 24 [R2-GigabitEthernet0/0/1]ip address 192.168.24.2 24 [R2-LoopBack0…

多媒体领域顶会ACM MM 2023 获奖论文一览

ACM 国际多媒体会议是计算机科学领域中多媒体领域的顶级会议&#xff0c;属于CCF A类。今年的ACM MM 2023 已于2023年10月29日至11月2日在加拿大渥太华举行。 ACM MM会议专注于推动多媒体研究和应用&#xff0c;其研究领域广泛涉及触觉、视频、VR/AR、音频、语音、音乐、传感器…

解析 Python requests 库 POST 请求中的参数顺序问题

在这篇文章中&#xff0c;我们将探讨一个用户在使用Python的requests库进行POST请求时遇到的问题&#xff0c;即参数顺序的不一致。用户通过Fiddler进行网络抓包&#xff0c;发现请求体中的参数顺序与他设置的顺序不符。我们将深入了解POST请求的工作原理&#xff0c;并提供解决…

Mysql超详细安装配置教程(保姆级)

目录 一、下载Mysql 二、安装Mysql 三、配置Mysql 四、连接Mysql 五、部分疑难问题 一、下载Mysql 从官网下载MySQL&#xff0c;这里我选用的是Mysql8.0.34版本 二、安装Mysql 下载完成后直接双击进行安装&#xff0c;打开后的页面如下所示&#xff1a; “Developer Defa…

echarts双轴刻度线y轴刻度线对齐

splitNumber属性主要用于设置坐标轴分割的段数。例如&#xff0c;在类目轴&#xff08;category&#xff09;中&#xff0c;可以通过设置splitNumber属性来控制坐标轴被分割成的段数。需要注意的是&#xff0c;这个分割段数只是一个预估值&#xff0c;最终实际显示的段数会在这…

C#调用C++ dll教程

文章目录 一、创建C dll项目二、C#程序员调用C dll三、C与C#数据类型对应基本数据类型对应表C指针类型与C#类型 在使用C#开发客户端时&#xff0c;有时需要调用C dll&#xff0c;本篇博客来介绍C#程序如何调用C dll。 一、创建C dll项目 首先使用VS2022创建C dll项目&#xf…

【MySQL】聚合函数:汇总、分组数据

文章目录 学习目标MAX()、MIN()、AVG()、SUM()、COUNT()COUNT(*) 得到所有记录条目DISTINCT去重练习1&#xff08;使用UNION &#xff0c; SUM&#xff0c; BETEEN AND&#xff09;GROUP BY子句练习2&#xff08;使用sum&#xff0c;group by&#xff0c; join on&#xff0c; …

一文带你了解docker技术

什么是Docker Docker是一种虚拟技术&#xff0c;诞生于2013年&#xff0c;是dotCloud公司研发的开源项目&#xff0c;因为docker这个公司后来改名docker inc&#xff0c;docker的目标是实现轻量级的操作系统虚拟化解决方案。通俗点说&#xff0c;我们想在一台机器上运行多个系…

redis集群-主从复制

目录 一、主从复制概念二、单机安装Redis2.1、安装 Redis 需要的软件 gcc 和 tcl2.2、上传Redis压缩包2.3、编辑 redis.conf 文件2.4、执行安装 Redis 命令2.5、注意防火墙配置 三、主从复制 - 环境搭建3.1、配置一个 master 节点&#xff0c;两个 slave 节点3.2、配置 redis63…