单选题
1、第91题 (1.0分) 题号:491 下列程序段的输出结果为()。 float k=0.8567; printf(”%06.1d%%”,k*100);
A
0085.6%%
B
85.7%
C
85.6%
D
0.857
答案解析
正确答案:B
解析:
这道题考察的是 C 语言中 `printf` 函数的格式化输出规则,特别是格式控制符 `%06.1f`(题目中误写为 `%06.1d`,但根据变量类型 `float` 和选项特征,应理解为浮点数格式 `%f`)以及转义字符 `%%` 的处理。
**1. 修正格式说明符的理解**
题目代码为:`printf("%06.1d%%", k*100);`
* 变量 `k` 是 `float` 类型,`k*100` 的结果也是浮点数 `85.67`。
* 格式符 `%d` 用于整数,如果强行用 `%d` 输出浮点数,行为是未定义的或取决于具体编译器实现,通常不会得到选项中的结果。
* 观察选项 A、B、C、D,尤其是 B 和 C 带有小数点,且题目语境显然是考察浮点数格式化。因此,这里的 `%06.1d` 极大概率是印刷错误,实际应为 **`%06.1f`**。我们将基于 `%06.1f` 进行解析。
**2. 计算表达式的值**
* `k = 0.8567`
* `k * 100 = 85.67`
**3. 解析格式控制符 `%06.1f`**
* `%f`:表示输出浮点数。
* `.1`:表示保留 **1 位小数**。会对第 2 位小数进行四舍五入。
* `85.67` 保留 1 位小数,看第 2 位是 `7`,进位,结果为 `85.7`。
* `6`:表示总宽度为 **6 个字符**。
* `0`:表示如果实际输出的字符数不足 6 位,则在左侧用 **0 填充**。
**4. 组合输出内容**
* 数值部分处理后为 `85.7`。
* `85.7` 的长度是 4 个字符('8', '5', '.', '7')。
* 要求总宽度 6 位,左补零:`0085.7`。
* **但是**,我们需要仔细看选项。通常这类题目在某些老旧教材或特定编译器环境下,对于 `%06.1f` 的解释可能存在差异,或者题目本身的格式符其实是 `%6.1f`(没有前导0)或者对宽度的理解不同。
* 让我们重新审视选项 B `85.7%`。
* 如果格式符是 `%6.1f`(宽度6,右对齐,空格填充):输出 `" 85.7"`(前面两个空格),加上 `%%` 输出 `%`,结果是 `" 85.7%"`。
* 如果格式符是 `%.1f`(无宽度限制):输出 `"85.7"`,加上 `%%` 输出 `%`,结果是 `"85.7%"`。
* 如果格式符是 `%06.1f`:输出 `"0085.7"`,加上 `%%` 输出 `%`,结果是 `"0085.7%"`。
**关键点分析:**
题目给出的标准答案是 **B. 85.7%**。
这说明题目中的格式控制符 `%06.1d` 存在严重的印刷错误,或者出题人的意图仅仅是考察 **四舍五入** 和 **百分号转义**。
* **四舍五入**:`85.67` 保留一位小数变成 `85.7`。
* **转义字符**:`%%` 在 `printf` 中输出一个 literal 的 `%` 字符。
对比选项:
* A. `0085.6%%`:数值未四舍五入,且输出了两个%,错误。
* B. `85.7%`:数值四舍五入正确,百分号输出正确。虽然忽略了 `%06` 的宽度和填零要求(可能是题目印制时多写了 `06` 或者原本想考 `% .1f`),但在所有选项中,这是唯一符合“四舍五入保留一位小数”且“百分号显示正确”逻辑的选项。
* C. `85.6%`:未进行四舍五入,错误。
* D. `0.857`:数值错误,且缺少百分号,错误。
**结论:**
尽管题目代码中的格式符 `%06.1d` 与变量类型不匹配且与选项 B 的严格格式(无前导零)有出入,但根据 C 语言 `printf` 的核心考点:
1. `%.1f` 会对浮点数进行四舍五入保留一位小数:`85.67` -> `85.7`。
2. `%%` 输出一个 `%`。
因此,最合理的输出结果是 `85.7%`。
答案:**B**
题目纠错
c语言选择判断题库
相关题目
单选题
1、第168题 (1.0分) 题号:490 以下字符中不是转义字符的是()。
单选题
1、第167题 (1.0分) 题号:510 int a=3,b=2,c=1; if( )a=b; else a=c; 则a的值为()。
单选题
1、第166题 (1.0分) 题号:652 在C语言中,引用数组元素时,其数组下标的数据类型允许是()。
单选题
1、第165题 (1.0分) 题号:176 数组名作为实参数传递给函数时,数组名被处理为()。
单选题
1、第164题 (1.0分) 题号:631 结构化程序设计所规定的三种基本控制结构是()。
单选题
1、第163题 (1.0分) 题号:712 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是()。
单选题
1、第162题 (1.0分) 题号:687 表达式,0x13&0x17的值是()。
单选题
1、第161题 (1.0分) 题号:113 执行下列语句后变量x和y的值是()。 y=10;x=y++;
单选题
1、第160题 (1.0分) 题号:634 以下不正确的定义语句是()。
单选题
1、第159题 (1.0分) 题号:642 在C语言中,一维数组的定义方式为:类型说明符数组名()。
