考试吧

计算机等级

考试吧>等级考试>计算机二级考试>C语言>模拟试题>正文
2016年计算机二级考试C语言冲刺模拟题(4)
考试吧 2016-02-29 16:36:30 评论(0)条

  点击查看2016年计算机二级考试C语言冲刺模拟题汇总

  一、选择题

  1. “int n; float f=13.8;”,则执行“n=(int)f%3”后,n的值是(A)

  A1

  B4

  C4.333333

  D4.6

  “(int)f“表示将f中的值强制类型转换为整型,即将13.8的小数部分舍掉,转换为13;然后计算13%3,结果为1,再将结果赋给变量n,因此n的值为1

  2. 以下对一维数组a的正确说明是: D

  Achar a(10);

  B、 int a[];

  Cint k=5a[k];

  Dchar a[3]={‘a’,’b’,’c’};

  详见教材P143~144,一维数组的定义、初始化

  类型符 数组名 [常量表达式]

  类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;常量表达式是指数组的长度(数组中包含元素的个数),其值只能是整数,不可以是变量,而且从1开始计数。

  选项A,常量表达式只能放在中括号 [ ]

  选项B,只有在对数组初始化(即赋值)的时候才可以省略数组的长度,B中并未对a进行初始化。

  选项C,常量表达式不能为变量。

  3.以下能对一维数组a进行初始化的语句是:( C )

  Aint a[5]=(0,1,2,3,4,)

  B、 inta(5)={}

  C、 int a[3]={0,1,2}

  D、 int a{5}={10*1}

  详见教材P145,一维数组的定义、初始化

  选项B,D,常量表达式只能放在中括号 [ ]

  选项A,数组可以看做是若干个相同数据类型元素的有序集合,因此以集合的形式对其初始化,使用{ }对其初始化,选项A用了().

  4.C语言中对一维整型数组的正确定义为 

  Aint a(10);

  Bint n=10,a[n];

  Cint n;a[n];

  D#define N 10

  int a[N];

  5、已知:int a[10]; 则对a数组元素的正确引用是( D )

  Aa[10]

  Ba[3.5]

  Ca(5)

  Da[0]

  详见教材P144,数组元素的引用

  数组名[下标]

  引用数组元素时,[ ]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数

  int a[10]表示定义了一个包含10个整型数据的数组a,数组元素的逻辑地址下标范围为0~9,即a[0] 表示组中第1个元素; a[1] 表示组中第2个元素; a[2] 表示组中第3个元素; ......;a[9] 表示组中第10个元素.

  选项A,超过了数组a的逻辑地址下标范围;

  选项B,逻辑地址下标只能为整数

  选项C,逻辑地址下标只能放在[ ]

  6.下列不正确的定义是( A )

  Aint *p=&i,i;

  Bint *p,i;

  C.int i,*p=&i;

  Dint i,*p;

  选项A先定义一个整型指针变量p,然后将变量i的地址赋给p。然而此时还未定义变量i因此编译器无法获得变量i的地址。(AC对比,选项C先定义变量i,则在内存中为i分配空间,因此i在内存空间的地址就可以确定了;然后再定义p,此时可以为pi的地址,C正确)

  7. 若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是: ( D )

  Ap=q

  B*p=*q

  Cn=*q

  Dp=n

  p,q同为整型指针变量,二者里面仅能存放整型变量的地址。

  选项Aq中为地址,因此可将此地址赋给p

  选项B*p表示p所指向对象n的内容,即一个整数;*q表示q所指向对象的内容,由于在定义q时为其初始化,将pn的地址给q,因此p中存放n的地址,*q表示q所指向对象n的内容.因此*p=*q 相当于 n=n;

  选项Cn=*q 等价于n=n;

  选项Dp中只能存放地址,不能将n中的整数值赋给p

  8.有语句:int a[10],;则 是对指针变量p的正确定义和初始化。

  Aint p=*a;

  Bint *p=a;

  Cint p=&a;

  Dint *p=&a;

  选项Aa是数组名,不是指针变量名,因此不可用*标注数组名a

  选项Ca是数组名,数组名就是地址,无需再用地址符号。而且在定义指针变量p时,应在变量名前加*,标明p是指针变量

  选项Da是数组名,数组名就是地址,无需再用地址符号。

  9.若有说明语句“int a[5],*p=a;”,则对数组元素的正确引用是( C )

  Aa[p]

  Bp[a]

  C*(p+2)

  Dp+2

  首先定义一个整型数组aa的长度为5,然后定义一个指针变量p,并同时对p进行初始化,将数组a的地址赋给p。因此此时p中存放的数组a的首地址,即数组中第一个元素a[0]的地址。

  对于数组元素下标的引用(详见p144), 一般形式 数组名[下标其中下标为逻辑地址下标,从0开始计数,方括号中的下标可以是变量,可以是表达式,但结果一定要是整数。

  选项Ap中存放的是地址,不是整数,不能做数组元素的下标

  选项Ba是数组名,数组名就是地址,不是整数,不能做数组元素的下标

  选项C(重点!!!详见p231~234) p+2表示指向同一数组中的下两个元素的地址,当前p指向a[0],则p+2表示a[2]的地址,因此*(p+2)表示a[2]的内容

  10. 有如下程序

  int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;

  则数值为9的表达式是 B

  A、 *P+9

  B、 *(P+8)

  C、 *P+=9

  DP+8

  (重点!!!详见p231~234)

  首先定义一个整型数组aa的长度为5,然后定义一个指针变量P,并同时对P进行初始化,将数组a的地址赋给P。因此此时P中存放的数组a的首地址,即数组中第一个元素a[0]的地址。

  数组中9对应的是a[8], 选项BP+8表示数组中后8个元素的地址,即a[8]的地址。*(P+8)则表示该地址内所存放的内容,即a[8]的值。

  选项A*P表示P所指向对象的内容,此时P指向a[0], *Pa[0]的值1. *P+9=1+9=10

  选项C*P表示P所指向对象的内容,此时P指向a[0], *Pa[0]的值。因此*P+=9 *P =*P+9, 等价于a[0]=a[0]+9.

  选项DP+8表示数组中后8个元素的地址,即a[8]的地址,而非a[8]中的值。

  11 以下叙述中正确的是(  )

  A.用户自己定义的函数只能调用库函数

  B.实用的C语言源程序总是由一个或多个函数组成

  C.不同函数的形式参数不能使用相同名称的标识符

  D.C语言的函数内部,可以定义局部嵌套函数

  参考答案:B

  参考解析:A选项中,用户自己定义的函数只能调用库函数描述是不正确的,也可以调用自定义函数;C选项中,对于不同函数的形式参数可以使用相同名称的标识符;D选项中,关于函数的定义不可以嵌套,但函数的调用可以嵌套。因此B选项正确。

  12 以下关于C语言数据类型使用的叙述中错误的是( )

  A.若要处理如人员信息等含有不同类型的相关数据,应自定义结构体类型

  B.若要保存带有多位小数的数据,可使用双精度类型

  C.若只处理两种逻辑值,应使用逻辑类型

  D.整数类型表示的自然数是准确无误差的

  参考答案:C

  参考解析:C语言中没有逻辑类型,所以c错误。若要保存带有多位小数的数据,可以用单精度类型也可以用双精度类型。处理包含不同类型的相关数据可以定义为结构体类型。整数类型可以无误差的表示自然数。

  13下面选项中关于编译预处理的叙述正确的是

  A.预处理命令行必须使用分号结尾

  B.凡是以#号开头的行,都被称为编译预处理命令行

  C.预处理命令行不能出现在程序的最后一行

  D.预处理命令行的作用域是到最近的函数结束处

  参考答案:B

  参考解析:本题考查预编译的预编译处理命令行,预处理命令行不能以分号结尾,所以A选项错误,预处理命令行可以出现在程序的最后一行,预处理命令行作用域是整个文件。

  14有以下程序

   

  程序的输出结果是

  A.0B.1C.9D.10

  参考答案:B

  参考解析:本题考查宏定义,宏定义只是做个简单的替换。执行SQR(k+m)/SQR(k+m)=k+m*k+m/k+m}k+m=15/2a/=SQR(k+m)/SQR(k+1TI)的结果为1,选项B正确。

  15 --X树共有150个结点,其中度为l的结点有l0个,则该---X树中的叶子结点数为( )

  A.71B.70C.69D.不可能有这样的二叉树

  参考答案:D

  参考解析:在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。对任何一棵二叉树,度为0的结点总是比度为2的结点多一个。如果有一棵二叉树,结点总数为l50,假设度为0的结点个数为n,则有n+10+n1=150n=70.5,由于结点个数必须是整数,所以不可能有题目中这样的二叉树。故选择D选项。

  

  二、程序填空题

  下列给定程序中,函数fun的功能是:统计带头结点的单向链表中结点的个数,并存放在形参n所指的存储单元中。

  请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。

  注意:部分源程序给出如下。

  不得增行或删行,也不得更改程序的结构!

  试题程序:

   

   

  

  三、程序修改题

  下列给定程序中,函数fun的功能是:求出s所指字符串中最后一次出现的t所指字符串的地址,并通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL

  例如,当字符串中的内容为“abcdabfabcdx”t中内容为“ab”时,输出结果应是“abcdx”

  当字符串中的内容为“abcdabfabcdx”t中内容为“abd”时,则程序输出未找到信息“not be found!”

  请改正程序中的错误,使它能得出正确的结果。

  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

  试题程序:

   

  

  四、程序设计题

  编写函数fun,其功能是:将两个两位数的正整数a,b合并成个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和各位上。

  例如,当9=45b=12时,调用该函数后,c=5142

  注意:部分源程序给出如下。数据文件IN.DAT中的数据不得修改。

  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入编写的若干语句。

  试题程序.

   

 

展开全文
评论(0条) 发表
Copyright © 2004-
考试吧(m.566.com)北京美满明天科技有限公司
社会统一信用代码:91110108MA01WU311X
帮助中心