变量
存储数据的容器——变量
今天我们要学习一个非常重要的概念——变量。在生活中,我们经常会遇到各种各样的变化,比如温度的变化、身高的增长等。在计算机编程中,也有类似的概念,那就是变量。变量是用来存储数据的容器。我们可以把变量理解为装液体的瓶子。不同瓶子之间的形状和材质各不相同,有的适合装水,有的适合装油,有的适合装醋,所有可以把这些瓶子分成不同的种类,即瓶子的“类型”不同。在编程中,这个瓶子的类型称作变量的“数据类型”。比如能存储整数的变量是整数类型,简称“整型”,能存储字母的变量是字符类型。当然,在生活中为了防止错拿调料瓶,比如放陈醋和酱油的瓶子很容易被混淆,我们还会为每个瓶子都贴上一个标签,比如“陈醋”、“酱油”、“色拉油”等等。这些标签就如同这些容器的“名字”一样,我们称其为变量名。那我们该如何获得和使用变量呢?
变量的声明
如果你想用瓶子装某种液体,你首先得先有一个瓶子才行。在C++中也是如此,你想存储一个数据,你首先要有一个变量,而这个变量可不会凭空出现,你必须明确的向计算机系统表达你的需求:“计算机我需要一个瓶子!”。这个过程叫变量的声明。声明变量时,你需要告诉计算机这个变量的名称和类型。比如在C++中这样声明一个变量:
int n;
计算机系统就会给你一个瓶子,不仅如此他还会为你在这个瓶子上贴上一个标签:“n”,他还会时时刻刻帮你记得这个瓶子只能装整数(int代表整数类型)。你还可以声明一个能装字母的字符型变量,如:
char ch;
当然如果你一次需要多个同类型的变量,也可以一起跟计算机说,而不用一次一次的声明。比如:
int a,b,c;
这样计算机一次帮你申请了3个int类型的变量。千万注意,变量a、b、c之间是英文的逗号,而最后用的是英文的分号。在C++中,分号表示这句话结束了,功能有点类似中文中的句号。
聪明的小朋友们,你们现在可以在编译器中尝试声明一下变量吧!
变量赋值
有了瓶子,我们就可以往瓶子里装东西了。在C++中,往变量中“放”数据的工作叫做变量的赋值。比如:
n = 10;
注意,初学者不要把它读成“n等于10”,正确的读法是把10赋值给变量n。当然在使用n这个变量之前,前面要先定义好。
字符型变量的赋值如下:
ch = ‘A’;
这里应该读作:“把字母A赋值给变量ch”。
有的时候我们可以在声明变量的时候直接给变量赋值。这有点像在超市买矿泉水——瓶子里直接已经有水了,不需要我们另外去装。
比如:
int n = 10;
char ch = ‘A’;
除了在程序中直接给变量赋值以外,还可以在程序运行的时候,通过键盘输入得方式为变量赋值。
比如:
cin>>a;
程序运行到这条代码的时候就会暂停,在控制台上闪烁光标,等待你为变量a来赋值。你现在就可以动手试一下了,注意光标是否在闪烁。
cin的功能非常强大,可以一次同时为多个不同类型的变量赋值。比如:
cin>>a>>ch;
如果在控制台输入10 A,那么整型变量a中存储的就是10,字符型变量ch中存储的就是字母’A’。
注意:在控制台为字符型变量赋值的时候不需要单引号,但是在程序中赋值的时候需要单引号。
这里请你思考一个问题:对于一个刚声明的变量,在被赋值之前里面有没有内容呢?
其实是有的。你可以这样理解,这些瓶子都是反复循环利用的。之前的瓶子装过东西,你申请到这个瓶子以后,可能还残留前一个使用者装的液体,因此对于变量,一定要赋值以后再使用!
变量的使用
首先我们经常做的操作是,看瓶子里还有多少东西?C++中叫做查看变量的内容。比如:
cout<< a<<endl;
就是在控制台中显示变量a中存储的数据。
我们在瓶中保存数据的目的并不是用来看这么简单的,我们还可以做很多其他的事情:
比如,我们可以用来参与计算:
cout<<20+a<<endl;
看看控制台会输出什么内容,是不是输出的是30?因为变量a中保存的数据是10。20+10等于30。在一个运算中,变量可以当一个具体的数来使用。
请思考一下,如果有下面的代码会输出什么内容?
int a, b = 20, c;
a = 10;
c = a + b;
cout << c << endl;
当你心中有了结果以后,可以在你的编译器中,运行上面的代码,看看程序在你头脑中运行的结果与计算机是否一致?是的,以后所有的程序都要现在脑袋里运行,然后再去计算机中验证。那么你的脑袋就会越来越好使,最终会像电脑一样厉害!
这里还有一个小技巧要偷偷的告诉你。C++中,针对整型变量,有个特殊的写法:
a++;
他会让变量a里的内容增加1。比如a里面原来存储的数据是10,这行这个操作以后就会变成11。前面这种写法完全等价于下面的写法:
a = a + 1;
你猜一猜,下面的代码有什么作用呢?
a–;
思考题:如何交换两个变量的值?
我们可以把变量看做装了水的瓶子,那这个问题就转换成如何交换两个瓶子里的水。通常的做法是:第一步,我们先找朋友借一个空瓶子;第二步,把第一个瓶子里的水倒入借来的瓶子中;第三步,把第二个瓶子里的水倒进第一个瓶子里;最后,借来瓶子中的水倒入第二个瓶子中(还有别忘了把瓶子还给你的朋友)。
我们在C++中模拟这个过程:
int a = 10, b = 20;
int c; //变量c用来模拟借来的瓶子
c = a;
a = b;
b = c;
cout << a << ” ” << b << endl;
当然,还有不是“通常”的做法。要了解这种做法,首先要知道变量在给别的变量赋值时,自身不会发生变换的(这与现实生活中的倒水不同)。比如执行下面的语句:
c = a;
系统会用a的值赋为变量c赋值,这个过程中变量a的值是不会改变的。知道了这个事情,我们再来看一下下面的代码:
int a = 10, b = 20;
a = a + b;
b = a – b;
a = a – b;
cout << a << ” ” << b << endl;
这段代码同样实现了变量值的交换。聪明的你能看懂原理么?如果懂了做一下下面的填空题看看:
//交换两个变量的值
int a = 10, b = 20;
a = a – b;
______;
______;
cout << a << ” ” << b << endl;
对于int类型变量有个非常特别的性质:当两个整数做除法的时候得到的结果是商。比如下面的代码:
int a = 5, b = 2;
cout << a/b << endl;
输出的结果是2,不是5.2!一定要记住两个整数相除的时候得到的是商!!!那余数怎么求呢?C++给了另外一个运算符,专门计算两个整数相除的余数,他就是“%”。大家可以试一下cout << a%b << endl;的结果是什么。
这里一定要注意两点:
- 对于除法运算符“/”,只有两边都是整数时结果才是商,两边只要有一个是其他类型的数据就会直接计算结果;
- 求余数运算符“%”,两边必须是整数,否则系统编译时会报错!
好了,学了这么知识,让我们来实践一下吧。你的好朋友小明同学家里经常来客人,现在需要为每个人准备茶水。已知小明家的水壶能有n毫升水,纸杯能装m毫升水。请你帮助小明同学设计一个程序,能帮助小明快速计算能倒多少杯水(每杯都要满)?水壶还剩下多少水?
int n, m;
cin >> n >> m;
cout << “能倒” << n / m << “杯水,水壶中还剩余” << n % m << “毫升水” << endl;
现在我们挑战一下更有难度的一道题。假设输入一个三位数,求各个位上的数字之和是多少?首先我们需要知道怎么求个位。因为我们是十进制的整数n,所以除以10的余数就是个位,商就是去掉个位以后的数值。比如整数n的值是123。
123%10结果是3, 123/10的结果是12,即去掉个位以后的值。这样我们就可以用“降维”的方法来思考问题,把3位数降到2位数,然后再降到1位数。参考代码如下:

卉通天下
2024 年 7 月 2 日 上午1:29
a=a-1
qiqi
2024 年 7 月 6 日 下午2:07
这里是否需要加上负整数取余的讨论?