首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序 main() { char ch[2][5]={"6937","8254"},*p[2]; int i,j,s=0; for(i=0;i<2;i++)p[i]=ch[i]; for(i=0;i<
有如下程序 main() { char ch[2][5]={"6937","8254"},*p[2]; int i,j,s=0; for(i=0;i<2;i++)p[i]=ch[i]; for(i=0;i<
admin
2010-09-05
64
问题
有如下程序 main() { char ch[2][5]={"6937","8254"},*p[2]; int i,j,s=0; for(i=0;i<2;i++)p
=ch
; for(i=0;i<2;i++) for(j=0;p
[j]>’\0’; j+=2) s=10*s+p
[j]-’0’; printf("%d\n",s);} 该程序的输出结果是
选项
A、69825
B、63825
C、6385
D、693825
答案
C
解析
该题稍微难一点。主要要搞清楚以下几点:①定义了一个指针数组char *p[2]后,程序中第一个循环 for(i=0;i<2;i++)p
=ch
;的作用,是使指针数组的p[0]元素(它本身是一个指针)指向了二维数组ch的第一行字符串,并使指针数组的p[1]元素指向二维数组ch的第二行字符串。这样,就使指针数组p和二维数组ch建立起了一种对应关系,以后对二维数组ch的某个元素的引用就有两种等价的形式:ch
[j]或p
[j]。②对二维数组ch的初始化,使其第一行ch[0]中存入了字符串“6937”,第二行ch[1]中的内容为字符串“8254”。③程序中第二个循环中的循环体s=s*10+p
[j]-’0’;的功能是这样的,每执行一次,将s中的值乘以10(也即将s中的数值整体向左移动一位,并在空出来的个位上添一个0),再将当前p
中的字符量转换为相应的数字,然后把这个数字加到s的个位上。④注意到内启循环的循环条件 p
[j]>’\0’是指p
[j]中的字符只要不是字符串结束标志’\0’就继续循环。语句j+=2;是使下标j每次增加2,也即一个隔一个地从p
所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从p[0]所指向的字符串“6937”中一个隔一个地取出字符,分别是“6”和“3”,然后从p[1)所指向的字符串“8254”中一个隔一个地取出字符,分别是“8”和“5”,同时经过转换和相加运算后,结果s中的值应该是6385。
转载请注明原文地址:https://kaotiyun.com/show/6aWp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
下面叙述中错误的是
设有如图所示窗体和以下程序:PrivateSubCommand1_Click() Text1.Text="VisualBasic"EndSubPrivateSubText1_LostFocus() IfText1.Text"B
下列叙述中错误的是()。
为计算an的值,某人编写了函数power如下:PrivateFunctionpower(aAsInteger,nAsInteger)AsLong DimsAsLong p=a Fork=1Ton p=p*a Next
以下过程定义中正确的过程首行是( )。
下面不能在信息框中输出“VB”的是()。
下面描述中不属于数据库系统特点的是
通过语句X=InputBox("输入数据","示例","0")对变体类型的变量X输入数据,程序运行后,如果在对话框的输入区中输入数值100并按回车键,则下列叙述中正确的是
随机试题
VaR值的大小与未来一定的()密切相关。
患者,男,68岁,农民。因牙痛引起左颊部红肿,流脓月余。体检发现左颊部软组织变硬,局部皮肤发黑,有一层管形成并不断排脓。查脓液发现有黄色小颗粒,压片镜检颗粒呈菊花状,由放射状排列菌丝组成,菌丝末端膨大呈棒状。该患者感染的是
血小板聚集试验主要用于
蛋白质的消化酶主要来源于
圆截面杆ABC轴向受力如图。已知BC杆的直径d=100mm,AB杆的直径为2d,杆的最大的拉应力是()。
企业自主决定提取的盈余公积是()。
“实践是知识的母亲,知识是生活的明灯。”这句谚语的哲学寓意是()。
计算的时候,在什么情况下,样本均值分布是正态分布或接近正态分布?()。
试论刑法中的因果关系。
对C++编译器区分重载函数无任何意义的信息是()。
最新回复
(
0
)