AI智能推荐题库-试题通 AI智能整理导入题库-试题通
×
首页 题库中心 c语言选择判断题库 题目详情
CA4E3A01C46000013755684012D01E55
c语言选择判断题库
379
单选题

1、第143题 (1.0分) 题号:184 下列定义不正确的是()。

A
 #define PI 3.141592
B
 #define S345
C
 int max(x,y); int x,y; { }
D
 static char c;

答案解析

正确答案:C

解析:

这道题考查的是 C 语言中宏定义、函数定义以及变量声明的基本语法规范。我们需要逐一分析各个选项,找出语法错误的一项。 **选项分析:** * **A. `#define PI 3.141592`** * 这是正确的宏定义。`#define` 是预处理指令,用于定义一个标识符(PI)代表一个字符串或数值(3.141592)。在编译预处理阶段,程序中所有的 PI 都会被替换为 3.141592。语法完全正确。 * **B. `#define S345`** * 这也是合法的宏定义。虽然它没有给宏体指定具体的值(即宏体为空),但在 C 语言中,允许定义空宏。这通常用于条件编译(如 `#ifdef S345`)或者作为占位符。只要标识符合法,这种定义本身没有语法错误。 * **C. `int max(x,y); int x,y; { }`** * **这是不正确的定义。** * 这里试图定义一个名为 `max` 的函数。在早期的 K&R C 语言风格中,函数定义可以写成: ```c int max(x, y) int x, y; { // 函数体 } ``` 注意:参数列表 `(x, y)` 后面**不应该有分号**。 * 题目中的写法 `int max(x,y);` 在参数列表后加了一个分号 `;`。在 C 语言中,函数头后面加分号表示这是一个**函数声明**(Function Declaration/Prototype),而不是函数定义的开始。 * 紧接着的 `int x,y;` 变成了独立的变量声明语句。 * 最后的 `{ }` 变成了一个独立的复合语句块。 * 因此,这段代码并没有形成一个完整的函数定义结构,而是被解析为:一个函数声明 + 两个局部/全局变量声明 + 一个空代码块。如果意图是定义函数,这种写法是错误的,因为函数定义的函数头后不能直接跟分号,且参数类型的声明必须紧跟在函数头之后、函数体之前,中间不能被其他无关语句隔断(在这种旧式风格下)。即便在现代 ANSI C 标准下,函数定义应写为 `int max(int x, int y) { ... }`,题目中的写法依然不符合任何标准的函数定义语法。 * **D. `static char c;`** * 这是正确的变量定义。`static` 是存储类说明符,`char` 是类型说明符,`c` 是变量名。这定义了一个静态字符变量。如果是全局变量,它的作用域仅限于本文件;如果是局部变量,它的生命周期贯穿整个程序运行期。语法完全正确。 **结论:** 选项 C 的语法结构混乱,无法构成合法的函数定义,因此是不正确的定义。 **正确答案:C**
题目纠错
c语言选择判断题库

扫码进入小程序
随时随地练习

关闭登录弹窗
专为自学备考人员打造
勾选图标
自助导入本地题库
勾选图标
多种刷题考试模式
勾选图标
本地离线答题搜题
勾选图标
扫码考试方便快捷
勾选图标
海量试题每日更新
波浪装饰图
欢迎登录试题通
可以使用以下方式扫码登陆
APP图标
使用APP登录
微信图标
使用微信登录
试题通小程序二维码
联系电话:
400-660-3606
试题通企业微信二维码