语法速查
从 GESP 一级到八级都会用到的基础语法,按模块整理。示例代码可直接复制到在线编译器里运行。
数据类型 基础
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;