问题 单项选择题

有以下程序main(){ char *p[]={"3697","2548"};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

答案

参考答案:C

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

单项选择题 A1/A2型题
单项选择题 A1/A2型题