变量、数据类型与输入输出
一句话目标:让程序学会三件事 —— 算(运算)、记(变量)、说话(输入输出)。
第一部分:程序的三件事
一个最朴素的程序,本质上只做三件事:
| 能力 | 关键词 | 例子 |
|---|---|---|
| 计算 | 运算符 | 2 + 3、19 * 33 |
| 存储 | 变量 | 把算出来的结果记住 |
| 交流(IO) | 输入 cin / 输出 cout | 从键盘读数、把答案打到屏幕 |
今天就把这三件事一次讲清楚。
第二部分:输出与输入(cout / cin)
输出 cout
#include <iostream>
using namespace std;
int main() {
cout << 2 + 3; // 屏幕上出现 5
cout << "Hello"; // 屏幕上出现 Hello
return 0;
}<<像一个箭头,把右边的东西”送进”屏幕。- 想换行用
<< endl或<< "\n"。
输入 cin
int a, b;
cin >> a; // 读入一个数,存进 a
cin >> a >> b; // 也可以一次读两个数>>箭头方向相反:把键盘输入的内容”装进”变量。- 输入多个数时,中间用空格或回车隔开都行。
例 1:输入两个数 a、b,输出它们的和 c
int a, b, c; cin >> a >> b; c = a + b; cout << c;
第三部分:变量与数据类型
变量就是一个带名字的盒子,用来装数据。装东西前要先说明盒子装什么类型:
int n = 35; // 整数
double pi = 3.14; // 小数(浮点数)
char c = 'a'; // 单个字符,用单引号
string name = "Bob"; // 字符串,用双引号
bool isOK = true; // 真/假| 类型 | 装什么 | 写法要点 |
|---|---|---|
int | 整数 | 最常用 |
double | 小数 | 别用 float 凑合 |
char | 单个字符 | 单引号 'a' |
string | 一串字符 | 双引号 "Bob",需 #include <string> |
bool | 真假 | true / false |
变量名(标识符)的规则
合法的变量名必须满足:
- 只能由 英文字母、数字、下划线
_组成; - 不能以数字开头;
- 不能和 关键字(保留字) 重复,比如
int、if、return等。
课堂判断:下面哪些合法?
名字 合法? 原因 xiaowulaoshi✅ 全是字母 _1apple✅ 下划线开头可以,数字在中间可以 8apple❌ 数字开头 kkk@SH❌ 出现了 @char❌ 是关键字 iPhone11✅ 字母+数字,数字不在开头
第四部分:算术运算符
| 名称 | 符号 | 例子 | 结果 |
|---|---|---|---|
| 加 Addition | + | x + y | 和 |
| 减 Subtraction | - | x - y | 差 |
| 乘 Multiplication | * | x * y | 积 |
| 除 Division | / | x / y | 商 |
| 取余 Modulus | % | x % y | 余数 |
cout << 2 + 3; // 5
cout << 5 - 4; // 1
cout << 19 * 33; // 627
cout << 1024 / 16; // 64⚠️ 两个最容易踩的坑
- 整数除法会丢小数:
7 / 2得到的是3,不是3.5!
想要小数结果,至少一边写成小数:7.0 / 2→3.5。 - 取余
%只能用于整数:7 % 2→1(7 除以 2 余 1)。
取余在判断奇偶、循环计数里超级常用。
第五部分:经典例题
例 2:变量交换
有两个变量
a = 15、b = 30,交换它们的值并输出。
直接 a = b; b = a; 行不行?❌ 不行——第一步 a 被覆盖成 30,原来的 15 就丢了。
正确做法:借一个临时变量当中转站。
int a = 15, b = 30;
int temp = a; // 把 a 存起来
a = b; // a 拿到 b 的值
b = temp; // b 拿到原来 a 的值
cout << a << " " << b; // 30 15形象比喻:两个杯子里的水要互换,必须先倒进第三个空杯。
例 3:再分”肥宅水” 🥤
有
n瓶肥宅快乐水,平均分给若干人,问每人几瓶、还剩几瓶。
—— 这正是/和%配合的舞台:
int n, people;
cin >> n >> people;
cout << "每人 " << n / people << " 瓶,"; // 整除得每人份额
cout << "还剩 " << n % people << " 瓶"; // 取余得剩余小结
- IO:
cin >>读入,cout <<输出,箭头方向就是数据流向。 - 变量:先声明类型再用;命名遵守”字母数字下划线、不以数字开头、不撞关键字”。
- 运算符:
+ - * / %,牢记整数除法丢小数、%只用于整数。 - 交换变量:一定要借助临时变量。
课后小练
- 输入一个三位数,分别输出它的百位、十位、个位(提示:
/和%)。 - 输入两个整数,输出它们的和、差、积、商、余数。
- 不用临时变量,能否用加减法交换两个整数?(思考题)