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=1,if语句括号内为1输出Y,
s++,指向第三个字母T,T的ascii码是84,s%2=84%2=0,if语句括号内为0不输出,
s++,指向第四个字母E,E的ascii码是69,s%2=69%2=1,if语句括号内为1输出E,
所以最后结果是D选项YE
就是对BYTE的每一个字母的ASCII码对2求余,如果不为0就输出这个字母