(42)有以下程序

来源:百度知道 编辑:UC知道 时间:2024/06/01 08:52:23
(42)有以下程序
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〔i〕〔j〕-′0′;
j+=2;
}
}
printf("%d\n",num);
}
程序执行后的输出结果是
A)35 B)37 C)39 D)3975
不懂 请高手讲解
答案是D 高手讲解一下 谢谢

是c。
if((p〔i〕〔j〕-′0′)%2)这就说明了你的数为奇数,才为真。
j+=2;说明了每次移动2个数,
这样就是39了。
至于num=10*num+p〔i〕〔j〕-′0′;这句只是将字符转换成十进制数。
if((p〔i〕〔j〕-′0′)%2该句也是转化为十进制数后在做取余运算的。
这下你就该明白了吧。

答案错了!选C