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

1、第147题 (1.0分) 题号:520 以下程序段的输出结果为()。 char c[]=“abc”; int i=0; do ;while(c[i++]!='\0');printf(”%d”,i-1);

A
 abc
B
 ab
C
2
D
3

答案解析

正确答案:D

解析:

这是一道关于 C 语言字符串处理、数组索引以及 `do-while` 循环执行机制的题目。以下是详细解析: ### 1. 代码分析 ```c char c[] = "abc"; // 定义字符数组 c,内容为 'a', 'b', 'c', '\0' int i = 0; // 初始化整数变量 i 为 0 // do-while 循环,循环体为空语句(只有一个分号) do ; while(c[i++] != '\0'); printf("%d", i - 1); // 输出 i-1 的值 ``` ### 2. 执行过程推导 **关键点:** 1. **字符串结构**:`"abc"` 在内存中占用 4 个字节,分别是 `c[0]='a'`, `c[1]='b'`, `c[2]='c'`, `c[3]='\0'`。 2. **后置自增 `i++`**: 表达式 `c[i++]` 先使用 `i` 当前的值作为下标访问数组,然后 `i` 的值加 1。 3. **循环条件**:只要当前字符不等于结束符 `\0`,循环继续。 **逐步执行跟踪:** * **初始状态**:`i = 0` * **第 1 次循环判断**: * 执行 `c[i++] != '\0'`: * 取 `c[0]`,值为 `'a'`。 * `'a' != '\0'` 为真 (True)。 * `i` 自增变为 `1`。 * 条件为真,继续循环。 * **第 2 次循环判断**: * 执行 `c[i++] != '\0'`: * 取 `c[1]`,值为 `'b'`。 * `'b' != '\0'` 为真 (True)。 * `i` 自增变为 `2`。 * 条件为真,继续循环。 * **第 3 次循环判断**: * 执行 `c[i++] != '\0'`: * 取 `c[2]`,值为 `'c'`。 * `'c' != '\0'` 为真 (True)。 * `i` 自增变为 `3`。 * 条件为真,继续循环。 * **第 4 次循环判断**: * 执行 `c[i++] != '\0'`: * 取 `c[3]`,值为 `'\0'`。 * `'\0' != '\0'` 为假 (False)。 * `i` 自增变为 `4`。 * 条件为假,**退出循环**。 **循环结束后状态**: 此时 `i` 的值为 **4**。 ### 3. 输出结果计算 程序最后执行: ```c printf("%d", i - 1); ``` 代入 `i = 4`: $$ 4 - 1 = 3 $$ 所以输出结果为 **3**。 ### 4. 选项分析 * A. `abc`:这是字符串内容,不是长度或索引值,且格式符是 `%d`。 * B. `ab`:同上,错误。 * C. `2`:这是最后一个有效字符 `'c'` 的下标,但题目问的是 `i-1`,且 `i` 在检测到 `\0` 后还进行了一次自增。 * D. `3`:正确。`i` 最终为 4,`i-1` 为 3,这也恰好是字符串 `"abc"` 的有效长度(不含 `\0`)。 ### 结论 正确答案是 **D**。
题目纠错
c语言选择判断题库

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

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