顺序结构

顺序结构是程序最基本的执行方式:代码从上到下依次执行,一条语句执行完,再执行下一条。

输出

使用 cout 向屏幕输出内容。

语法:

cout << 内容1 << 内容2 << ...;

可以输出字符串、数字、表达式:

  • 字符串用双引号 " " 包裹;
  • 数字直接写;
  • 多个内容用 << 连接。

输出空格

在 cout 中,空格可以直接写在字符串里,也可以用 " " 单独输出。

注意:

  • " " 表示一个只包含空格的字符串,中间的空格不能省略;
  • "" 表示空字符串,不会输出任何内容;
  • 相邻的字符串字面量会自动拼接,所以中间的 << 可以省略;
  • 甚至可以用空字符串“包”起来,例如 """hello""" 也是合法的,它等价于 "hello"。
cout << "hello" << " " << "world"; // 输出 hello world
cout << "hello world";             // 输出 hello world
cout << """hello""";               // 输出 hello

不过这种写法可读性较差,实际编程中不建议使用,了解语法现象即可。

输出换行

换行有两种写法:

  1. 使用 endl:

    cout << "第一行" << endl;
    cout << "第二行" << endl;
  2. 使用转义字符 \n(拓展):

    cout << "第一行\n";
    cout << "第二行\n";

两者的区别:

  • endl:换行并刷新缓冲区。
  • \n:只换行,不刷新缓冲区,效率更高。
  • 竞赛中需要大量输出时,推荐使用 \n。

常用转义字符(拓展)

转义字符含义
\n换行
\t制表符(相当于按一次 Tab 键)
\\输出一个反斜杠
\"输出一个双引号
\'输出一个单引号

变量与数据类型

常量:在程序运行过程中值不能改变的量,用 const 修饰。
变量:在程序运行过程中值可以改变的量。

定义变量语法:

数据类型 变量名;

常见数据类型:

类型含义示例大致范围/占用
int整数int a = 10;-2^31 ~ 2^31-1,4 字节
long long长整数long long b = 10000000000LL;-2^63 ~ 2^63-1,8 字节
double双精度浮点数double c = 3.14;约 15 位有效数字,8 字节
char单个字符char d = 'A';1 字节
string字符串string s = "hello";可变长度
bool布尔值bool f = true;true / false

一字节=8位、一位就是一个二进制

变量使用顺序: 先定义,再赋值,最后使用。 赋值方式:

  1. 直接赋值:变量名 = 值;
    例如:

    int a;
    a = 10;

    也可以在定义时直接初始化:

    int a = 10;
  2. 输入赋值:使用 cin 从键盘读取数据。

    int a;
    cin >> a;

    可以连续输入多个变量:

    int a, b;
    cin >> a >> b;

命名规则:

  • 只能由字母、数字、下划线组成。
  • 不能以数字开头。
  • 不能使用关键字,如 int、if、for。

例题: 输出第二个整数、你几岁了


算术运算符

常用算术运算符:

运算符含义示例
+加a + b
-减a - b
*乘a * b
/除a / b
%取余a % b

注意:

  • / 用于两个整数时,结果是整数商,小数部分被舍去。
  • % 是取余数,只能用于整数。
  • 如果要得到小数结果,需要至少一个操作数为浮点数。可以给被除数*1.0 从而得到浮点数
  • 运算优先级:先乘除取余,后加减。括号可以改变运算顺序。
  • 表达式的结果可以赋值给变量,也可以直接输出。

保留小数:

使用 fixed << setprecision(n) 控制输出保留 n 位小数。

double pi = 3.1415926;
cout << fixed << setprecision(2) << pi << endl;  // 输出 3.14
cout << fixed << setprecision(4) << pi << endl;  // 输出 3.1416

说明:

  • fixed 表示以固定小数位数输出。
  • setprecision(n) 设置小数位数为 n。
  • 一旦设置,后续所有浮点数输出都会按此格式,直到再次修改。

取整函数:

函数功能示例结果
ceil(x)向上取整ceil(3.2)4.0
floor(x)向下取整floor(3.8)3.0
round(x)四舍五入round(3.5)4.0
round(x)四舍五入round(3.4)3.0

示例:

double x = 3.6;
cout << ceil(x) << endl;   // 输出 4
cout << floor(x) << endl;  // 输出 3
cout << round(x) << endl;  // 输出 4

注意:

  • ceil、floor、round 返回的是浮点数,但输出时通常显示为整数形式。
  • 如果参与整数运算,可能需要强制转换为 int。
  • round 采用“四舍五入”,遇到 .5 时向远离零的方向舍入。

整数取整的替代方法:

  • 向上取整:(a + b - 1) / b(整数除法)
  • 向下取整:a / b(整数除法,直接截断)

模运算一些用法

  • 判断奇偶
  • n以内k最大倍数
  • 取位数
  • 时间问题

例题: 萌新关爱之-A+B Problem、计算 (a+b)×c 的值、苹果采购、GDP、A*B 问题、拉面馆、输出保留 12 位小数的浮点数、再分肥宅水、小玉买文具、带余除法、甲流疫情死亡率、温度表达转化、计算并联电阻的阻值、与圆相关的计算

字符与ASCII码

char 类型用来存储单个字符,用单引号表示,例如 'A'、'0'、'+'。

每个字符在计算机中对应一个整数编码,最常用的是 ASCII 码。
字符可以当作整数参与运算,也可以与整数互相转换。

常见 ASCII 码:

字符ASCII 值
'0' ~ '9'48 ~ 57
'A' ~ 'Z'65 ~ 90
'a' ~ 'z'97 ~ 122
空格32
换行 '\n'10

示例:

char ch = 'A';
cout << ch << endl;        // 输出 A
cout << (int)ch << endl;   // 输出 65

int x = 66;
cout << (char)x << endl;   // 输出 B

注意:

  • 字符用单引号,字符串用双引号。
  • '0' 和 0 不同,前者是字符,后者是整数。
  • 字符参与运算时,实际使用的是它的 ASCII 值。

例题: 打印 ASCII 码


类型转换:显式转换与隐式转换

隐式转换:编译器自动完成的类型转换。

int a = 10;
double b = a;       // int 自动转为 double,b = 10.0
double c = 3.14;
int d = c;          // double 自动转为 int,小数部分被截断,d = 3

显式转换:程序员主动写出转换方式。

double c = 3.99;
int d = (int)c;                 // C 风格转换,d = 3

注意:

  • 小数转整数会直接截断,不是四舍五入。
  • 大范围类型转小范围类型可能丢失数据。
  • 整数相除想得到小数,可以先把其中一个数转为 double。
int a = 7, b = 2;
cout << (double)a / b << endl;   // 输出 3.5

布尔类型

bool 类型只有两个值:true 和 false。

bool flag = true;
cout << flag << endl;   // 输出 1

flag = false;
cout << flag << endl;   // 输出 0

说明:

  • true 输出为 1,false 输出为 0。
  • 布尔值常用于条件判断。
  • 关系运算和逻辑运算的结果就是布尔值。

例如:

int a = 5, b = 3;
bool c = a > b;         // true
bool d = a < b;         // false
cout << c << endl;      // 1
cout << d << endl;      // 0