语法速查

从 GESP 一级到八级都会用到的基础语法,按模块整理。示例代码可直接复制到在线编译器里运行。

常用功能 常用头文件 STL 速查 语法速查 常用函数 算法模板 课程表 作业 竞赛真题

数据类型 基础

  • int 整数(约 ±21 亿)
  • long long 大整数(约 ±9.2×10¹⁸)
  • double 小数(浮点)
  • char 单个字符,bool 真假
  • string 字符串(需 <string>)
int a = 10; // 整数 long long b = 1000000000000LL; // 大整数,注意 LL 后缀 double c = 3.14; // 小数 char ch = 'A'; // 字符用单引号 bool flag = true; // true / false string s = "hello"; // 字符串用双引号

输入与输出

  • cin / cout:简单,注意别混用 printf
  • scanf / printf:快,格式化输出强
int n; string name; cin >> n >> name; // 空格/换行分隔 cout << "n=" << n << " name=" << name << endl; // 保留 2 位小数 printf("%.2f\n", 3.14159); cout << fixed << setprecision(2) << 3.14159 << endl;

分支判断 if / switch

if (score >= 90) { cout << "优秀"; } else if (score >= 60) { cout << "及格"; } else { cout << "不及格"; } switch (day) { // 只比较整数/字符 case 1: cout << "周一"; break; case 2: cout << "周二"; break; default: cout << "其他"; }

循环 for / while

for (int i = 1; i <= n; i++) { // 1..n sum += i; } while (n > 0) { // 直到条件为假 n--; } do { ... } while (条件); // 至少执行一次 for (auto x : a) { ... } // 遍历数组/容器(C++11)

函数 封装复用

  • 函数可以递归调用自己
  • 参数默认按值传递,加 & 可传引用
int add(int x, int y) { return x + y; } // 传引用:修改会带出函数 void addOne(int &x) { x++; } // 递归:计算 n! long long fact(int n) { if (n <= 1) return 1; return n * fact(n - 1); }

数组 连续内存

  • 下标从 0 开始
  • 大数组要开在 全局(局部数组太大可能爆栈)
int a[100]; // 100 个元素 a[0] = 1; a[99] = 100; int b[105] = {}; // 全部初始化为 0 int grid[105][105]; // 二维数组 grid[1][2] = 5;
在线编译器