单选题
1、〖第14题〗35) 已知字母a的ASCII十进制代码为97,则执行下列语句后的输出结果为()。 char a='a'; a--; printf(”%d,%c\n”,a+'2'-'0',a+'3'-'0');
A
b,c
B
a--运算不合法,故有语法错
C
98,c
D
格式描述和输出项不匹配,输出无定值
答案解析
正确答案:C
解析:
这是一道关于 C 语言字符运算、ASCII 码以及 `printf` 格式化输出的经典题目。以下是详细解析:
### 1. 代码逐步分析
**第一步:变量初始化与自减运算**
```c
char a = 'a';
a--;
```
* 已知 `'a'` 的 ASCII 十进制代码为 **97**。
* 执行 `a--` 后,`a` 的值变为 $97 - 1 = 96$。
* 在 ASCII 码表中,96 对应的字符是 **`` ` ``** (反引号),但在本题中我们主要关注其数值 **96**。
**第二步:分析 `printf` 中的表达式**
语句为:`printf("%d,%c\n", a+'2'-'0', a+'3'-'0');`
我们需要分别计算两个输出项的值。注意:在 C 语言中,字符常量(如 `'2'`)参与运算时,使用的是其 ASCII 码值。
* `'0'` 的 ASCII 码是 48
* `'2'` 的 ASCII 码是 50
* `'3'` 的 ASCII 码是 51
* 当前 `a` 的数值是 96
**计算第一个参数(对应 `%d`):**
表达式:`a + '2' - '0'`
$$ 96 + 50 - 48 = 96 + 2 = 98 $$
* 格式控制符是 `%d`,表示以**十进制整数**形式输出。
* 所以,第一部分输出结果为 **98**。
**计算第二个参数(对应 `%c`):**
表达式:`a + '3' - '0'`
$$ 96 + 51 - 48 = 96 + 3 = 99 $$
* 格式控制符是 `%c`,表示以**字符**形式输出。
* 我们需要找到 ASCII 码为 **99** 的字符。
* 已知 `'a'` 是 97,则 `'b'` 是 98,**`'c'` 是 99**。
* 所以,第二部分输出结果为字符 **c**。
### 2. 综合输出结果
将两部分结果结合,中间用逗号分隔:
`98,c`
### 3. 选项分析
* **A. b,c**:错误。第一个输出项用了 `%d`,应该输出整数 98,而不是字符 'b'。如果格式符是 `%c`,才会输出 'b'。
* **B. a--运算不合法...**:错误。`char` 类型本质上是小整数,完全支持自增自减运算。
* **C. 98,c**:**正确**。符合上述推导。
* **D. 格式描述和输出项不匹配...**:错误。`%d` 匹配整型表达式,`%c` 匹配整型表达式(解释为字符),类型匹配合法。
### 结论
最终输出结果为 `98,c`,故正确答案是 **C**。
题目纠错
c语言选择判断题库
相关题目
单选题
1、第285题 (1.0分) 题号:497 C语言能正确处理的指数是()。
单选题
1、第284题 (1.0分) 题号:158 在C语言中,为了结束由while语句构成的循环,while后一对圆括号 中表达式的值应该为()。
单选题
1、第283题 (1.0分) 题号:495 下列字符序列中,是C语言保留字的是()。
单选题
1、第282题 (1.0分) 题号:575 若有条件表达式 (exp)?a++:b--,则以下表达式中能完全等价于 表达式(exp)的是()。
单选题
1、第281题 (1.0分) 题号:551 应用缓冲文件系统对文件进行读写操作,打开文件的函数名为()。
单选题
1、第280题 (1.0分) 题号:562 下列叙述中正确的是()。
单选题
1、第279题 (1.0分) 题号:560 能将高级语言编写的源程序转换为目标程序的是()。
单选题
1、第278题 (1.0分) 题号:511 求平方根函数的函数名为()。
单选题
1、第277题 (1.0分) 题号:618 C语言中用于结构化程序设计的三种基本结构是()。
单选题
1、第276题 (1.0分) 题号:706 若有说明:int *p,m=5,n;以下正确的程序段是()。
