① 程序设计基础 — 第 2 课
cin / cout、int 变量、for / while 循环,已经能写完整的程序了。= 是赋值,== 才是比较,写错不报错。| 类型 | 关键字 | 存什么 | 示例 |
|---|---|---|---|
| 整数 | int | 整数(约 ±21 亿) | int age = 18; |
| 长整数 | long long | 更大的整数 | long long n = 1e18; |
| 浮点数 | double | 小数 | double pi = 3.14; |
| 字符 | char | 单个字符 | char c = 'A'; |
| 布尔 | bool | 真/假 | bool ok = true; |
| 字符串 | string | 一串字符 | string s = "hello"; |
string 需要 #include <string>。整数除法 5 / 2 结果是 2(截断),要得到 2.5 需要 5.0 / 2。
#include <iostream>
#include <string>
using namespace std;
int main() {
int a = 10;
double b = 3.5;
char c = 'X';
string s = "Hello";
bool flag = true;
cout << a + b << endl; // 输出?
cout << s + c << endl; // 输出?
cout << flag << endl; // 输出?
return 0;
}
(先自己想想再看答案)
a + b 里 int 会被提升成 double,输出 13.5;s + c 把字符接到字符串末尾,输出 HelloX;bool 直接输出时打印 1(false 则是 0)。
程序需要做判断。基本结构:
if (条件) {
// 条件为 true 时执行
} else if (另一个条件) {
// 第二个条件为 true 时执行
} else {
// 以上都不满足时执行
}
| 运算符 | 含义 | 运算符 | 含义 |
|---|---|---|---|
== | 等于 | != | 不等于 |
< | 小于 | > | 大于 |
<= | 小于等于 | >= | 大于等于 |
&& | 且 | || | 或 |
! | 非 |
int score;
cin >> score;
if (score >= 90) {
cout << "A" << endl;
} else if (score >= 80) {
cout << "B" << endl;
} else if (score >= 70) {
cout << "C" << endl;
} else if (score >= 60) {
cout << "D" << endl;
} else {
cout << "F" << endl;
}
= 是赋值,== 是比较。写 if (x = 5) 不会报错但含义完全不同 —— 这是一个经典新手陷阱。
函数让你把一段代码打包、起名、重复使用:
// 定义:返回值类型 函数名(参数列表) { 函数体 }
int max(int a, int b) {
if (a > b) return a;
else return b;
}
int main() {
cout << max(3, 7) << endl; // 调用,输出 7
cout << max(10, 5) << endl; // 调用,输出 10
return 0;
}
int, double, void 表示无返回值)bool isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
int main() {
int x;
cin >> x;
if (isPrime(x))
cout << x << " 是素数" << endl;
else
cout << x << " 不是素数" << endl;
return 0;
}
5 / 2 是 2,要小数就把其中一个换成 double:5.0 / 2。= 和 == 混用:if (x = 0) 能编译通过,但条件是 0 也就是 false,永远不执行。int 却忘了 return:要么补上返回值,要么把返回类型改成 void。int 存不下更大的数:题目数据接近或超过 ±21 亿时,把类型换成 long long,否则会溢出成负数。i <= n:循环到 i * i <= n 就够,多写只会变慢(也可能把 n 自己判成因子)。string 忘了头文件:#include <string> 不写,编译直接报错。int a = 5, b = 2; cout << a / b;if (x = 0) 是什么意思?int greet() { cout << "Hi"; }bool isLeapYear(int year),判断某年是否为闰年。main 中读入年份,调用函数输出结果。2000 → 输出 闰年;输入 1900 → 输出 平年。
卡住时的自查顺序
year % 4 == 0 且 year % 100 != 0,用 2004 和 1900 各测一次。year % 400 == 0,用 2000 测一次。bool,每条路径都有 return。做完了?把代码贴在聊天里,我帮你检查。
int、double、char、bool、string —— 选对类型很重要。double。== 是比较、= 是赋值。void,别声明 int 又不返回。= 写错会静默出错,函数忘了 return 会编译不过。哪一句还不明白 —— 比如「5 / 2 和 5.0 / 2 差别到底在哪」「void 函数能不能 return;」「i * i <= n 为什么比 i <= n 好」—— 直接问。