请教:2015年全国计算机等级《二级C++》命题预测试卷六第1大题第4小题如何解答?

【题目描述】 有如下程序 include(iostream.h> voidmain() {charch[2][5]={"6937","8254"),*p[2]; inti,j,s=0; for(i=0;i<2;i++)p[i]=ch[i]; for(i=0;i<2;i++) for(j=0;p[i][j])'\0';j+=2) s=10*s+p[i][j]一'0'; cout<<S;} 该程序的输出结果是()。 A.69825 B.63825 C.6385 D.693825 <table><tr><td>【我提交的答案】: D</td></tr><tr><td>【参考答案与解析】: 正确答案:C</td></tr></table>答案分析: C。【解析】该题主要要搞清楚以下几点:①定义了一个指针数组char*p[2]后,程序中第一个循环“for(i=0;i(2;i++)p[i]=ch[i]”的作用是使指针数组的p[0]元素(它本身是一个指针)指向了二维数组ch的第一行字符串,并使指针数组的p[1]元素指向了二维数组ch的第二行字符串,这样,就使指针数组P和二维数组ch建立起了一种对应关系,以后对二维数组ch的某个元素的引用就有两种等价的形式:ch[i][j]或p[i][j]。②对二维数组ch的初始化,使其第一行ch[0]中存入了字符串“6937”,第二行ch[1]中的内容为字符串“8254”。③程序中第二个循环中的循环体“s=s*10+p[i][j]-'0'”的功能是这样的,每执行一次,将s中的值乘以10(即将s中的数值整体向左移动一位,并在空出来的个位上添一个0),再将当前p[i][j]中的字符量转换为相应的数字,然后把这个数字加到s的个位上。④注意到内层循环的循环条件p[i][3]>'\0'是指p[i][j]中的字符只要不是字符串结束标志'\0'就继续循环,语句j+=2;是使下标j每次增加2,即一个隔一个地从p[i]所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从p[0]所指向的字符串“6937”中一个隔一个地取出字符,分别是“6”和“3”,然后从p[1]所指向的字符串“8254”中一个隔一个地取出字符,分别是“8”和“5”,同时经过转换和相加运算后,结果s中的值应该是6385。

时间:2024-03-06 09:45:04

相似题目