20260227 084620 Cpp 入门第二课

20260227_084620_CPP_入门第二课.md

欢迎回来!在上一章,我们学会了如何让计算机开口说话(输出)。现在,我们要学习如何让计算机拥有“记忆”和“计算”的能力,这就是变量输入。这一章我们将一起探索C++中最重要的基础概念,保证让你轻松掌握!


2.1 变量

2.1.1 变量程序范例

我们先来看一个简单的程序,它定义了两个变量,并进行加法运算。

#include <iostream>
using namespace std;

int main() {
    int a;          // 定义一个整型变量,名字叫a
    int b;          // 定义另一个整型变量b
    int c;          // 定义变量c,用来存结果

    a = 10;         // 把10赋值给a
    b = 20;         // 把20赋值给b
    c = a + b;      // 计算a加b,结果存到c

    cout << c;      // 输出c的值

    return 0;
}

运行结果

30

2.1.2 变量的用法

什么是变量?

变量就像是一个小盒子,我们可以在里面放东西(数据)。每个盒子都有名字(变量名)和能放的东西的类型(数据类型)。

  • 变量名:盒子的名字,比如 ascoreage
  • 数据类型:盒子能装什么类型的东西,比如整数、小数、字符等。
常用的数据类型
类型名 中文含义 能装什么 例子
int 整型 整数 10, -5, 0
double 双精度浮点型 小数 3.14, -2.5
char 字符型 单个字符 ‘A’, ‘b’, ‘9’
string 字符串型 一串文字 “Hello”, “C++”

注意string 类型需要包含 <string> 头文件,但我们先主要学 intdouble

变量的定义和赋值
  • 定义变量:告诉计算机我要一个新盒子,并指定类型。
  int age;        // 定义整型变量age
  double price;   // 定义双精度变量price
  char grade;     // 定义字符变量grade
  • 赋值:往盒子里放东西。
  age = 10;           // 把10放进age盒子
  price = 19.9;       // 把19.9放进price盒子
  grade = 'A';        // 把字符A放进grade盒子
  • 定义时直接初始化(一边定义一边放东西):
  int age = 10;
  double price = 19.9;
  char grade = 'A';
变量的命名规则

给变量起名字要遵守规则,就像每个人要有合法的身份证号一样:
1. 只能由字母(a-z,A-Z)、数字(0-9)和下划线(_)组成。
2. 不能以数字开头。
3. 不能是C++的关键字(比如 intreturn 等)。
4. 尽量起有意义的名字,比如 scores 好。

合法名字myAge, _temp, number1
非法名字2num(数字开头),int(关键字),my-name(有连字符)

2.1.3 编程实例讲解

实例1:交换两个变量的值

题目:有两个盒子a和b,分别装着苹果和橘子,现在要交换它们的内容。

思路:需要第三个临时盒子来帮忙。

#include <iostream>
using namespace std;

int main() {
    int a = 5;      // 盒子a有5个苹果
    int b = 3;      // 盒子b有3个橘子
    int temp;       // 临时盒子

    cout << "交换前:a=" << a << ", b=" << b << endl;

    temp = a;       // 把a的东西放到临时盒子
    a = b;          // 把b的东西放到a
    b = temp;       // 把临时盒子的东西放到b

    cout << "交换后:a=" << a << ", b=" << b << endl;

    return 0;
}

运行结果

交换前:a=5, b=3
交换后:a=3, b=5

2.1.4 阶段性编程练习

  1. 练习1:定义三个整型变量 x, y, z,分别赋值为 7, 8, 9,然后计算它们的和并输出。
  2. 练习2:定义两个 double 型变量,赋值为 2.5 和 3.7,输出它们的乘积。
  3. 练习3:定义一个字符变量存储你名字的首字母,输出这个字母。
  4. 练习4:交换两个变量的值,但不使用临时变量(提示:可以用加法,比如 a = a + b; b = a - b; a = a - b; 试试看)。

2.2 输入

2.2.1 输入程序范例

前面的程序都是我们直接赋值,现在我们要让用户从键盘输入数据。看这个例子:

#include <iostream>
using namespace std;

int main() {
    int age;                // 定义一个变量存放年龄

    cout << "请输入你的年龄:";   // 提示用户输入
    cin >> age;             // 从键盘读取一个整数,存到age里

    cout << "你的年龄是:" << age << "岁" << endl;

    return 0;
}

运行示例(假设用户输入15):

请输入你的年龄:15
你的年龄是:15岁

2.2.2 输入的用法

cin 的基本用法

cin 是 C++ 的输入命令,和 cout 对应。>> 是提取运算符,意思是从键盘输入流中提取数据存到变量里。

  • 格式:cin >> 变量名;
  • 可以连续输入多个变量:cin >> 变量1 >> 变量2 >> 变量3; 输入时用空格或回车分隔。
输入不同类型的数据
int a;
double b;
char c;

cin >> a >> b >> c;   // 输入:10 3.14 x
  • 输入整数给 int 变量。
  • 输入小数给 double 变量。
  • 输入一个字符(注意不要有空格,比如直接输入 x)。
注意事项
  • 输入的数据类型必须和变量类型匹配,否则可能出错或得到奇怪的结果。
  • 输入字符串(string)需要包含 <string> 头文件,并用 cin >> 字符串变量;,但字符串不能有空格(空格会被当作分隔符)。如果要输入带空格的整行,需要用 getline(cin, 变量);,我们以后再学。

2.2.3 编程实例讲解

实例2:输入两个数,求它们的和
#include <iostream>
using namespace std;

int main() {
    int num1, num2;

    cout << "请输入两个整数(用空格隔开):";
    cin >> num1 >> num2;

    int sum = num1 + num2;
    cout << "它们的和是:" << sum << endl;

    return 0;
}

运行示例

请输入两个整数(用空格隔开):12 8
它们的和是:20

2.2.4 阶段性编程练习

  1. 练习1:编写程序,让用户输入自己的身高(厘米),然后输出“你的身高是xxx厘米”。
  2. 练习2:编写程序,输入一个圆的半径(整数),计算并输出圆的周长(周长 = 2 * 3.14 * 半径)。
  3. 练习3:输入两个小数,计算它们的乘积并输出。
  4. 练习4:输入一个字符,输出该字符在ASCII表中的下一个字符(比如输入 ‘A’,输出 ‘B’)。提示:字符也可以像整数一样加减。

2.3 变量的运算

2.3.1 运算程序范例

C++ 可以对变量进行各种数学运算。看这个例子:

#include <iostream>
using namespace std;

int main() {
    int a = 10, b = 3;
    int sum, diff, product, quotient, remainder;

    sum = a + b;          // 加法
    diff = a - b;         // 减法
    product = a * b;      // 乘法
    quotient = a / b;     // 除法(整数除法,结果只取整数部分)
    remainder = a % b;    // 取余(求余数)

    cout << "a + b = " << sum << endl;
    cout << "a - b = " << diff << endl;
    cout << "a * b = " << product << endl;
    cout << "a / b = " << quotient << endl;
    cout << "a % b = " << remainder << endl;

    return 0;
}

运行结果

a + b = 13
a - b = 7
a * b = 30
a / b = 3
a % b = 1

2.3.2 变量运算的用法

算术运算符
运算符 含义 例子 结果(a=10,b=3)
+ 加法 a + b 13
- 减法 a - b 7
* 乘法 a * b 30
/ 除法 a / b 3(注意:整数除法会丢弃小数部分)
% 取余(模) a % b 1(10除以3余1)

注意
- 如果两个数都是整数,/ 执行整数除法,结果也是整数,直接去掉小数部分(不是四舍五入)。
- 如果想要小数结果,至少其中一个数要是 double 类型。例如:double c = 10.0 / 3; 结果约为 3.33333。
- % 只能用于整数。

复合赋值运算符

有时候我们需要对一个变量自身进行运算,比如 a = a + 5;,可以简写为 a += 5;

复合运算符 含义 例子 等价于
+= 加等于 a += 5 a = a + 5
-= 减等于 a -= 3 a = a - 3
*= 乘等于 a *= 2 a = a * 2
/= 除等于 a /= 4 a = a / 4
%= 模等于 a %= 3 a = a % 3
自增和自减
  • a++ 相当于 a = a + 1(先使用a的值,再自增)
  • ++a 相当于 a = a + 1(先自增,再使用a的值)
  • a----a 同理,是减1。

初学者可以先记 a++ 就是 a = a + 1 的简写。

运算符优先级

和数学一样,乘除取余优先级高于加减,括号 () 可以改变优先级。

例如:a + b * c 先算 b * c,再加 a
(a + b) * c 先算括号里的 a + b,再乘 c

2.3.3 编程实例讲解

实例3:计算圆的面积和周长

题目:输入圆的半径(可以是小数),输出面积和周长。公式:面积 = π * r²,周长 = 2 * π * r。取 π = 3.14159。

#include <iostream>
using namespace std;

int main() {
    double r, area, perimeter;
    const double PI = 3.14159;   // 常量,值不能改变

    cout << "请输入圆的半径:";
    cin >> r;

    area = PI * r * r;           // 计算面积
    perimeter = 2 * PI * r;      // 计算周长

    cout << "圆的面积是:" << area << endl;
    cout << "圆的周长是:" << perimeter << endl;

    return 0;
}
实例4:求两个数的平均值
#include <iostream>
using namespace std;

int main() {
    int a, b;
    double avg;   // 平均值可能是小数,用double

    cout << "请输入两个整数:";
    cin >> a >> b;

    avg = (a + b) / 2.0;   // 除以2.0,确保结果是小数

    cout << "平均值为:" << avg << endl;

    return 0;
}

2.3.4 阶段性编程练习

  1. 练习1:输入一个三位整数,分离出它的个位、十位、百位,并输出。例如输入 123,输出“百位是1,十位是2,个位是3”。(提示:用除法和取余)
  2. 练习2:输入两个整数,交换它们的值(使用加减法交换,不用临时变量)。
  3. 练习3:输入一个华氏温度,转换为摄氏温度。公式:摄氏 = (华氏 - 32) * 5 / 9。
  4. 练习4:输入一个秒数(整数),转换为小时:分钟:秒的形式。例如输入 3661,输出 1小时1分钟1秒。

2.4 第2章编程作业

现在,你已经学会了变量、输入和运算,来挑战一下综合题目吧!

作业1:计算总分和平均分

编写一个程序,要求用户输入三门课的成绩(整数),计算总分和平均分(平均分保留一位小数)。

输入示例

请输入三门课的成绩:80 90 75

输出示例

总分:245
平均分:81.7

作业2:简单的计算器

编写程序,让用户输入两个整数,然后分别输出它们的和、差、积、商(如果第二个数是0,则输出“除数不能为0”)、余数。

输入示例

请输入两个整数:10 3

输出示例

10 + 3 = 13
10 - 3 = 7
10 * 3 = 30
10 / 3 = 3
10 % 3 = 1

作业3:数字反转

输入一个三位整数,输出反转后的数(例如输入 123,输出 321)。注意:如果个位是0,反转后要输出没有前导0的数,比如输入 120,输出 21。

提示:先分离个十百,再组合。

作业4:猜数字游戏(拓展)

程序随机生成一个1-100之间的整数(用 rand() 函数),让用户猜,每次告诉用户猜大了还是猜小了,直到猜中为止。(提示:需要用到 #include <cstdlib>#include <ctime>,以及 srand(time(0)); 初始化随机种子,rand() % 100 + 1 生成1-100的随机数。)这个题目有点挑战,但你可以尝试!


恭喜你完成了第2章的学习!你已经掌握了C++编程中最核心的基础:变量、输入和运算。