问题
单项选择题
有以下程序
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=O,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],满足while条件,执行循环体中的if语句,但不符合if条件,所以num不进行运算,j进行加 2运算j=2,此时p[i][j]=p[1][2]=4,if条件还是为假,num不进行运算,j进行加2运算j=4,再执行while语句条件不符合退出循环。所以结果为39。