讲解一下题,要详细过程。

5、有以下程序(说明:字母A的ASCIl码值是65)
 #include <stdio.h>
 void fun(char *s)
 {  while(*s)
   {if(*s%2)
printf("%c",*s); 
s++; } 
 } 
int  main(void)
 {  char a[]="BYTE"; 
    fun(a);
    printf("\n"); 
    return 0;

 程序运行后的输出结果是( )
A、 BY B、 BT C、 YT D、 YE

当指针指向第一个字母B时,B的ascii码是66,所以*s%2=66%2=0 if语句括号内为0不输出,
s++,指向第二个字母Y,Y的ascii码是89,*s%2=89%2=1if语句括号内为1输出Y,
s++,指向第三个字母T,T的ascii码是84,s%2=84%2=0if语句括号内为0不输出,
s++,指向第四个字母E,E的ascii码是69,s%2=69%2=1if语句括号内为1输出E,
所以最后结果是D选项YE

就是对BYTE的每一个字母的ASCII码对2求余,如果不为0就输出这个字母