【卡码网C++基础课 1.A+B问题1】

文章目录

  • 题目描述与分析
  • 一、C++函数基础
  • 二、输入输出流
  • 三、变量
  • 四、写入数据
  • 五、输出数据
  • 六、尝试第一次提交
  • 七、循环输入输出
  • 八、延伸


题目描述与分析

题目描述:
你的任务是计算a+b。

输入描述:
输入包含一系列的a和b对,通过空格隔开。一对a和b占一行。

输出描述:
对于输入的每对a和b,你需要依次输出a、b的和。
如对于输入中的第二对a和b,在输出中它们的和应该也在第二行。

输入示例:

3 4
11 40

输出示例:

7
51

一、C++函数基础

每一个C++程序都包含了一个或者多个函数,但其中有一个函数必须命名为main,这是因为程序的启动,都是从main函数开始的。

所以我们首先要先写一个main函数:

int main() {return 0;
}

这个函数主要包含四部分:
返回类型
函数名
形参列表
函数体

下面这张图对应着函数的四个部分:
在这里插入图片描述
1.函数的返回类型
返回类型 指定函数执行后返回给调用者的数据类型。如果函数不返回任何值,则使用 void 类型。定义一个函数时,我们首先要在函数名之前放置一个关键字表示函数的返回类型,这个关键字代表的含义是函数执行完毕会返回什么类型的值,我们这里使用了int关键字,表示函数将返回一个整数类型的值(不带小数部分),比如我们在数学中使用的0、1、2就是整数。

一般函数的返回类型可以是 int,float,void等等,这些都是C++的内置数据类型,但是请记住,main函数的返回类型一定是int。

2.函数名
在后面,我们会定义很多个函数,为了区分这些函数,我们要给不同的函数起不同的函数名称,而且函数命名是有规范的,而这里由于是主函数,所以函数的名称为main,且不可更改。

3.函数的形参列表
函数名之后的括号内填充的就是形参列表,它定义了函数在被调用时可以接受的参数类型,参数之间用逗号分隔,在上面的代表中,形参列表是空的,表示没有传递形参。

4.函数体
从左花括号{开始, 到右括号}结束,这一部分就是函数体,函数体中可以有很多行代码,而上面的程序中只有一行return 0;, 这行代码表示程序已经执行完毕,并返回了一个状态码0,这个状态码可以反馈程序的执行状态,在大多数情况下,返回0表示程序正常退出,没有出现错误。

经过了上面的解释之后,你或许对函数有了一些理解,也或许没有,但没关系,我们可以把函数想象成一个盒子,这个盒子可以变换成洗衣机、榨汁机等等,函数的返回类型就代表盒子的种类,int就代表这是一个洗衣机,返回的结果是衣服,float代表这是一个榨汁机,返回的结果是果汁,函数名是你给这个盒子起的昵称,它可以按照规则去定义,只不过如果是main函数,它的名称就不可更改了,函数的形参列表就是我们往盒子扔进去的东西,我们可以把衣服或者水果放进去,而函数体是我们放进去的东西要经历的处理过程,经过函数的处理之后,返回的内容就是我们想要的结果。

让我们再重新认识一下刚才写的代码吧:

// int表示返回类型
// main表示函数名称,这里是主函数,名称不可更改
// ()内的是形参列表,这里的形参列表为空
int main() {// 这里是函数体的内容,return 0表示返回结果为0,函数正常执行return 0;
}

二、输入输出流

一个C++程序必须要有一个主函数(有且只有一个),所以我们要解决这道题目,首先也要写一个main函数,如下:

int main() {return 0;
}

题目要求我们计算a+b, 用正常的数学思维这很简单,就是将a的值和b的值相加就可以了,但是用计算机来解决这个问题,我们首先要解决的问题是:如何输入a和b两个数字呢?

C++语言为我们准备了一组内置库,包含了很多常用的功能, 并且这些内置库可以直接使用,而其中的内置库:iostream,就提供了输入和输出的功能,允许开发者从键盘读取输入并在屏幕上输出结果。

iostream库包含了两个基础类型,分别是istream(输入流) 和 ostream(输出流)

在 C++ 中,输入和输出操作通常是通过使用流进行的。流是一种从源(如键盘、文件、网络等)读取数据或向目的地(如屏幕、文件、网络等)写入数据的抽象。C++ 标准库提供了一系列用于输入输出的类,这些类封装了对各种输入和输出设备的操作。 比较形象的表达,就是我们要把键盘上的字符通过程序输入到电脑里,这个过程就是一个字符接着一个字符流入电脑的过程,所以叫输入输出流。

在 iostream 库 中,我们有两个对象可以使用,分别是 cin 和cout。 cin 是一个标准输入流对象,用于从键盘读取输入。cout 是一个标准输出流对象,用于向屏幕输出结果。

三、变量

我们已经知道了可以使用iostream中的cin和cout来解决输入输出,可是我们还有一个问题需要解决,那就是:系统怎么认识和标识我们输入的数字呢?比如说,我们想要输入两个数字100、100,系统如果使用100来标识100,那另外一个100应该怎么标识呢?

所以我们就需要在系统内部使用某样东西来指代和标识输入的内容,比如x = 100; y = 100, 这里的x, y在数学中被称为变量,在编程中也被称为变量,用来指代内容。

不过在数学中有整数、小数之分,那计算机在存储的时候也应该知道我们输入的x是一个什么类型的数字,这里我们输入的是整数,也就是前面使用的int类型。
所以我们首先需要定义两个变量a,b用来接收输入的内容,代码这么写:

int a; // 定义一个变量,名称为a, 用于接收一个整数
int b; // 定义一个变量,名称为b, 用于接收一个整数

但是为了简略,我们可以将代码写在一行,然后将类型略去,变量中间用逗号分隔。

int a, b;

四、写入数据

如何从键盘输入,给这两个变量赋值呢?
此时我们需要用到之前的输入流cin,代码如下:

std::cin >> a >> b;

这行代码就表示使用cin获取输入值,并将输入的值存储在变量a和变量b中

std::cin: 是C++标准库中的标准输入流对象,用于从键盘读取输入。
a: 是之前定义的变量,它将接收从输入流中读取的值,并且要求这个值是一个整数。
b: 是另一个变量,它也将接收从输入流中读取的值,并且要求这个值是一个整数。

1.std是什么?
std 是一个命名空间,:: 符号是作用域操作符。

当使用C++标准库的功能时,需要使用命名空间限定符来指明你要使用的内容位于哪个命名空间中。通常,会使用 std:: 的前缀,表示正在使用C++标准库中的内容。

也就是说,为了避免我们使用的变量和标准库定义的变量名称相同而引起冲突,以及避免不同标准库之间的变量名冲突,标准库定义的所有名字都在命名空间std中,如果我们要使用cin的话,就要先找到命名空间,然后再使用cin,即:std::cin

2.输入运算符(>>)
输入运算符用于将数据从输入流(如键盘、文件等)读取到变量中。

int number;
std::cin >> number; // 从输入流读取一个整数并存储在变量 number 中

在连续读取多个值时,可以使用链式输入操作,多个值之间用空格隔开。

int a, b;
std::cin >> a >> b; // 从输入流读取两个整数并存储在变量 a 和 b 中

五、输出数据

此时我们已经获取到了从键盘上输入的两个数字,就要做运算了。本题是求两个数字相加,那么 代码逻辑就是 a + b;
这里我们可以再定义一个变量 result; 用来存放我们的计算结果。
代码就是

int result = a + b;

最后要把这个结果输出在屏幕上,就要使用到输出流 std::cout,它也是标准库里的一个对象,此外还需要使用到输出运算符(<<),将数据输出到屏幕中, 它的用法和输入运算符类似。

输出结果:

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

我们输出结果时,每个结果都要占一行,也就是说每个输出结果后要有一个回车,那么std: :end就是这个作用,表示结束当前行。

六、尝试第一次提交

根据目前掌握的内容可以写出如下代码:

int main() {int a, b;  // 定义两个整型变量 a和bstd::cin >> a >> b; // cin表示输入,输入a和b的值int result = a + b; // 定义整型变量 result, 接收 a和b 相加的值std::cout << result << std::endl; // cout表示输出,输出result的值,endl表示回车return 0;
}

但是这份代码并不能运行,因为我们使用了C++的内置库iostream库,因为这个库里有cin和cout
所以我们需要引用这个库,才能使用cin和cout,引用这个库需要在代码最上方加上 include<iostream>
此时C++代码如下:

#include<iostream>  // 引入iostream库
int main() {int a, b;std::cin >> a >> b;int result = a + b;std::cout << result << std::endl;return 0;
}

七、循环输入输出

题目中是连续输入a,b并计算两数之和,这里可以使用while循环,while语句表示只要给定的条件是真的,就反复执行这一段代码,直到条件变假为止。

while(条件) {// 循环代码块
}

在每次循环中,会判断条件的真假。如果条件为真,循环体内的代码块会被执行。然后,循环会再次检查条件,并根据条件的真假决定是否继续执行循环体。

while循环可以这样理解,假设条件为“我还没有学会C++”, 只要这个条件还是真的(判断条件的真假),我就会每天坚持努力学习(循环体),如果我已经学会了C++, 我才会停止学习(退出这个循环)。

所以下面的代码就表示持续输入a 和 b,直到遇到人为终止程序(不输入时)才会结束。

// 持续输入 a和b
while(std::cin >> a >> b) {}

本题完整代码如下:

// 引入输入输出流库,它允许我们使用输入输出功能。
#include<iostream>
// 程序的入口
int main() {// 声明两个整数变量 a 和 b,这些变量将用于存储从输入流读取的整数值。int a, b;// 循环输入,在输入有效整数时一直执行// cin >> a >> b 表示从键盘依次读取两个整数并将它们存储在变量 a 和 b 中。while(std::cin >> a >> b) {// 计算变量 a 和 b 的和,并将结果存储在变量 result 中。int result = a + b;// 使用输出流将计算结果输出到屏幕上,然后换行。std::cout << result << std::endl;}// 程序正常结束return 0;
}

八、延伸

上面我们提到了命名空间 std。cin、cout都属于 std命名空间里的对象。

那每次使用 cin 和 cout的时候 ,都要加上 std:: ,这显得十分繁琐,为了简化这个操作,我们也可以在函数开头,统一申明使用命名空间 std,这样就不用每次使用 cin,cout 都要加上 std::。

代码是这样的:

#include<iostream>
// 这行代码使得我们可以直接使用 cout 和 cin,而无需每次都写 std::
using namespace std;
int main() {int a, b;while(cin >> a >> b) {int result = a + b;cout << result << endl;}return 0;
}

C++中内置了许多不同的数据类型,而常用的有以下几个:

整型
int: 整数类型,比如0、1、-1等
char:字符类型,用于表示单个字符,比如a、b、c、!等
bool: 布尔类型:表示真或假,真为true, 假为false, 常用于条件判断

浮点型
float:单精度浮点数类型,通常用于表示小数。
double:双精度浮点数类型,它和float类型的区别是double具有更高的精度, 能表示的小数位更多。

后面我们还会学习更多的数据类型,比如字符串、指针、自定义类型等,但在这里,大家只需要先了解有这5种常见的即可。

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

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

相关文章

【UE5】基于摄像机距离逐渐剔除角色

效果 步骤 1. 新建一个工程&#xff0c;在内容浏览器中添加第三人称游戏内容包 2. 找到第三人称角色的材质实例“MI_Quinn_01”并打开 找到材质实例的父项材质“M_Mannequin” 打开材质“M_Mannequin” 在材质图表中添加如下节点 此时运行效果如文章开头所示。 参考视频&#…

【vue教程】七. Vue 的动画和过渡

文章目录 往期列表回顾本章涵盖知识点Vue 的内置动画系统基本的进入和离开过渡列表过渡 CSS 过渡CSS 过渡基础Vue 中的 CSS 过渡 JavaScript 动画使用 JavaScript 钩子 第三方动画库的使用集成 Animate.css 实例演示创建一个简单的动画应用 结语 往期列表 【vue教程】一. 环境…

RabbitMQ如何保证消息不丢失

RabbitMQ消息丢失的三种情况 第一种&#xff1a;生产者弄丢了数据。生产者将数据发送到 RabbitMQ 的时候&#xff0c;可能数据就在半路给搞丢了&#xff0c;因为网络问题啥的&#xff0c;都有可能。 第二种&#xff1a;RabbitMQ 弄丢了数据。MQ还没有持久化自己挂了。 第三种…

《深入浅出WPF》读书笔记.4名称空间详解

《深入浅出WPF》读书笔记.4名称空间详解 背景 主要讲明名称空间概念&#xff0c;可以理解为命名空间的引用。 xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml" &#x1f446;如x可以理解为一些列命名空间的引用。 不一一列举&#xff0c;只讲几个特殊的…

Java基础——注释

在开发中注释是必不可少的&#xff0c;帮助我们更好的标记阅读代码&#xff0c;下面介绍几种常用的注释方式。 一、注释种类 1. 单行注释 使用//一行代码来进行注释&#xff0c;只能注释一行内容 2. 多行注释 使用斜杠星号的方式 /*注释多行代码*/&#xff0c;注释多行代…

2024最新急速暴走小米运动自动刷步卡密版PHP源码

2023最新发布的急速暴走小米运动自动刷步卡密版PHP源码。该源码使用PHPTP6layui-Mini开发&#xff0c;旨在实现小米运动自动刷步功能。该程序支持通过微信修改步数&#xff0c;并采用卡密认证方式&#xff0c;用户只需提交提供的卡密&#xff0c;即可每日自助修改步数。 需要注…

UDP网络攻击

UDP&#xff08;User Datagram Protocol&#xff09;作为一种无连接的网络传输协议&#xff0c;以其速度快和资源消耗小的特点&#xff0c;在多种网络服务中发挥着重要作用&#xff0c;UDP的无连接特性也使其成为DDoS攻击的优选协议。 UDP攻击概念 UDP攻击是一种网络攻击手段…

USB HiFi 声卡

USB HiFi声卡就像是你电脑上的一对超级耳朵&#xff0c;它能将你从普通音质中拯救出来&#xff0c;带你进入一个音乐细节丰富的世界。无论你是音乐迷、游戏玩家还是电影发烧友&#xff0c;这些声卡都是你的音频升级好帮手。设计师在设计USB HiFi声卡的过程&#xff0c;就像是调…

Linux虚拟机磁盘管理-添加磁盘

添加磁盘--添加前请选关闭虚拟机 添加步骤&#xff1a; 1.编辑虚拟机设置 2.选择硬盘 3.选择SCSI 4.创建新虚拟磁盘 5.设置磁盘大小 6.点击完成 开机的时候会去读取有几块硬盘&#xff0c;总共我们是有4块硬盘&#xff0c;sda\sdb\sdc\sdd 注意&#xff1a;新加的硬盘实际我们…

华为OD机试(C卷,100分)- 游戏分组

题目描述 部门准备举办一场王者荣耀表演赛,有 10 名游戏爱好者参与,分为两队,每队 5 人。 每位参与者都有一个评分,代表着他的游戏水平。为了表演赛尽可能精彩,我们需要把 10 名参赛者分为示例尽量相近的两队。 一队的实力可以表示为这一队 5 名队员的评分总和。 现在给你…

鸿萌数据恢复服务:SQL Server 中的“PFS 可用空间信息不正确”错误

天津鸿萌科贸发展有限公司从事数据安全服务二十余年&#xff0c;致力于为各领域客户提供专业的数据恢复、数据备份、网络及终端数据安全等解决方案与服务。 同时&#xff0c;鸿萌是国际主流数据恢复软件(Stellar、UFS、R-Studio、ReclaiMe Pro 等)的授权代理商&#xff0c;为专…

爬虫案例3——爬取彩票双色球数据

简介&#xff1a;个人学习分享&#xff0c;如有错误&#xff0c;欢迎批评指正 任务&#xff1a;从500彩票网中爬取双色球数据 目标网页地址&#xff1a;https://datachart.500.com/ssq/ 一、思路和过程 目标网页具体内容如下&#xff1a; ​​​​​ 我们的任务是将上图中…

使用AWS Lambda轻松开启Amazon Rekognition之旅

这是本系列文章的第一篇&#xff0c;旨在通过动手实践&#xff0c;帮助大家学习亚马逊云科技的生成式AI相关技能。通过这些文章&#xff0c;大家将掌握如何利用亚马逊云科技的各类服务来应用AI技术。 那么让我们开始今天的内容吧&#xff01; 介绍 什么是Amazon Rekognition&…

前端宝典之五:React源码解析之深度剖析Diff算法

本文主要针对React源码进行解析&#xff0c;内容有&#xff1a; 1、Diff算法原理、两次遍历 2、Diff瓶颈及限制 3、Diff更新之单节点和多节点原理 一、Diff源码解析 以下是关于 React Diff 算法的详细解析及实例&#xff1a; 1、React Diff 算法的基本概念和重要性 1.1 概念…

【LeetCode每日一题】——301.删除无效的括号

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 广度优先搜索 二【题目难度】 困难 三【题目编号】 301.删除无效的括号 四【题目描述】 给…

ROS 2中,CMakeList.txt常见语法

在ROS 2中&#xff0c;CMakeList.txt 文件扮演着配置和管理构建过程的重要角色。这个文件遵循CMake的语法&#xff0c;用于定义如何编译和链接源代码。下面是一些在ROS 2项目CMakeList.txt文件中常见的语法和用法。 1. 基本结构和命令 cmake_minimum_required(VERSION )&…

【设计模式】装饰器模式和适配模式

装饰器模式 装饰器模式能够很好的对已有功能进行拓展&#xff0c;这样不会更改原有的代码&#xff0c;对其他的业务产生影响&#xff0c;这方便我们在较少的改动下对软件功能进行拓展。 类似于 router 的前置守卫和后置守卫。 Function.prototype.before function (beforeFn)…

【C++】————智能指针

作者主页&#xff1a; 作者主页 本篇博客专栏&#xff1a;C 创作时间 &#xff1a;2024年8月20日 一&#xff0c;什么是智能指针 在C中没有垃圾回收机制&#xff0c;必须自己释放分配的内存&#xff0c;否则就会造成内存泄露。解决这个问题最有效的方法是使用智能指针&…

异常信息转储预研笔记-堆栈地址转换

addr2line命令 addr2line -e <exec> <addr> -f | xargs cfilt<exec>: 进程名 <addr>&#xff1a;堆栈地址eg&#xff1a; addr2line -e backtrace 0x4009d2 -f | xargs cfilt此方案测试了&#xff0c;不知道什么原因只显示?? ??:0 &#xff0c;而…

Java面试题--分布式锁

分布式锁 你说一下什么是分布式锁 分布式锁是在分布式/集群环境中解决多线程并发造成的一系列数据安全问题.所用到的锁就是分布式锁&#xff0c;这种锁需要被多个应用共享才可以&#xff0c;通常使用Redis和zookeeper来实现。 分布式锁有哪些解决方案 常用的三种方案 基于…