问题 填空题

以下程序的输出结果是 【12】
#include <stdio.h>
main()
int i;
for(i-’a’; i<’f’; i++,i++) printf("%c",i-’a’+’A’);
printf("\n");

答案

参考答案:ACE

解析: 题目中for循环的循环变量i从字符’a’变到字符’e’,但由于每次循环后都连续执行了两次i++,所以for循环将执行3次,循环变量i的值依次为’a’、’c’、’e’。循环体中是一条输出语句,按字符输出表达式i-’a’+’A’。因为大小写字母的ASCII码是连续的,例如’b’+1=’c’、’W’-1=’V’,而且小写字母的ASCII码比大写字母的大。所以,同一个字母的大小写字符之差是一个固定值。由此可见,将一个字符从小写转换为大写,只需将其减去这个固定值,而将大写转为小写可以加上这个固定值。固定值可以通过任一字符的小写减去大写来得到。所以本题的i-’a’+’A’=i-(’a’-’A’),即让i减去了此固定值,从而使整个表达式的值为i所代表的小写字母的大写形式。故本题的输出结果是ACE。

阅读理解与欣赏
多项选择题