首页 > 全部 > 二级C语言 > 国家二级C语言机试(函数和数组)模拟试卷22

国家二级C语言机试(函数和数组)模拟试卷22

本单篇文档共9147字,内容预览3600字,预览为有答案版,源文件无水印,下载后包含无答案空白卷版和有答案版,同时也有计算机类NCRE全国计算机二级整科真题模拟题,讲义课件,思维导图,易错高频题等下载。
二级C语言 章节练习 7016人下载
价格: 1.00 原价:¥8.00
收藏

国家二级C语言机试(函数和数组)模拟试卷22

选择题

1.有以下程序

#include

main(){

int c[6]={10,20,30,40,50,60},*p,*s;

p=c;

s=&c[5];

printf(\\(C)

A. 50

B. 6

C. 5

D. 60

解析:主函数中指针变量p指向数组c,s保存了数组最后一个元素的地址,那么s中为两个地址之间的元素差5。

2.以下叙述中正确的是(C)

A. 一条语句只能定义一个数组

B. 数组说明符的一对方括号中只能使用整型常量,而不能使用表达式

C. 每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元

D. 在引用数组元素时,下标表达式可以使用浮点数

解析:数组的定义格式:

类型说明符数组名[整型常量表达式]….;

可以同时定义多个类型相同的数组,之间以逗号分隔开,数组的类型表明了数组中元素的数据类型,数组中所有元素的类型相同,数组经过定义以后就可使用,编译程序将对其分配一片连续的存储空间进行连续存储。C语言中只能单个引用数组元素而不能一次引用整个数组。引用格式为:数组名[下标],引用元素时,需要注意下标只能为整型常量或整型表达式。

3.以下叙述中正确的是

C

解析:当系统为所定义的数组在内存中开辟~串连续的存储单元时,这些存储单元中并没有确定的值,可以在定义语句中为所定义数组的各个元素赋初值。

数组初始化赋值是指在数组定义时给数组元素赋予初值。初始化赋值的一般形式为:类型说明符 数组名[常量表达式]={值,值,…,值};。

需要注意的是当所赋初值多于所定义数组的元素个数时,在编译时将给出出错信息,在指定初值时,第一个初值必定赋给下标为0的元素,然后按这些数值的排列顺序赋初值,只能给元素逐个赋值,不能给数组整体赋值。如果给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。

4.如果定义float a[10],x;则以下叙述中正确的是(B)

A. 表达式a+1是非法的

B. 语句a=&x;是非法的

C. 三个表达式a[1]、*(a+1)、*&a[1]表示的意思完全不同

D. 表达式*&a[1]是非法的,应该写成*(&(a[1]))

解析:定义语句“float a[10],x;”以后,数组名a表示了数组元素的首地址,是常量在程序中不能更改,因此选项A是的描述是正确的。而指向运算符和取址运算符,是互反运算符优先级相同,*&a[1]和*(&a[1])含义相I司。

5.有以下程序

#include

main()

{int a[]={10,20,30,40},*p=a,i;

for(i=0;i<=3;i++){a[i]=*p;p++;}

printf(\\(B)

A. 20

B. 30

C. 10

D. 40

解析:因为指针变量p的初始值指向数组a,所以执行for循环语句后,数组a中的元素的值不变。

6.若有以下程序

main(){int i,j=0;

char a[]=\\(C)

A. Howareyou

B. Hay!

C. Howareyou!

D. How are you!

解析:主函数中利用for循环访问字符串的每一个字符,判断当前字符是否为空格,如果是空格则删除。因此删除字符串\\

7.若有以下程序

#include

main(){int i,j=0;

char a[]=\\(D)

A. Howareyou

B. Hay!

C. Howareyou!

D. ay

解析:主函数中利用for循环访问字符串a的每一个字符,判断当前字符是否为空格,如果是空格则保存该空格后面的一个字符存放到字符数组b中。在字符串”How are you!”中,第一个空格后面字符为’a’,第二个空格后面字符为’y’。

8.若有以下程序#include

char*a=\\(D)

A. #you#to#China!

B. me#you#to#China!

C. #China!

D. #to#China!

解析:程序中循环部分的主要功能是,在字符串b中寻找是否含有子串a,如果含有则退出,字符指针p指向该匹配子串后面的位置,利用printf函数输出则从该位置开始一直输出到字符串b的结尾。

9.以下能正确定义二维数组是

B

解析:C语言中定义二维数组,必须指定二维数组每一维的大小。选项A没有指定数组a行的大小,错误:选项B,虽然没有指定行大小,但是可以通过大括号里面的元素个数计算出行的大小为1,因此是正确的:选项C同样没有指定行的大小,也不能通过元素个数计算行的个数,错误:选项D定义的是二行三列数组,但是后面数据是三行,超出范围,所以错。

10.若有以下说明和语句

int c[4][5],(*p)[5];

能够正确引用c数组元素的是(D)

A. p+1

B. *(p+3)

C. *(p+1)+3

D. *(p[0]+2)

解析:本题考查数组和指针,在本题中c是二维数组,指针p指向二维数组c,p其实是指向c数组的第一行。因此选项A中p+1指向c数组的第二行;选项B中,p+3表示p指向c数组的第三行,因此*(p+3)表示取出c数组第三行首元素的地址:选项C和选项B类似,表示取出数组c第二行首元素地址然后加3;选项D中p[0]+2表示数组第一行第三列元素的地址,因此*(p[0]+2)是取出该元素的值。

11.若有定义语句:int k[2][3],*pk[3];,则以下语句中正确的是(B)

A. pk=k;

B. pk[0]===k[1][2];

C. pk=k[0];

D. pk[1]=k;

解析:本题考查多维数组和数组指针。k是一个二维数组,pk是一个指针数组,该数组有3个元素,每个元素都是一个指向整型对象的指针。选项A错误,等号的左边是一个数组地址,不是变量;选项B是把元素k[1][2]赋值给pk[0]:选项C中等号左边不是变量;选项D类型不匹配,pk[1]是指向一个整型对象,而k是一个二维数组首地址。

12.若有定义语句:int a[3][6];,按在内存中的存放顺序,a数组的第10个元素是(B)

A. a[0][4]

B. a[1][3]

C. a[0][3]

D. a[1][4]

解析:本题考查多维数组的定义和使用。a是一个二维数组,有3行6列,即每行6个元素,a的第lO个元素位于第二行的第四个位置,即a[1][3]。

13.若有定义语句:int a[2][3],*p[3];,则以下语句中正确的是(C)

A. p=a;

B. p[0]=a;

C. p[0]=a[1][2];

D. p[1]=a;

解析:本题考查多维

本文档预览:3600字符,共9147字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载

剩余未完,查看全文
收藏
国家二级C语言机试(函数和数组)模拟试卷22

推荐资源

客服

扫码添加客服微信

热线

官方客服

如遇问题,请联系客服为您解决

电话客服:

客服微信:pujinet

工作时间:9:00-18:00,节假日休息

公众号

扫码关注微信公众号