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

admin2009-03-05  36

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

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

答案C

解析 此题考核的是指针数组。题目中定义的指针数组“*p[]”相当于一个两行四列的数组。执行for()语句 i=0,j=O,p[j]=p[0][0]=3,满足while循环条件,执行循环体中的if语句得num=3,j=2,此时p[j]=p[0][2]=9,满足循环条件,执行while循环体得num=39,j=4,判断while条件且不符合并退出while循环;再次执行for()语句i=1,j=0,p[j]=p[1][0],满足while条件,执行循环体中的if语句,但不符合if条件,所以num不进行运算,j进行加 2运算j=2,此时p[j]=p[1][2]=4,if条件还是为假,num不进行运算,j进行加2运算j=4,再执行while语句条件不符合退出循环。所以结果为39。
转载请注明原文地址:https://kaotiyun.com/show/WlXp777K
0

最新回复(0)