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

admin2013-02-23  21

问题 有以下程序:main(){ char *p[]={"3697","2584"};    int i, j;  long num=0;    for(i=0;i<2;i++)    {j=0;        while(p[j]!=’\0’)        { if((p[il[j] -’0’)%2) num=10*num+ p[j] -’0’;            j+=2;        }        printf("%d\n", num);}程序执行后的输出结果是(    )。

选项 A、35
B、37
C、39
D、3975

答案4

解析 本题首先定义了一个字符指针数组p,然后使用一个两重循环遍历数组p。因为内循环的循环变量j每次会加2,所以只能遍历到数组p每行中列下标为偶数的字符,它们是‘3’、‘9’、‘2’、‘8’。然后,将它们通过p[j]-‘0’表达式转换为对应的整数3、9、2、8,并用%2来判断该整数是否为奇数。所以最终能执行到num=10*num+ p[j]-‘0’,语句的只有‘3’和‘9’两个字符。此时已不难算出,运行后num中的值为39。故应该选择C。
转载请注明原文地址:https://kaotiyun.com/show/FSPp777K
0

最新回复(0)