国家二级C语言(数组)机试模拟试卷4(题后含答案及解析).doc

国家二级C语言(数组)机试模拟试卷4(题后含答案及解析).doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

国家二级C语言(数组)机试模拟试卷4(题后含答案及解析)

题型有:1.选择题

选择题

1.若有定义:intx[10],*pt=x;,则对x数组元素的正确引用是()。

A.pt+3

B.*x[10]

C.*(pt+10)

D.*(x+3)

正确答案:D

解析:没有A选项的引用形式。*与放在一起作用抵消,但x[10]下标10超出了数组下标范围,所以B选项错误。最大只能引用到x[9],而*(pt+i)表示引用指针pt所指元素后的第i个元素,所以C选项错误,最大只能为*(pt+9)。D选项正确。知识模块:数组

2.有以下程序:#include<stdio.h>main(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf(“%d\n”,s);}程序的运行结果是()。

A.20

B.25

C.45

D.36

正确答案:B

解析:统计1~9这9个数中的奇数和,此题考查指向数组的指针。C语言规定数组名代表数组的首地址,也就是第一个元素的地址,因此*(t+i)代表数组的第i+1个元素。程序的运行结果是1+3+5+7+9=25。知识模块:数组

3.有以下程序:#include<stdio.h>main(){ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;for(i=0;i<12;i++)e[s[i]]++;for(i=1;i<5;i++)printf(“%d”,c[i]);printf(“\n”);}程序的运行结果是()。

A.2344

B.4332

C.1234

D.1123

正确答案:B

解析:在for(i=0;i<12;i++)c[s[i]]++中,数组元素s[i]的值作为数组c的下标,当退出循环时,数组c的4个元素的值分别为4、3、3、2,因此B选项正确。知识模块:数组

4.下列定义数组的语句中正确的是()。

A.#defineN10intx[N];

B.intN=10;intx[N];

C.intx[0..10];

D.intx[];

正确答案:A

解析:数组说明的一般形式为:类型说明符数组名[常量表达式]。B选项中N是变量,不能用变量定义数组长度。C选项中数组长度是一串非法的数字。定义数组时必须为其指明长度,D选项中的数组长度为空,所以非法。知识模块:数组

5.下列选项中能正确定义数组的语句是()。

A.inthum[0…2008];

B.intnum[];

C.intN=2008;intnum[N];

D.#defineN2008intnum[N];

正确答案:D

解析:C语言不允许定义动态数组,定义数组的大小必须为常量表达式。A选项错误,C语言中的数组没有此类型的定义方法;B选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定初值的个数;C选项错误,N为变量,不能用来定义数组大小。D选项正确。知识模块:数组

6.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是()。

A.#definen5inta[2*n];

B.intn=10,a[n];

C.inta[5+5];

D.#defineN10inta[N];

正确答案:B

解析:一维数组的定义方式为:类型说明符数组名[常量表达式];注意定义数组时,元素个数不能是变量,因此应该选择B选项。知识模块:数组

7.设有定义:doublea[10],*s=a;,以下能够代表数组元素a[3]的是()。

A.(*s)[3]

B.*(s+3)

C.*s[3]

D.*s+3

正确答案:B

解析:题中,首先定义了double型的数组a,并将数组首地址赋给指针s。s[3]能够表示a[3],故选项A、C不能表示a[3];选项D的,*s+3=a[0]+3。故本题答案为B选项。知识模块:数组

8.有以下程序:#include<stdio.h>main(){inti,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i++)printf(“%d”,t[2-i][i]);}程序的运行结果是()。

A.357

B.753

C.369

D.751

正确答案:A

解析:二维数组t[][3]实际上指t[3][3]={{9,8,7},{6,5,4},{3,2,1}},通过循环语句for语句可以得到i=0,t[2][0]=3、i=1,t[1][1]=5、i=2,t[0][2]=7、i=3时循环结束,即t[2][0]=3、t

您可能关注的文档

文档评论(0)

fufuhjk001 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档