引言
学习了通过cout在控制台输出,那么这一节我们来学习如何在控制台进行输入。首先,我们用到的关键字是cin,读作C in(西~应)于cout一样一样,通过读法我们可以一下子就能明白这个关键字的作用——C++用来输入的关键字。
现在,我们来想象一个场景,你手上有一个switch游戏机,我对你说:“请把游戏机给我”,但是我却没有伸出手来接。你递出来游戏机,然后松手了,游戏机掉在了地上,我走开了。请问这个过程对于我们而言是否完成了游戏机的传递输入操作?可能你会觉得这个场景好**啊,递给你不接是什么逻辑。原因是在这个场景中缺失了一个承接、保存的容器,所以游戏机的传递操作是没有完成的。
同样的,在C++中,我们想传递、输入数据一样需要有一个容器来存储才算完成了整个输入操作。那么这一节我们就来讨论讨论关于这个容器——变量。
有关变量
变量我们暂时就可以简单理解为存储数据的容器,那么不同的数据应该是用不同类型的容器来存储。就好比你想装碎石你可以用篮子装,如果你想装沙子就需要考虑用更密一点篮子,但是如果要装水,我们就考虑用水桶了。不同的数据也需要使用不同类型的变量来进行存储。下面就列举出了一些基础的数据类型,他们都是将来会经常用到的,所以可以在这里强记一下他们的关键字。
变量类型 | 关键字 | 示例 |
---|---|---|
整型(整数) | int | 5 |
长整型 | long long | 1008611 |
单精度浮点型(小数) | float | 3.14 |
双精度浮点型(小数) | double | 3.1415926 |
字符型(单个字母、数字、符号) | char | ‘a’ |
布尔型(真/假) | bool | true或者false |
创建变量的代码也非常简单,变量的数据类型名称+空格+给变量取一个名+分号结束。
#include <iostream>
using namespace std;
int main () {
int a;
}
上面的代码就创建了一个名字为a的变量,这行代码运行之后,计算机就会在内存中开辟一个空间用来存储整型的数据。我们给变量取名就是为了能够快速、便捷的访问到这个空间内的数据,否则如果通过地址访问的话,你可能需要记住类似“0x9e961ffb5c”这样的内存地址来进行数据的访问。
涉及到取名,C++也设定了取名的规则。
- 变量的名字由数字、字母、下划线(_)组成
- 变量的名字不可以由数字开头
- 变量的名字不可以与系统关键字重复【总不能创建一个叫做cout的变量吧~】
接下来,我们来认识一个符号
=
,在数学中这是等于号,但是在C++中这个符号叫做赋值号
。用于将右侧的值赋予左侧的变量。那么我们创建的变量就可以通过这个符号进行赋值。例如:
#include <iostream>
using namespace std;
int main () {
int a = 10;
a = 12;
}
当这两行代码执行过后,变量a所在的内存中将会存储数值12。我们通常会在创建完变量之后给变量一个初始值。如果不进行赋值,那么可能会出现一些意想不到的情况。例如下面的例子:
#include <iostream>
using namespace std;
int main () {
int a;
cout << a << endl;
}
我们创建了一个变量a,没有给他赋予初始值,但是后续却直接进行了输出。同学们可以思考一下,这段代码运行过后,控制台会输出多少。程序可能会输出一个奇奇怪怪的数值,比如:55123574141。
如果我们将这个过程放到电脑中进行还原就可以理解为什么会输出这样一个数值。第一行代码运行过后,计算机会在内存中开辟一个空间用于存储一个整型的数值,而这段空间可能刚被别的程序释放出来,它里面存储的值还在。所以,我们不去赋予一个新值就直接使用就可能出现问题。好比你去租房子,房东直接把钥匙给你了,也没有清理上一任租户的东西,当你想要住的时候,你会发现房子里还有很多上一任租户的东西。
有关常量
在 C++中,常量是指在程序运行过程中其值不能被改变的量。常量可以增强程序的可读性和可维护性。
什么时候能用到呢,例如我现在手上有100块钱,我想在100块基础上对自己的钱进行合理的分配。那么分配过程中,我的钱是以100为基础的,那么我就不可以在分配过程中随便修改这个100,不然这个过程就失去了意义。
常量在C++中有这样几种形式,大家可以先看看。
- 整数常量:例如 10、200 等。
- 浮点常量:如 3.14、2.567 等。
- 字符常量:用单引号括起来的单个字符,例如 ‘a’、‘5’ 等。
- 字符串常量:用双引号括起来的字符序列,比如 “Hello” 、 “World” 。
我们还可以使用 const 关键字来将变量定义为常量。例如:
#include <iostream>
using namespace std;
int main() {
const int num = 5; // 定义一个整型常量 num 并初始化为 5
// 下面这行代码会报错,因为 num 是常量,不能被修改
// num = 10;
cout << num << endl;
return 0;
}
输入
终于,我们学会了如何去创建一个存储数值的变量,接下来就该学习如何去获取输入了。与输出的传送带方向不同,输入的时候我们希望数值从外部(用户)流入到变量里所以,输入的代码如下:
#include <iostream>
using namespace std;
int main () {
int a;
cin >> a;
}
这里的第一方代码是创建了一个叫做a的变量,我在这里并没有给他赋予初始值,因为接下来一行用户输入的值会直接覆盖原先的值,所以这里不赋予初始值也可以。第二行进行了输入操作,数据从cin(用户)向右移动,存储到变量a中去。当我们点击运行,会发现程序停住了,控制台上什么内容也没有。这其实是控制台在等待我们输入,我们需要点击一下控制台,此时就会出现闪烁的白色光标。接着输入一个整数,点击enter(回车)键即可完成数据的输入。
但是这样的输入显得一点都不高级,我们可以通过上节内容学习到的输出代码,输出一些内容来给用户提示该输入什么内容,并且将用户输入的内容进行输出。
#include <iostream>
using namespace std;
int main () {
cout << "请输入一个整数:";
int a;
cin >> a;
cout << "你输入的数字是:" << a;
}
首先我们通过一个cout输出了一句话,由于没有endl(按的赖),所以输入的光标会直接出现在文字的冒号后面,输入完成之后,我们又利用cout进行输出,输出的内容有两个,分别是文字和变量。那么通过这段代码,我们发现cout其实可以使用多个“<<”连接多个内容,内容会按照从左向右的顺序在控制台输出,这点刚好可以验证我们之前说的cout的数据流动的方向是向左,流到cout就输出了。
接下来就是实践时间了,请你编写代码要求用户输入一个小数
,并将用户输入的数字进行输出!
简单运算
刚才的程序只让用户输入了一个数字,我们也只创建了一个变量。倘若让用户输入两个数字,我们可以做出一个怎样的程序呢?计算器!那么,这个时候我们就需要修改代码让用户两个数据,我们完成计算后输出结果即可。
#include <iostream>
using namespace std;
int main () {
int num1, num2;
cin >> num1 >> num2;
}
欸,根据数据流动的方向猜测,如果用户输入的分别是13和2,请问num1和num2的值分别是多少呢?其实,我们可以观察到数据从cin开始流动,首先流动到num1,接着剩下的数据流动到num2。那么很明显num1将被赋值为13,num2会被赋值为2。
现在,我们拥有了两个数据,接下来该如何进行数据的运算呢?那就不得不提一下C++中的运算符了。
运算名称 | 运算符 | 示例 |
---|---|---|
加法 | + | num1 + num2 |
减法 | - | num1 - num2 |
乘法 | * | num1 * num2 |
除法 | / | num1 / num2 |
取模 | % | num1 % num2 |
整除 | // | num1 // num2 |
四则运算与数学中一致,这里就不再赘述,我们需要记住符号的变化就可以了。我们现在讨论一下新手非常容易犯得错误,请看代码:
#include <iostream>
using namespace std;
int main () {
int num1 = 10, num2 = 5;
num1 - num2;
cout << num1;
}
请问上面的代码执行过后,控制台会输出多少?很多纯萌新会觉得这里不是用num1减去了num2了嘛,num1的值应该是5才对呢。那么,请将代码输入到自己的编辑器运行一下,看看结果吧!
num1值还是10,这是因为我们虽然做了运算,但是并没有将运算的结果赋值给num1,所以num1的值并不会修改。所以,只要我们没在运算式中看到赋值号“=”,那么就不会有变量会改变他的值!
接下来,我们继续讨论关于取模运算(取余运算)和取整运算(整除运算)。这两个运算其实都与除法运算有关,取模运算是计算相除后的余数,例如5 % 3,我们用5除以3商为1余数为2,所以5 % 3的计算结果为2。而取整运算则只取商而不取余数,例如21 // 8,我们用21除以8商为2余5,所以21 // 8的计算结果是2。
在了解了这些以后,我们可以做一个简单的加法计算器了。首先获取两个输入的数字,然后将他们进行相加,将相加得到的和保存到一个变量中,最终输出这个变量即可完成了!
#include <iostream>
using namespace std;
int main () {
int num1, num2, ans;
// 输入两个整数
cin >> num1 >> num2;
// 计算和
ans = num1 + num2;
// 输出和
cout << ans;
}
那么请你完成这个加法器,如果觉得太简陋的话,请通过cout添加一些提示。既然我们学习了6种运算,请你逐一尝试,看一看你是否可以正确的口算整除、取模等运算的结果。
在最后,我们聊一聊上面代码中我们不认识的部分。上面代码中有一些中文的说明,它是对下一行代码的解释,那么这个内容在C++中叫做注释,你会发现代码是写给计算机的,而注释则是写给看代码的人。所以,我们书写的注释并不会被计算机运行,这也就意味着我们可以在注释中随意发挥,哪怕是你画一只猴子上去也可以。
只占一行的注释,我们通过//这个符号即可完成,跟在//后的都是注释内容。如果你想要进行很多行的注释,就需要用到 /*注释的内容写在这里噢!*/ 这样的形式来注释了。
既然提到了注释,顺便将代码规范也给你们简单讲一下。我们书写代码的时候可以注意下变量的命名,将变量存储的值与名称产生关联之后,我们再去阅读就会轻松不少。同时,我们也需要注意运算符前后留一个空格、书写对应的注释这样的细节,总之你们在开始学习的过程中模仿的时候不要偷懒,尽量与我保持一致。规范代码书写的目的是为了我们以后再回头看自己的代码的时候能看的舒服、快速理解。下面就是两段代码,我们对比以下就知道代码规范是什么了!
这节的内容就到这里了,小伙伴们,我们下一节见!点我加入企鹅群,或者自己搜索群号:839424149