问题 单项选择题

有以下程序段:
char ch; int k;
ch='a'; k=12;
printf("%c, %d, ", ch, ch, k); printf("k=%d\n", k);
已知字符a的ASCII十进制代码为97,则执行上述程序段后输出结果是( )。

A) 因变量类型与格式描述符的类型不匹配输出无定值
B) 输出项与格式描述符个数不符,输出为零值或不定值
C) a, 97, 12k=12
D) a, 97, k=12

答案

参考答案:D

解析: 本题主要考查的是标准输出函数printf。printf函数在进行参数匹配时,并不会检查参数类型是否一一匹配,也不会检查参数个数是否一致,而是从它认为应该是第1个参数地址的内存位置开始,依次将内存中的内容逐个匹配给格式化字符串内所给定的各个类型。因此,前一个printf调用,两个ch分别匹配给%c和%d,而参数k多余,被抛弃。所以会输出“a, 97, ”(字符a的ASCII值为97)。后一个printf很正常,这里就不解释了。故应该选择D)。

多项选择题
单项选择题