Skip to content

第 2 课:初识变量 ​

蛙蛙通过前一天的学习,已经掌握了 C++ 基本框架和 cout 语句的使用。通过 cout 语句,他不仅能够打印自己的心情,还能计算商品的总价格。

氪町博士昨天就告诉蛙蛙,今天要学习一个非常重要的知识点,这个知识点同样会贯穿整个编程阶段的学习。蛙蛙已经期待一个晚上了,终于等到了今天的氪町博士小课堂。

2.1 什么是变量 ​

氪町博士告诉蛙蛙,今天要学的知识点叫作变量,简而言之就是可变化的量。比如我们在上一节中计算了香蕉的价格,但如果单价改变了或者买的数量改变了,则需要重新计算一遍,但如果将单价和购买数量用变量代替,这个程序只需要写一次即可。

蛙蛙还是有点儿懵,氪町博士看出了蛙蛙的疑惑,于是问蛙蛙:"你有没有玩过计算机游戏?"

蛙蛙自信地点了点头。氪町博士继续说道,我们可以把游戏中人物的血量看作变量。假设某个游戏人物有 10 格血,每受一次伤,血量就会减 1 格,当吃下血包的时候,血量就会加 1 格(当然不能超过 10,这个知识点需要通过下一章的内容"选择结构"来学习,我们暂时先假设没有这个限制)。

蛙蛙觉得变量就好像一个能存放东西的小盒子一样。假设用这个小盒子代表血量,一开始这个小盒子里面就存放了 10 格血,我们可以拿走一些血量(−1),也可能会放进来一些血量(+1)。

我们可以把变量看作一个小盒子,小盒子可以存放同种类型的东西(比如血量),里面的东西可能会增加,也可能会减少。

2.2 变量的定义 ​

定义格式:变量类型 变量名;

什么是变量类型,什么又是变量名呢?

这里还是以血量为例,血量一共有 10 格,相当于初始化为 10。当游戏人物受到伤害时,血量就会减 1;游戏人物吃到血包时,血量就会加 1。我们会发现血量无论增加还是减少,它总是一个整数(不是小数或其他类型)。

所以存放血量的小盒子(变量)要能够存放整数,因而我们需要向计算机申请一个能够存放整数的盒子。这里用关键字 int 去申请,也就是变量类型为 int。(int 是 integer 的缩写,integer 意为整数,int 数据类型被称为整型。)

我们申请了这个能够存放整数的小盒子,还需给它起一个名字。如果用它来保存血量,那就起个跟血量相关的名字,比如 blood。

但是这个名字也不是随便起的,它是有一定的命名规则的。

  1. 组成部分:变量名可以由字母(a~z、A~Z)、数字(0~9)和下划线(_)组成。

  2. 开头要求:变量名必须以字母或下划线开头,不能以数字开头。例如 blood、_blood 都是合法的,但是 10blood 就是非法的。

  3. 区分大小写:变量名是区分大小写的,比如 blood 和 Blood 是两个不同的变量名。

  4. 不能以关键字命名:比如不能以 int、double、if、else 等(我们以后还会接触到更多关键字)命名。

  5. 见名思义:虽然这个规则并不影响编程语法,但最好还是要使用有意义的变量名,这样有助于阅读和理解代码。比如看到 blood 就能够想到这个变量可能会代表血量。在学习编程初期,一定要养成良好的代码编写习惯。

完整的写法就是:

cpp
int blood;

即申请一个能够存放整数的变量,命名为 blood,变量申请完之后,结尾的分号千万不能忘记。

有时候可能会需要多个变量。如果想一次性定义多个变量的话,只需要将多个变量名用逗号隔开即可,比如

cpp
int a,b,c;

这里的 a、b、c 表示三个不同的变量。

2.3 变量的赋值 ​

现在我们把变量比作一个小房间,这个小房间只能存放板凳。开始的时候,小房间里面没有一个板凳,我们可以称变量初始化为 0,记作:

cpp
int s = 0;

这里的 s 表示小板凳的数量。如果我们将三个板凳搬进这个小房间里面,此时小房间里板凳的数量为 3,可以表示为:

cpp
s = 3;

为什么这里不需要 int 了呢?蛙蛙有些疑惑。

那是因为小房间这片空间已经在前面申请了,不需要再申请一次,直接拿过来用即可。但是需要注意,这里的 = 是编程语言中的赋值运算符,并不等同于数学中的等于号。

标准的赋值格式为:

cpp
变量 = 表达式 ;

它表示把 = 右边的表达式赋值给左边的变量,s = 3 的意思是把 3 这个数值赋值给变量 s。还以上面的情景为例,就相当于往小房间里面放进去了三个板凳,此时小房间里板凳的数量才等于 3。

2.4 变量的输出 ​

变量的输出,其实就是输出变量里存放的数,就和之前我们输出一个数是一样的。假设已经声明了 a、b、c 三个变量,此时要将这三个变量输出,应该如何表示呢?

我们之前学过输出实际的数,比如直接使用 cout 语句输出 22,即使用 cout << 22; 在控制台打印出 22 这个数。

同样,如果想要输出一个变量,也是直接使用 cout 加连接符连接变量名即可,比如输出变量 a,表示为:

cpp
cout << a; // 表示输出变量 a 的值

如果我们想要输出多个变量,也是同输出多个数字一样,使用连接符连接即可,表示为:

cpp
cout << a << b << c; // 表示输出变量 a、b、c 三个变量的值

但是如果按照上面这样写,输出的三个值会紧紧地贴在一起,没有分隔开。你还记得怎么分开的吗?如果忘记的话,记得回顾一下 1.1.4 节的例 3 解析哦。

2.5 标准输入 ​

常见的程序不仅会有输出,还会有输入。比如你想搜索某个名词,会在搜索框里面输入这个名词,搜索框读入你输入的内容后,再给你输出一些相关信息,这个程序中就涉及输入和输出。

在 C++ 中输入的格式如下:

cpp
cin >> ... ;

我们输入的内容肯定要存放到某个地方(空间)。大家可以思考一下,我们刚刚是不是提到过空间?

没错,就是变量。假设我们申请了一个整型变量 s,往 s 中输入一些内容,那么 s 这块空间里面存放的内容便是我们输入的值,具体如下:

cpp
cin >> s;

在基本框架里面写入这行代码后,点击"编译运行",则可以在控制台中看到一个一闪一闪的光标,可以在里面输入一个值,比如输入 22,就相当于 s 这个变量的值为 22。

注意:目前所编写的代码均在基本框架内,输入变量前需要先对变量进行定义,输入完之后按回车键表示输入结束。

如果想输入多个变量,格式与输出类似,用 >> 连接即可,这个连接符与输出的连接符 << 是相反的。假设我们现在想输入三个变量 a、b、c,并且这三个变量已经声明,那么输入格式如下:

cpp
cin >> a >> b >> c;

2.6 实例讲解 ​

现在我们已经学会了如何定义、使用变量,接下来跟随蛙蛙一起完成下面几个例题吧。

例 1:蛙蛙的书架 ​

蛙蛙最近为了好好学习编程,买了很多与编程相关的书,但是这些书没地方摆放,于是爸爸决定给蛙蛙买一个新书架来放置这些书。

拿到书架后,蛙蛙赶紧把书放了上去,一边放一边数了书的数量,一共有 8 本,全部放了上去。请你用变量的形式在控制台中打印蛙蛙新书架上书的数量。

【输出格式】输出一行,用变量的形式输出新书架上书的数量。

【输出样例】8

解析

题目要求我们用变量进行输出,所以需要我们先声明一个变量。声明变量需要有变量类型和变量名,在给变量命名的时候要注意变量命名规则。然后给变量赋一个值,这个值在题目中已经给定了,最后直接使用 cout 输出这个变量即可。

参考代码

cpp
#include <iostream>
using namespace std;
int main()
{
    int books = 8;
    cout << books;
    return 0;
}

例 2:书架上的书总数 ​

蛙蛙把 8 本编程书放进书架后,发现书架还是空荡荡的,于是他把以前买的其他种类的书也放进去了,又放进去了 13 本书,请问现在书架上一共有多少本书呢?

【输出格式】用变量的形式分别表示编程书及其他种类的书总数,再输出一行,为两者之和。

【输出样例】21

解析

我们可以用变量 books1 表示编程书的总数,用 books2 表示其他种类书的总数(当然如果你想用其他变量也是可以的,比如用 a 表示编程书的总数,b 表示其他种类书的总数)。

然后输出 books1 和 books2 之和即可。

参考代码

cpp
#include <iostream>
using namespace std;
int main()
{
    int books1 = 8, books2 = 13;
    cout << books1 + books2;
    return 0;
}

例 3:科普书的数量 ​

学校图书馆每周都会迎来大量借书、还书的学生。管理员在整理书架时,发现某类科普书还剩下 n 本,为了清楚地了解库存情况,方便后续管理,他希望能通过程序记录该类书的剩余数量。

【输入样例】22

【输出样例】22

解析

在控制台输入一个变量的值,使用我们刚刚学习过的 cin >> ... 语句,记住,cin 后面的连接符的朝向与 cout 相反。

假设已经声明了一个名为 n 的变量,如果想在控制台内输入这个变量的值,则需要:

cpp
cin >> n;

结尾的分号也不要忘记。运行后,则可以看到控制台内有个光标在闪,是在提醒你输入一个变量,输入完之后按回车键即可将输入的值保存到变量 n 中。

参考代码

cpp
#include <iostream>
using namespace std;
int main()
{
    int n;     // 声明变量 n
    cin >> n;  // 输入变量 n。比如输入 22,n 的值此时便为 22
    cout << n; // 输出 n 的值
    return 0;
}

例 4:借出去的书 ​

蛙蛙有很多同学。前几天有几名同学来找蛙蛙玩,他们看到了蛙蛙书架上的编程书,十分感兴趣,也有些同学对其他书感兴趣。

所以他们想问蛙蛙能不能把书借给他们拿回家看几天,蛙蛙自然是同意的。

假设一共有 m 名同学来向蛙蛙借书,每名同学都借了 n 本书,蛙蛙想统计一下他那次借出去多少本书。

【输入格式】输入一行,两个整数 m 和 n,分别表示同学人数和每名同学借走的书的数量。

【输出格式】输出一行,为蛙蛙一共借出去了多少本书。

【输入样例】3 2

【输出样例】6

解析

由于同学的数量和每人借蛙蛙书的数量都是变化的,所以需要声明两个变量,分别用来表示有多少名同学来借书,以及每名同学借多少本。

想要输入多个变量,格式与输出一致,连接符相反。这里先假设有 m 名同学,每名同学借 n 本书,则有:

cpp
cin >> m >> n;

用两个 >> 连接符连接两个变量,m 和 n 需要提前声明,声明时多个变量之间需要用逗号隔开。

参考代码

cpp
#include <iostream>
using namespace std;
int main()
{
    int m, n;
    cin >> m >> n;
    cout << m*n;
    return 0;
}

注:原书此处代码跨页截断,缺少 #include <iostream> 与 using namespace std; 两行,此处已按上下文补全。

基于 MIT 协议发布