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

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

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

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

选择题

1.有下列程序:

#include

/*fun函数的功能是将a所指数组元素从大到小排序*/

void fun(int*a,int n) main()

{int t,i,j; {int c[10]={1,2,3,4,5,6,7,8,9,0),i;

for(i=0;i<n-1.j++) fun(c+4,6);

for(j=i+1 j<nj++) for(i=0;i<10;i++)printf(\\(A)

A. 1,2,3,4,9,8,7,6,5,0,

B. 0,9,8,7,6,5,1,2,3,4,

C. 0,9,8,7,6,5,4,3,2,1,

D. 1,2,3,4,5,6,7,8,9,0,

解析:fun()函数的功能是对数组a[]的元素从大到小进行排序。所以在主函数执行fun(c+4,6)语句时,将从数组c的第5个元素开始的后6个元素进行从大到小排序。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。

2.有以下程序

#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-p为两个地址之间的元素差5。

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

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

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

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

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

解析:数组的定义格式:

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

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

4.以下叙述中正确的是

C

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

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

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

5.如果定义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])含义相同。

6.有以下程序

#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中的元素的值不变。

7.若有以下程序

main(){int i,j=0;

char a[]=\\(C)

A. Howareyou

B. Hay!

C. Howareyou!

D. How are you!

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

8.若有以下程序

#include

main(){int i,j=0;

char a[]=\\(D)

A. Howareyou

B. Hay!

C. Howareyou!

D. ay

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

9.若有以下程序#include

char*a=\\(D)

A. #you#to#China!

B. me#you#to#China!

C. #China!

D. #to#China!

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

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

B

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

11.若有以下说明和语句

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

p=c;

能够正确引用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)是取出该元素的值。

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

A. pk=k;

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

C. pk=k[0];

D. ok[]=k;

解析

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

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

推荐资源

客服

扫码添加客服微信

热线

官方客服

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

电话客服:

客服微信:pujinet

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

公众号

扫码关注微信公众号