变量、数据类型与输入输出

一句话目标:让程序学会三件事 —— 算(运算)、记(变量)、说话(输入输出)


第一部分:程序的三件事

一个最朴素的程序,本质上只做三件事:

能力关键词例子
计算运算符2 + 319 * 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

变量名(标识符)的规则

合法的变量名必须满足:

  1. 只能由 英文字母、数字、下划线 _ 组成;
  2. 不能以数字开头
  3. 不能和 关键字(保留字) 重复,比如 intifreturn 等。

课堂判断:下面哪些合法?

名字合法?原因
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

⚠️ 两个最容易踩的坑

  1. 整数除法会丢小数7 / 2 得到的是 3,不是 3.5
    想要小数结果,至少一边写成小数:7.0 / 23.5
  2. 取余 % 只能用于整数7 % 21(7 除以 2 余 1)。
    取余在判断奇偶、循环计数里超级常用。

第五部分:经典例题

例 2:变量交换

有两个变量 a = 15b = 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 << " 瓶";      // 取余得剩余

小结

  • IOcin >> 读入,cout << 输出,箭头方向就是数据流向。
  • 变量:先声明类型再用;命名遵守”字母数字下划线、不以数字开头、不撞关键字”。
  • 运算符+ - * / %,牢记整数除法丢小数% 只用于整数
  • 交换变量:一定要借助临时变量。

课后小练

  1. 输入一个三位数,分别输出它的百位、十位、个位(提示:/%)。
  2. 输入两个整数,输出它们的和、差、积、商、余数。
  3. 不用临时变量,能否用加减法交换两个整数?(思考题)