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

1、第149题 (1.0分) 题号:501 下列程序段的输出结果为()。 int a=7,b=9,t; t=a*=a>b?a:b; printf(”%d”,t);

A
7
B
9
C
63
D
49

答案解析

正确答案:C

解析:

这道题主要考察 C 语言中**运算符的优先级**和**结合性**,特别是条件运算符(`?:`)与复合赋值运算符(`*=`)之间的运算顺序。 ### 1. 代码分析 原始代码段如下: ```c int a = 7, b = 9, t; t = a *= a > b ? a : b; printf("%d", t); ``` 我们需要重点分析这一行核心语句: `t = a *= a > b ? a : b;` ### 2. 运算符优先级解析 在 C 语言中,相关运算符的优先级从高到低排列如下: 1. **关系运算符** `>` (优先级较高) 2. **条件运算符** `?:` (优先级低于关系运算符,但高于赋值运算符) 3. **复合赋值运算符** `*=` (优先级很低,仅高于逗号运算符) 4. **简单赋值运算符** `=` (优先级最低) 因此,表达式 `a *= a > b ? a : b` 的计算步骤如下: #### 第一步:计算条件表达式 `a > b ? a : b` 由于 `>` 的优先级高于 `?:`,先计算 `a > b`。 - 已知 `a = 7`, `b = 9`。 - `7 > 9` 为假(false,即 0)。 - 根据条件运算符规则,结果为冒号后面的值,即 `b` 的值。 - 所以,`a > b ? a : b` 的结果为 **9**。 此时,原表达式等价于: `t = a *= 9;` #### 第二步:执行复合赋值 `a *= 9` 复合赋值运算符 `*=` 的含义是 `a = a * 9`。 - 当前 `a` 的值为 7。 - 计算 `7 * 9 = 63`。 - 将结果 **63** 赋值给变量 `a`。 - 此时,`a` 的值变为 63。 - **关键点**:在 C 语言中,赋值表达式(包括复合赋值)本身的值就是赋值后左操作数的值。因此,表达式 `a *= 9` 的值也为 **63**。 此时,原表达式等价于: `t = 63;` #### 第三步:执行简单赋值 `t = 63` - 将上一步表达式的结果 63 赋值给变量 `t`。 - 此时,`t` 的值为 **63**。 ### 3. 最终输出 `printf("%d", t);` 输出变量 `t` 的值,即 **63**。 ### 4. 结论 - A. 7:错误,这是 a 的初始值。 - B. 9:错误,这是条件表达式的结果,但没有乘以前面的 a。 - C. 63:正确,7 * 9 的结果。 - D. 49:错误,如果是 `a *= a` 则是 49,但这里乘的是条件表达式的结果 9。 故正确答案为 **C**。
题目纠错
c语言选择判断题库

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

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