解析:
这道题考查的是 C 语言(或类似编程语言如 C++、Java 等)中**浮点数常量(实型常量)**的合法表示形式。
### 核心知识点
在 C 语言中,浮点数有两种表示形式:
1. **十进制小数形式**:由数字和小数点组成。
- 必须包含小数点 `.`。
- 小数点前或后可以省略数字,但不能同时省略(即不能只有一个点 `.`)。
- 例如:`3.14`、`.5`、`5.`、`0.0` 都是合法的;`5` 是整数,不是浮点数写法(虽然可以赋值给浮点变量,但作为常量它是整型);`e3` 缺少底数,不合法。
2. **指数形式(科学计数法)**:由尾数、字母 `e` 或 `E`、指数部分组成。
- 格式为:`尾数 e/E 指数`。
- **尾数**部分可以是整数或小数。
- **指数**部分**必须是整数**(可以是正整数、负整数或零),不能是小数。
- `e` 或 `E` 之前必须有数字(尾数不能为空)。
- 例如:`1e3`、`1.2e-4`、`.5e2` 是合法的;`2e4.2`(指数是小数)不合法;`e3`(缺尾数)不合法;`-e3`(缺尾数)不合法。
---
### 选项逐一分析
**A. `160.` `0.12` `e3`**
- `160.`:合法。这是十进制小数形式,等价于 160.0。
- `0.12`:合法。标准的十进制小数。
- `e3`:**不合法**。`e` 前面没有尾数。
- **结论**:该选项中既有合法的也有不合法的,不符合题目“均是不合法”的要求。
**B. `123` `2e4.2` `.e5`**
- `123`:**不合法**(作为浮点数常量而言)。这是一个**整型常量**。虽然它可以隐式转换为浮点数,但在语法分类上,它属于整数,不是浮点数的字面量表示形式。(注:有些严格语境下,如果题目问的是“浮点数常量”,整数通常被视为不合法的浮点表示;或者即使认为它在某些上下文中可用,我们看后面两个更明显的错误)。
- `2e4.2`:**不合法**。指数部分 `4.2` 是小数,而指数部分必须是整数。
- `.e5`:**不合法**。`e` 前面只有小数点,没有数字尾数。正确的写法应该是 `0.e5` 或 `.0e5` 等,但单独一个点接着 e 是语法错误。
- **结论**:这三个都不是合法的浮点数常量表示。`123` 是整数,`2e4.2` 指数错误,`.e5` 格式错误。因此,该选项符合“均是不合法”的条件。
**C. `-.18` `123e4` `0.0`**
- `-.18`:合法。等价于 `-0.18`,是合法的十进制小数形式(负号是运算符,`.18` 是合法浮点数)。
- `123e4`:合法。指数形式,尾数 123,指数 4(整数)。
- `0.0`:合法。标准的十进制小数。
- **结论**:全部合法,不符合题意。
**D. `-e3` `.234` `1e3`**
- `-e3`:**不合法**。`e` 前面没有尾数。
- `.234`:合法。等价于 `0.234`。
- `1e3`:合法。指数形式。
- **结论**:有合法有不合法,不符合题意。
---
### 最终判断
题目要求选出**均是不合法**的浮点数的选项。
- 选项 A 中有两个合法。
- 选项 C 中三个都合法。
- 选项 D 中有两个合法。
- 选项 B 中:
- `123` 是整型常量,不是浮点数常量表示法。
- `2e4.2` 指数部分不能为小数,非法。
- `.e5` 缺少尾数数字,非法。
因此,选项 B 中的三个项均不能作为合法的浮点数常量。
**答案:B**