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

admin2013-06-11  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。
转载请注明原文地址:https://kaotiyun.com/show/bCJp777K
0

最新回复(0)