学习
错题
模考
我的
登录/注册/忘记密码
学习 / 顺序结构 / 输入输出
输入输出
基本框架、格式控制符、printf、scanf、转义字符
1. C 语言基本框架
写 C 程序,先套上这个架子,再往中间填要做的事。就像解数学题时先写一个「解」字,不必先问这个字为什么必须这样写。 ```c #include <stdio.h> int main(void) { /* 从这里开始写 */ return 0; } ``` - `#include <stdio.h>`:后面要用 `printf`、`scanf` 时带上。 - `int main(void)` 到最后的 `return 0;`:程序从这里进、从这里出。 - 真正的输入、计算、输出,都写在中间那一对花括号里。 架子里的 `/* 从这里开始写 */` 是**注释**:写给人看,编译时会被丢掉,不影响程序怎么跑。C 语言常见两种写法: | 写法 | 形式 | 怎么用 | | --- | --- | --- | | 块注释 | `/* ... */` | 可以包住一行,也可以包住好几行 | | 行注释 | `// ...` | 从 `//` 一直到这行结尾 | ```c /* 块注释:中间都可以写说明 */ int n = 1; // 行注释:只管这一行后半段 ```
2. 格式控制符
格式控制符写在引号里,告诉 `printf` / `scanf`:**下一个值按什么类型、怎么读写**。控制符和后面的变量必须配对,多一个、少一个、类型对不上,结果都会错。 | 控制符 | 对应类型 | 读写的是什么 | | --- | --- | --- | | `%d` | `int` | 十进制整数 | | `%c` | `char` | 单个字符 | | `%f` | `float` | 小数(`printf` 输出 `float` / `double` 都可以用) | | `%lf` | `double` | 小数。**`scanf` 读 `double` 必须用 `%lf`** | | `%s` | 字符数组 | 一串不含空格的字符 | | `%u` | `unsigned int` | 无符号整数 | | `%ld` | `long` | 长整数 | | `%lld` | `long long` | 更长的整数 | | `%%` | (无变量) | 输出一个普通的 `%` | 还可以在 `%` 和字母中间加宽度、精度: - `%5d`:整数至少占 5 列,不够就补空格 - `%.2f`:小数点后保留 2 位 - `%8.2f`:总宽 8、小数 2 位 先记住「类型对上控制符」,宽度和精度是锦上添花。
3. printf 函数
`printf` 负责**往屏幕上写**。用之前要 `#include <stdio.h>`。 常见形式:`printf(格式串, 值1, 值2, ...);` **1. 只输出文字** ```c printf("Hello"); ``` 屏幕上是 `Hello`,光标停在后面。要换行,自己写 `\n`: ```c printf("Hello\n"); /* \n 换行 */ ``` **2. 输出一个整数** ```c int n = 7; printf("%d", n); ``` 输出:`7` **3. 文字和变量混在一起** ```c int a = 3, b = 4; printf("a = %d, b = %d\n", a, b); /* \n 换行 */ ``` 输出: ``` a = 3, b = 4 ``` 格式串里有几个 `%` 控制符(`%%` 除外),后面就要跟几个值,顺序一一对应。 **4. 控制小数位数** ```c double x = 3.14159; printf("%.2f\n", x); /* \n 换行 */ ``` 输出:`3.14` **5. 输出百分号** ```c printf("完成 %d%%\n", 80); /* \n 换行 */ ``` 输出:`完成 80%` 注意: - `printf` 的参数是变量本身,**不要**写成 `&n`。 - 用 `%d` 去打 `double`,或用 `%f` 去打 `int`,打印结果一般是错的。 - `long long` 用 `%lld`,不要随手写 `%d`。
4. scanf 函数
`scanf` 负责**从键盘读进变量**。同样要 `#include <stdio.h>`。 常见形式:`scanf(格式串, 地址1, 地址2, ...);` 读基本类型时,地址用 `&变量`。漏掉 `&`,是专升本里最常见的错。 **1. 读一个整数** ```c int n; scanf("%d", &n); ``` 键盘输入 `12` 再回车,`n` 变成 12。 **2. 连续读两个数** ```c int a, b; scanf("%d%d", &a, &b); ``` 输入 `3 4`(中间空格或换行都可以),`a` 是 3,`b` 是 4。 **3. 读小数** ```c float x; double y; scanf("%f", &x); /* float 用 %f */ scanf("%lf", &y); /* double 用 %lf */ ``` `printf` 打 `double` 可以用 `%f`;`scanf` 读 `double` **不能**偷懒写成 `%f`。 **4. 读一个字符** ```c char c; scanf("%c", &c); ``` `%c` 会读入空格、换行。如果前面刚读过数字,缓冲区里常还剩一个回车,下一个 `%c` 就会读到这个回车。专升本里先知道「`%c` 对空白很敏感」。 **5. 读一串不含空格的字符** ```c char s[20]; scanf("%s", s); /* 数组名就是地址,这里不加 & */ ``` 输入 `hello`,`s` 里是 `hello`。遇到空格就停,不能靠它读一整句带空格的话。 注意: - `int` / `float` / `char` / `double` 都要写 `&`;字符数组 `%s` 一般不加 `&`。 - 控制符和变量类型必须一致:`int` 配 `%d`,`double` 配 `%lf`。 - `scanf` 不会按你在格式串里写的中文提示去读,提示文字请用 `printf` 先打印。
5. 常见转义字符
格式串里反斜杠开头的是**转义字符**:用来写出键盘上不好直接打出来的符号。 专升本里真正高频的几乎只有 `\n`(换行)。其余见过能认就行,用到再查。 | 转义字符 | 含义 | 常用程度 | | --- | --- | --- | | `\n` | 换行 | 几乎每道输出题都用 | | `\t` | 水平制表(跳到下一列) | 偶尔用来对齐 | | `\\` | 一个反斜杠 `\` | 要打印路径时才用 | | `\"` | 一个双引号 `"` | 字符串里要带引号时才用 | | `\'` | 一个单引号 `'` | 很少 | | `\0` | 空字符,字符串结尾标记 | 后面学字符串时会再遇到,一般不拿来打印 | ```c printf("第一行\n第二行\n"); ``` 上面会打出两行。忘了写 `\n`,两段文字就会粘在同一行。
开始练习
返回顺序结构
登录
注册
忘记密码
点击此处输入用户名
点击此处输入密码
登录
点击此处输入用户名
点击此处输入密码
点击此处输入邮箱
发送验证码
点击此处输入验证码
点击此处输入邮箱
发送验证码
点击此处输入验证码
点击此处输入新密码