## C++ 整数提取与格式化输入输出 课后习题 姓名: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ #### **一、 填空题** 1. C++ 中,获取一个整数个位数的“提取器”是 `% 10`,砍掉个位数的“削减器”是 \_\_\_\_\_\__\_\_\_\_。 2. 表达式 `456 % 10` 的计算结果是 `6`,表达式 `456 / 10` 的计算结果是 \_\_\_\_\_\_\_\_\_\_\_。 3. 要使用 `printf` 和 `scanf`,必须在代码顶部包含头文件 `#include <________________>`。 4. 在使用 `scanf` 读取数据时,必须在变量名前面加上符号 \_\_\_\_\_\_\_\_,它叫做取地址符。 5. 格式说明符 `%d` 用来对应 `int` 类型的整数,`%c` 用来对应 `char` 类型的字符,而 `%lf` 用来对应 \_\_\_\_\_\_\_\_ 类型的变量。 6. 阅读代码 `printf("User ID: %d", 99);`,它的输出结果是:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。 7. 如果想用 `printf` 输出一个浮点数,并严格保留 `1` 位小数,应该使用的格式说明符是 \_\_\_\_\_\_\_\_\_\_\_。 8. `int n = 87; printf("%d", n % 10);` 这段代码的输出结果是 \_\_\_\_\_\_\_\_\_\_\_。 9. `int n; scanf("%d", &n);` 如果用户输入 `123`,那么表达式 `n / 100` 的结果是 \_\_\_\_\_\_\_\_\_\_\_。 10. 表达式 `(528 / 10) % 10`它的计算结果是 \_\_\_\_\_\_\_\_\_\_\_。 #### **二、 单项选择题** ( ) 1. 为了获取整数 `921` 的个位数 `1`,应该使用哪个表达式? A. `921 / 10` B. `921 % 10` C. `921 / 100` D. `921 % 100` ( ) 2. 下列哪条语句可以**正确**地用 `printf` 输出整数变量 `score` 的值? A. `printf(score);` B. `printf("score");` C. `printf("%d", score);` D. `printf("%d", &score);` ( ) 3. 下列哪条语句可以**正确**地用 `scanf` 读取一个整数并存入变量 `age` 中? A. `scanf("%d", age);` B. `scanf("%c", &age);` C. `scanf("%d", &age);` D. `scanf("%d", &age)` ( ) 4. `int a = 5, b = 2;`,`printf("结果是%d", a / b);` 的输出是? A. `结果是2.5` B. `结果是2` C. `结果是%d` D. `结果是3` ( ) 5. `int n = 73; n = n / 10;` 执行后,`n` 的值变成了? A. `73` B. `7` C. `3` D. `7.3` ( ) 6. 忘记在 `scanf` 的变量前加 `&` 符号,最可能导致什么后果? A. 程序正常运行 B. 程序会卡住 C. 程序在运行时会崩溃或读入错误数据 D. 电脑会蓝屏 ( ) 7. `int num; scanf("%d", &num);` 如果用户输入 `365`,那么 `printf("%d", (num/10)%10);` 会输出什么? A. `3` B. `6` C. `5` D. `36` ( ) 8. 要输出一个浮点数并保留两位小数,应该用哪个格式说明符? A. `%f` B. `%.2f` C. `%2f` D. `%d.2` ( ) 9. 拆分一个正整数 `n` 的所有位的通用步骤是? A. 不断地:先用 `/ 10` 削减,再用 `% 10` 提取 B. 不断地:先用 `% 10` 提取,再用 `/ 10` 削减 C. 只需不断地 `/ 10` D. 只需不断地 `% 10` ( ) 10. `int x=8, y=3; printf("%d %d", x/y, x%y);` 的输出结果是? A. `2.66 2` B. `2 2` C. `3 2` D. `2 3` #### **三、 判断题 (对的打“√”,错的打“×”)** ( ) 1. 运算符 `/` 是用来求余数的,运算符 `%` 是用来做除法的。 ( ) 2. `printf` 中的占位符(如 `%d`)和后面的变量,它们的顺序和类型都必须一一对应。 ( ) 3. `scanf("%d,%d", &a, &b);` 是一个安全的写法,用户输入 `10 20` 就能正确读取。 ( ) 4. 对于任何正整数 `n`,`n / 10` 都能去掉它的个位数。 ( ) 5. `printf` 和 `scanf` 都是 C++ 自带的核心功能,不需要包含任何头文件。 ( ) 6. 整数 `5 % 10` 的结果是 `5`。 ( ) 7. `printf` 只能输出一个变量,不能同时输出多个。 ( ) 8. 拆分整数 `520` 时,`520 % 10` 的结果是 `0`。