CC++ & Algorithm

变量与常量

简单107
语言版本:C++Python
概述:变量就像带有名字的储物盒,可以存放数据并且可以改变;常量就像带锁的箱子,放进去后就不能再改。

变量与常量:给数据起个名字

在编程的世界里,我们经常要保存一些数据,比如你的年龄、身高,或者游戏里的分数。这些数据需要放在电脑的“内存”里,而变量和常量就是帮我们给这些数据取名字的“小工具”。
你可以把电脑内存想象成一个巨大的储物柜,里面有很多个小格子。变量就像贴了标签的储物盒,你可以随时往里面放东西、换东西;常量则像带锁的铁箱子,第一次放进去后就再也打不开了。学会使用变量和常量,你就能在程序中存储和操作数据啦!


1. 变量——可以随时更改的储物盒

1.1 什么是变量?

变量就像一个可以随意打开和关闭的储物盒。你可以在盒子上贴一个标签,比如 age(年龄),然后往里面放一个数字,比如 10。过一会儿,你还可以打开盒子,把里面的数字换成 11。盒子里面的东西可以变,这就叫变量

在C++中,使用变量之前要先“声明”,告诉电脑这个盒子叫什么名字、能装什么东西。比如:

int age = 10;   // 声明一个叫age的变量,里面放整数10
age = 11;       // 把age里的值改成11

第一行叫“声明并初始化”——既告诉电脑我要一个叫 age 的盒子,又放了数字 10 进去。第二行是“赋值”——再打开盒子,把里面的内容换成 11。

1.2 变量需要先“说明”再使用

电脑不认识乱起名字的盒子。声明变量时要指定数据类型,告诉盒子只能装哪种东西:

数据类型能装什么生活中的例子
int整数(没有小数点)年龄、班级人数、游戏金币数
float小数(有小数点)身高(1.65米)、期末考试的分数(92.5分)
char单个字符(用单引号括起来)性别 'M'、成绩等级 'A'
bool逻辑值(真或假)今天是否下雨(true/false

例如:

int score = 100;          // 游戏得分,整数
float height = 1.65;      // 身高,带小数
char grade = 'A';         // 成绩等级,单个字符
bool isHappy = true;      // 今天开心不?true表示真

1.3 变量的命名规则

给盒子贴标签也要遵守规矩,不然电脑会“看不懂”:

  1. 只能使用字母、数字和下划线 _,例如 myScorenum_1 都可以。
  2. 不能以数字开头,比如 2age 是错的,age2 是对的。
  3. 不能和C++的关键字重名,比如 intreturnif 这些词已经被电脑占用了。
  4. 区分大小写ageAge 是两个不同的盒子。

? 小提醒:命名最好“见名知义”,比如用 studentCount 而不是 s,别人(包括以后的你自己)一看就知道是学生人数。


2. 常量——锁住数据的铁箱子

2.1 什么是常量?

常量就像一个带锁的铁箱子。你第一次放进去的东西,箱子就自动锁住,以后再也打不开了。所以常量的值一旦确定,就不能再修改。

在C++中,用 const 关键字来表示常量。例如:

const int DAYS_IN_WEEK = 7;   // 一周有7天,永远不会变
// DAYS_IN_WEEK = 8;          // 这行会报错,因为常量不能改

常量通常用全大写字母命名,多个单词之间用下划线连接,这样一眼就能看出它是常量。当然,这不是强制要求,但大家都这么写,方便阅读。

2.2 常量有什么用?

  • 防止意外修改:比如圆周率 π,如果写成变量,万一不小心改成了 3,整个程序就错了。用常量,编译器会帮你拦住错误。
  • 让代码更容易维护:如果你在程序里到处写了数字 3.14159,有一天发现需要更高精度,要改十几个地方。但如果定义了一个常量 PI,你只需要改这一处。

生活中哪些东西是常量?数学上的圆周率、一年有12个月、一小时有60分钟、你的生日(年月日不变)。


3. 为什么要有常量和变量?

  • 变量用来存放会变化的数据,比如玩家的生命值、得分、你的零花钱总数(每月可能有变化)。
  • 常量用来存放固定不变的数据,比如一包薯片的价格(假设商店不涨价)、太阳从东方升起。

一个简单的例子:你每天有 10 元零花钱(常量),今天花了 3 元买了一支笔,剩余的钱(变量)是多少?

const int POCKET_MONEY = 10;   // 每天固定10元零花钱,常量
int spend = 3;                 // 今天花掉3元,变量
int left = POCKET_MONEY - spend;  // 剩余7元,也是变量

4. 新手最容易犯的错误

❌ 错误1:忘记声明变量直接使用

age = 10;   // 错误!没有先声明 int age;

正确做法:先声明再赋值。

❌ 错误2:给常量赋值

const int DAYS = 7;
DAYS = 8;   // 错误!常量不能修改

编译器会提示错误,就像你想撬开锁着的铁箱子一样。

❌ 错误3:变量名搞错大小写

int myAge = 12;
myage = 13;   // 错误!myage 和 myAge 是两个不同的名字

C++对大小写很敏感,myAgemyage 完全不一样。

❌ 错误4:变量未初始化就使用

int number;          // 只声明,没放任何东西
cout << number;      // 可能输出一个奇怪的大数字,这是因为盒子里还残留着别人用过的垃圾数据

好习惯:声明变量时就给它一个初始值,比如 int number = 0;


5. 完整可运行示例

下面是一个完整的C++程序,它用到了变量和常量,计算一个圆的面积和周长。你可以复制到编译器里运行试试。

#include <iostream>   // 输入输出头文件
using namespace std;

int main() {
    // 常量:圆周率,3.1415926,永远不变
    const float PI = 3.14159;
    
    // 变量:圆的半径(可以修改)
    float radius = 5.0;          // 半径设为5厘米
    float area;                  // 声明变量area,用来装面积
    float circumference;         // 声明变量circumference,用来装周长
    
    // 计算:面积 = π * 半径的平方,周长 = 2 * π * 半径
    area = PI * radius * radius;
    circumference = 2 * PI * radius;
    
    // 输出结果
    cout << "半径: " << radius << " 厘米" << endl;
    cout << "面积: " << area << " 平方厘米" << endl;
    cout << "周长: " << circumference << " 厘米" << endl;
    
    // 试试修改半径
    radius = 10.0;               // 换成10厘米
    area = PI * radius * radius; // 重新计算面积
    cout << "改半径后 面积: " << area << " 平方厘米" << endl;
    
    return 0;
}

运行结果

半径: 5 厘米
面积: 78.5397 平方厘米
周长: 31.4159 厘米
改半径后 面积: 314.159 平方厘米

注意:常量 PI 始终是 3.14159,如果你试图修改它(比如 PI = 3.14;),编译器会报错。而半径 radius 可以自由更改,这就是变量与常量的区别。


6. 小练习(重温一下)

想想看,下面哪些东西应该用变量,哪些应该用常量?

  1. 你的年龄(会变 → 变量)
  2. 数学上的“圆周率”(不变 → 常量)
  3. 你玩的游戏里角色的金币数(会变 → 变量)
  4. 一年有12个月(不变 → 常量)
  5. 今天的气温(会变,每分钟都可能测出不同值 → 变量)

如果都能正确判断,恭喜你,你已经掌握了变量和常量的基本用法!


7. 接下来可以学什么?

  • 输入输出:用 cin 让用户自己输入半径,程序就不需要写死在代码里了。
  • 运算符:加减乘除、求余数,让变量能更好地变化。
  • 条件判断:比如判断游戏金币是否足够买新装备,用 if 语句。
  • 数据类型进阶double(精度更高的小数)、string(字符串,比如你的名字)。

变量和常量是编程的“地基”,打好基础,后面的高楼大厦才能稳稳地建起来。试试自己写几个小程序,把生活中的数据用变量和常量装进去吧!

例题精讲

1单选题

在C++中,以下哪条语句正确地声明了一个整型变量并初始化为10?

Aint x = 10;
Bint x = 10
Cx = 10;
Dint x;
2判断题

在C++中,使用const关键字定义的常量在程序运行过程中可以被修改。

3填空题
请在下面代码的横线处填上合适的关键字,使程序定义一个值为3.14的常量PI:
#include <iostream>
using namespace std;
int main() {
    ___ double PI = 3.14;
    cout << PI;
    return 0;
}
4单选题

下列有关变量和常量的说法,哪一项是正确的?

A变量的值可以改变,常量的值也可以改变
B常量的值可以改变,变量的值不能改变
C变量的值可以改变,常量的值不能改变
D变量和常量的值都不能改变
5填空题
以下代码中,变量a被赋值为5,然后修改为10。请在横线处填上正确的赋值语句。
#include <iostream>
using namespace std;
int main() {
    int a = 5;
    ___ = 10;
    cout << a;
    return 0;
}