问题 单项选择题

有下列程序:
main()
char *p[]="3697", "2584");
int i, j; long num=0;
for(i=0; i<2; i++)
j=0;
while(p[i][j]!=’\0’)
if((p[i][j]-’\0’)%2)num=10*num+p[j][j]-’0’;
j+=2;


printf("%d\n", num);

程序执行后的输出结果是( )。

A.35

B.37

C.39

D.3975

答案

参考答案:D

解析: 执行第一次for循环时,用表达式p[i][j]!=’\0’来判断字符串数组指针p是否到达字符串的结尾,如果没有到达,继续执行while中的语句。if语句表示(p[i][j]=’\0’)除2的余数不为0时,即字符串所有奇数,执行后面的语句。所以退出第1次for的循环体时,输出为397,执行第2次循环体。对字符串“2584”进行处理,输出结果为5,因而最后输出结果为3975。

单项选择题
多项选择题