文章

【GESP】C++一级考试大纲知识点梳理, (3) 变量、数据类型与输入输出

编程的核心在于处理数据。本篇涵盖了 GESP 一级考试中最核心的计算部分:如何定义数据、输入输出数据以及对数据进行算术运算。涉及大纲考点 3569

(3)掌握基础的 cin 语句、scanf 语句、cout 语句、printf 语句,赋值语句等。
(5)掌握常量与变量的命名、定义、作用、初始化与赋值以及变量的自加与自减运算。
(6)掌握基础算术表达式:加、减、乘、除、整除、求余。
(9)掌握基础的数据类型的定义和使用(整型、实数型、字符型、布尔型)。


一、基础数据类型

对应考点:(9)掌握基础的数据类型的定义和使用。

C++ 是强类型语言,每个变量都必须先声明类型才能使用。一级考试重点掌握以下四种数据类型:

类型名称关键字说明示例占用空间 (常用)数据范围 (近似)
整型int存储整数10, -54 字节$-2^{31} \sim 2^{31}-1$ (约 $\pm 2 \times 10^9$)
实数型float / double存储小数3.14, -0.54/8 字节float: $\pm 3.4 \times 10^{38}$ (6~7位有效)
double: $\pm 1.7 \times 10^{308}$ (15~16位有效)
字符型char存储单个字符'A', '1'1 字节$-128 \sim 127$
布尔型bool存储真假true1 字节01

💡 建议:在处理小数时,首选 double

  • 范围 vs 精度10^308 是指它能存多大(比如 $1 \times 10^{300}$ 这么大的数);而“15-16位有效”是指它能存多准
  • 举例:你能存下 $1.234567890123456 \times 10^{100}$ 这么大的数,但只能保证前面 16 个数字是对的,后面 84 个 0 其实只是占位符,并不精确。这就是“大”和“准”的区别。

二、变量的操作

对应考点:(5)掌握常量与变量的命名、定义、作用、初始化与赋值以及变量的自加与自减运算。

变量就像我们用来装数据的“盒子”。

2.1 定义、初始化与赋值

1
2
3
4
int a;          // 1. 定义:申请一个名为 a 的整型盒子
a = 10;         // 2. 赋值:把 10 放入盒子 a 中

int b = 20;     // 3. 定义并初始化:申请盒子 b 的同时放入 20

2.2 自加与自减

这是 C++ 中的“懒人神器”,用于让变量自己增加或减少 1。

  • a++++a:等价于 a = a + 1;
  • a----a:等价于 a = a - 1;

2.3 前缀与后缀的区别(进阶)

虽然 a++++a 单独写一行时效果一样,但在赋值表达式中意义完全不同:

  • b = ++a (先加后用):先把 a 加 1,再把新值赋给 b
  • b = a++ (先用后加):先把 a旧值赋给 b,用完后 a 再偷偷加 1。
1
2
3
4
5
6
7
int a = 10, b;
b = ++a; // a变成11, b也是11
cout << a << " " << b << endl; // 输出: 11 11

a = 10;
b = a++; // b得到10(旧值),然后a变成11
cout << a << " " << b << endl; // 输出: 11 10


三、输入与输出 (I/O)

对应考点:(3)掌握基础的 cin 语句、scanf 语句、cout 语句、printf 语句,赋值语句等。

C++ 提供了两套输入输出方式,都需要掌握。

3.1 C++ 风格 (cin / cout)

使用 <iostream> 头文件。特点是简单、智能,会自动识别类型。

  • 输入 cin:使用 >> (流提取运算符)。
    1
    2
    3
    
    int x;
    cin >> x;        // 读入一个整数
    cin >> a >> b;   // 连续读入两个变量
    
  • 输出 cout:使用 << (流插入运算符)。
    1
    
    cout << "x 的值是:" << x << endl; // endl 表示换行
    

3.2 C 风格 (scanf / printf)

使用 <cstdio> 头文件。特点是快、格式控制精确。必须牢记格式占位符

  • 常用占位符
    • %d: int (整数)
    • %lld: long long (长整数)
    • %f: float (单精度浮点数)
    • %lf: double (双精度浮点数) —— 输入时必须用 %lf,输出用 %f%lf
    • %c: char (字符)
  • 输入 scanf注意变量名前要加 & (取地址符)
    1
    2
    
      int x;
      scanf("%d", &x); 
    
  • 输出 printf
    1
    2
    3
    4
    
      printf("x 的值是:%d\n", x); // \n 表示换行
      // 技巧:保留 2 位小数
      double pi = 3.14159;
      printf("%.2f", pi); // 输出 3.14
    

四、基础算术运算

对应考点:(6)掌握基础算术表达式:加、减、乘、除、整除、求余。

计算机就是用来计算的。C++ 支持常见的数学运算。

运算符含义示例结果注意事项
+加法3 + 25 
-减法3 - 21 
*乘法3 * 26 
/除法5 / 22整数除以整数,结果还是整数(向下取整)
  5.0 / 22.5如果有一方是小数,结果就是小数
%求余 (模运算)5 % 21只能用于整数5 除以 221

案例分析:整数除法陷阱

1
2
3
int a = 5, b = 2;
double c = a / b; 
cout << c << endl; // 输出 2,而不是 2.5!

原因ab 都是整数,a / b 执行的是整数除法,得到 2。然后再把 2 赋值给 double 类型的 c,变成 2.0修正double c = 1.0 * a / b; 或者 double c = (double)a / b;


五、综合练习代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cstdio>
using namespace std;

int main() {
    // 任务:输入圆的半径 r (整数),输出圆的周长 (保留2位小数)
    // 提示:周长 = 2 * pi * r,pi 取 3.14159
    
    int r;
    const double PI = 3.14159;
    
    // 输入
    cin >> r; 
    
    // 计算
    double c = 2 * PI * r;
    
    // 输出
    printf("圆的半径是:%d,周长是:%.2f\n", r, c);
    
    return 0;
}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

GESP 学习专题站:GESP WIKI

luogu-”系列题目可在洛谷题库进行在线评测。

bcqm-”系列题目可在编程启蒙题库进行在线评测。

欢迎加入Java、C++、Python技术交流QQ群(982860385),大佬免费带队,有问必答

欢迎加入C++ GESP/CSP认证学习QQ频道,考试资源总结汇总

欢迎加入C++ GESP/CSP学习交流QQ群(688906745),考试认证学员交流,互帮互助

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
本文由作者按照 CC BY-NC-SA 4.0 进行授权