单选题
1、已知字母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. 变量初始化与运算
* **初始状态**:`char a = 'a';`
* 题目已知 `'a'` 的 ASCII 十进制代码为 **97**。
* 此时,变量 `a` 的值为 97。
* **执行运算**:`a--;`
* 这是自减运算,`a` 的值变为 $97 - 1 = 96$。
* ASCII 码中,96 对应的字符是 `` ` `` (反引号),但在本题中我们主要关注其数值参与后续计算。
### 2. 分析 `printf` 中的表达式
`printf` 语句为:`printf("%d,%c\n", a+'2'-'0', a+'3'-'0');`
我们需要分别计算两个输出项的值。注意:在 C 语言中,字符常量(如 `'2'`, `'0'`)参与算术运算时,使用的是它们的 **ASCII 码值**。
* `'0'` 的 ASCII 码是 **48**
* `'2'` 的 ASCII 码是 **50**
* `'3'` 的 ASCII 码是 **51**
#### 第一个输出项:`a + '2' - '0'`
* **数值计算**:
$$96 + 50 - 48 = 98$$
* **格式控制**:`%d`
* `%d` 表示以**十进制整数**形式输出。
* 因此,第一个输出结果为 **98**。
#### 第二个输出项:`a + '3' - '0'`
* **数值计算**:
$$96 + 51 - 48 = 99$$
* **格式控制**:`%c`
* `%c` 表示以**字符**形式输出。
* 我们需要找到 ASCII 码为 **99** 对应的字符。
* 已知 `'a'` 是 97,则 `'b'` 是 98,**`'c'` 是 99**。
* 因此,第二个输出结果为字符 **c**。
### 3. 综合输出结果
将两个结果结合,中间用逗号分隔,最终输出为:
`98,c`
### 4. 选项分析
* A. `b,c`:错误。第一个项用了 `%d`,应输出数字而非字符。
* B. `a--运算不合法...`:错误。`char` 类型可以进行自减运算。
* C. `98,c`:**正确**。符合上述推导。
* D. `格式描述和输出项不匹配...`:错误。`int` 类型可以匹配 `%d` 和 `%c`(只要数值在 char 范围内),这里计算结果均为合法整数,匹配无误。
### 结论
正确答案是 **C**。
题目纠错
c语言选择判断题库
相关题目
单选题
1、〖第12题〗22) 以下不符合C语言语法的赋值语句是()。
单选题
1、〖第11题〗61)设j和k都是int类型,则for循环语句 for(j=0,k=-1;k=1;j++,k++) printf(”****\n”);()。
单选题
10.以下函数调用语句中实参的个数是()。 func((e1,e2),(e3,e4,e5));
单选题
9.以下程序的输出结果为()。 main() {int i=010,j=10; printf(”%d,%d\n”,++i,j--); }
单选题
8.若有以下程序段:int a=3,b=4; a=a^b;b=b^a;a=a^b;则执行以上 语句后,a和b的值分别是()。
单选题
7.以下运算符中,优先级最高的运算符是()。
单选题
6.下列字符序列中,不可用作C语言标识符的是()。
单选题
5.C语言中的文件的存储方式有()。
单选题
4.C语言程序中,若对函数类型未加显式说明,则函数的隐含说明类型为()。
单选题
3.数组名作为实参数传递给函数时,数组名被处理为()。
