单选题
1、第76题 (1.0分) 题号:91 以下数值中,不正确的八进制数或十六进制数是()。
A
0x16
B
16
C
-16
D
0xaaaa
答案解析
正确答案:C
解析:
这道题考察的是编程语言(通常指 C/C++ 或类似语法的语言)中**八进制**和**十六进制**常量的表示规则。我们需要找出**不正确**的表示形式。
### 核心知识点回顾
1. **十六进制(Hexadecimal)**:
* 前缀:必须以 `0x` 或 `0X` 开头。
* 数码:包含 `0-9` 以及 `a-f`(或 `A-F`)。
* 示例:`0x16`, `0xFF`, `0xaaaa` 都是合法的十六进制数。
2. **八进制(Octal)**:
* 前缀:必须以数字 `0` 开头。
* 数码:只能包含 `0-7`。
* 示例:`016` 是合法的八进制数;但 `08` 是非法的,因为八进制中没有数字 8。
3. **十进制(Decimal)**:
* 没有特定前缀。
* 直接由数字组成。
* 示例:`16`, `-16` 都是合法的十进制整数。
---
### 选项逐一分析
* **A. `0x16`**
* **分析**:以 `0x` 开头,后面跟着 `1` 和 `6`,均在 `0-9` 和 `a-f` 范围内。
* **结论**:这是一个**合法**的十六进制数。
* **B. `16`**
* **分析**:没有前缀 `0x` 或 `0`。在大多数编程语境下,这被视为一个**十进制**整数。
* **注意**:题目问的是“不正确的八进制数**或**十六进制数”。虽然 `16` 本身不是八进制也不是十六进制的*写法*,但它是一个**合法的数值常量**。然而,如果严格从“格式是否符合八进制或十六进制定义”来看,它既不是八进制格式,也不是十六进制格式。但在单选题中,通常会有更明显的**语法错误**选项。让我们先看其他选项。
* *修正思路*:很多这类题目其实是在考察“哪个选项**不能**被解析为有效的八进制或十六进制字面量”,或者更常见的是,题目隐含的意思是“以下哪个选项作为八进制或十六进制数是**非法/错误**的”。
* 让我们重新审视题目的常见陷阱。有些题目会把十进制数混进来作为干扰项,但如果有明显的**语法错误**(比如八进制里出现了8或9,或者十六进制里出现了g-z),那才是首选答案。
* 但是,再仔细看选项 C。
* **C. `-16`**
* **分析**:`-` 是负号,`16` 是数字。
* 在 C/C++ 等语言中,`-16` 是一个**表达式**(一元减运算符作用于常量 16),而不是一个单一的“整型常量字面量”。
* 更重要的是,**八进制和十六进制的定义仅针对无符号的数字序列部分**。符号位不属于进制表示的一部分。
* 但是,`-16` 作为一个整体,它是一个合法的**十进制**负整数。
* **关键点**:这道题的题干可能存在表述上的歧义,或者是一道经典的老题。让我们对比 B 和 C。
* B (`16`) 是十进制。
* C (`-16`) 是十进制负数。
* A (`0x16`) 是十六进制。
* D (`0xaaaa`) 是十六进制。
* 如果题目问的是“以下哪个**不是**八进制或十六进制数”,那么 B 和 C 都不是。这说明题目可能有别的意图。
* **另一种常见的考题逻辑**:考察**八进制数的合法性**。
* 如果选项中有 `08` 或 `09`,那肯定是错的。
* 这里没有 `0` 开头的选项。
* **再一种常见的考题逻辑**:考察**前缀**。
* 八进制必须以 `0` 开头。
* 十六进制必须以 `0x` 开头。
* `16` 没有前缀,所以它**不是**八进制数,也**不是**十六进制数。它是十进制数。
* `-16` 同样**不是**八进制数,也**不是**十六进制数。
* **为什么答案选 C?**
让我们参考类似的真题库。这道题很可能是一道**错题**或者**题干表述不严谨**的题,但在某些特定的计算机基础考试语境中,存在这样一种解释:
**实际上,这道题的正确答案往往是有争议的,或者原题选项不同。**
但如果必须从 A, B, C, D 中选一个“不正确”的,且已知答案是 C,我们可以尝试推导命题人的逻辑:
1. **A (`0x16`)**: 正确的十六进制。
2. **D (`0xaaaa`)**: 正确的十六进制。
3. **B (`16`)**: 虽然它是十进制,但在某些宽松的语境下,人们可能只关注“数字本身是否合法”。或者,命题人可能认为 `16` 可以被看作是一个普通的整数,而问题在于“表示法”。
4. **C (`-16`)**: **负号 `-` 不属于任何进制数的数字字符集**。八进制和十六进制的**字面量(Literal)**定义中,只包含前缀和数字位。符号是运算符。因此,严格来说,`-16` 不是一个“八进制数”或“十六进制数”的**字面量形式**,甚至不是一个单纯的“数”的进制表示,而是一个表达式。
**更可能的解释(基于常见题库bug或特定教材):**
很多老旧题库中,这道题的原意可能是想考察 **八进制数不能包含8或9**,或者 **十六进制的前缀**。
但是,如果我们看另一个角度:
* `0x16` 是十六进制。
* `0xaaaa` 是十六进制。
* `16` 是十进制。
* `-16` 是十进制。
如果题目问的是“以下数值中,**格式上**不正确的八进制或十六进制数是”,那么 B 和 C 都不符合八/十六进制的格式。
**然而,有一种情况会让 C 成为唯一“错误”的选项:**
假如题目原本的选项 B 是 `016`(合法的八进制),那么:
* A: `0x16` (合法十六进制)
* B: `016` (合法八进制)
* D: `0xaaaa` (合法十六进制)
* C: `-16` (这不是一个八进制或十六进制的**字面量**,因为它带了符号,且没有前缀指明进制,默认十进制。但在某些严格的语法检查题中,可能会认为带符号的就不属于“进制常数”的定义范畴,或者命题人单纯认为负数不能直接称为“八进制数/十六进制数”,尽管这在现代编程中是不准确的。)
**最合理的“应试”解析逻辑(针对答案 C):**
在计算机二级等考试中,关于进制常量的定义通常强调:
1. 十六进制常量以 `0x` 或 `0X` 开头。
2. 八进制常量以 `0` 开头。
3. **常量本身不包含符号位**。符号是运算符。
虽然 `16` 也不符合八/十六进制的前缀规则,但在这种四选一的题目中,`16` 常被默认为“普通整数”,而 `-16` 因为带有负号,在某些旧式教学体系中被特别指出“不是进制表示法的一部分”。
**但是,必须指出,这道题出得并不好。** 如果 B 是 `16`,它同样不是八进制或十六进制。如果这是一道单选题,且答案为 C,通常是因为命题人认为 **B (`16`) 可以被视为一种默认的、无前缀的合法数值表示(十进制),而 C (`-16`) 因为包含非数字字符 `-`,在某些简单的词法分析器概念中被视为“非纯数字串”**,或者命题人原本想把 B 设为 `016`(八进制)却印错了。
**鉴于标准答案给的是 C,我们按照“符号不属于进制字面量”以及“排除法中 C 最特殊(含运算符)”的逻辑进行解析:**
* **A. `0x16`**:以 `0x` 开头,是标准的**十六进制**数表示,正确。
* **D. `0xaaaa`**:以 `0x` 开头,字符均在 `0-9, a-f` 范围内,是标准的**十六进制**数表示,正确。
* **B. `16`**:这是标准的**十进制**数表示。虽然它不是八进制或十六进制,但它是一个合法的数值常量。
* **C. `-16`**:这是一个**表达式**(负号 + 十进制数)。在严格的“进制常量”定义中,常量只由前缀和数字组成,**不包含符号**。此外,如果题目隐含意思是“哪个选项不能直接作为八进制或十六进制常量被识别”,`-16` 首先会被识别为负号和十进制常量 `16`。相比于 B,C 多了一个运算符,因此在某些语境下被认为更不符合“数值表示”的纯粹性。
*(注:如果选项 B 是 `016`,那么 B 就是合法的八进制数,此时 A、B、D 都是合法的八/十六进制数,只有 C 不是,这样题目就非常完美了。推测原题 B 选项极有可能是 `016`,或者是印刷/录入错误导致 B 变成了 `16`。但在现有选项下,只能选 C,因为 C 包含非数字字符 `-`,且通常进制讨论针对无符号位。)*
### 最终解析总结
1. **十六进制数**必须以 `0x` 或 `0X` 开头,后续字符为 `0-9` 或 `a-f`(`A-F`)。
* 选项 A (`0x16`) 和 D (`0xaaaa`) 均符合此规则,是**正确**的十六进制数。
2. **八进制数**必须以 `0` 开头,后续字符为 `0-7`。
3. **关于选项 B 和 C**:
* 选项 B (`16`) 是十进制数。
* 选项 C (`-16`) 是负的十进制数。
* 题目要求选出“不正确的八进制数或十六进制数”。
* 在常见的计算机基础试题库中,这类题目通常旨在考察**前缀**和**数码范围**。
* 若假设题目存在录入瑕疵(例如 B 原意为 `016`),则 A、B、D 均为合法的八/十六进制表示,而 **C (`-16`)** 包含负号,**负号不属于进制常量的组成部分**(它是运算符),因此 C 是最不符合“八进制或十六进制**常量**”定义的选项。
* 即使 B 是 `16`,在四选一且答案为 C 的情况下,C 因包含非数字符号 `-` 而被视为“格式上”最特殊的错误项(相对于纯数字串)。
**结论:** 选项 A 和 D 是明确的十六进制数。选项 C 包含负号,不是纯粹的进制常量表示,且在多数此类考题逻辑中,带符号的数不被归类为“进制数”本身的字面量格式。因此选 C。
答案:**C**
题目纠错
c语言选择判断题库
相关题目
单选题
1、第183题 (1.0分) 题号:152 以下程序的运行结果是()。
单选题
1、第182题 (1.0分) 题号:581 sizeof( )是()。
单选题
1、第181题 (1.0分) 题号:508 int a=1,b=2,c=3; if( )b=a;a=c;c=b;则c的值为()。
单选题
1、第180题 (1.0分) 题号:169 下列说法不正确的是()。
单选题
1、第179题 (1.0分) 题号:602 在C语言中,要求运算数必须是整型的运算符是()。
单选题
1、第178题 (1.0分) 题号:605 以下所列的C语言常量中,错误的是()。
单选题
1、第177题 (1.0分) 题号:716 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()。
单选题
1、第176题 (1.0分) 题号:721 fseek函数的正确调用形式是()。
单选题
1、第175题 (1.0分) 题号:190 关于指针概念说法不正确的是()。
单选题
1、第174题 (1.0分) 题号:119 下列运算符中,不属于关系运算符的是()。
