计算机等级

计算机二级考试C语言复习题及答案

时间:2024-11-03 05:01:13 计算机等级 我要投稿
  • 相关推荐

2017计算机二级考试C语言复习题及答案

  做好复习计划多做复习题是备考的关键。为了方便考生复习计算机二级C语言考试yjbys小编为大家带来的计算机二级考试C语言复习题。欢迎阅读。

2017计算机二级考试C语言复习题及答案

  一、选择题

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

  A、1

  B、4

  C、4.333333

  D、4.6

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

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

  A、char a(10);

  B、 int a[];

  C、int k=5,a[k];

  D、char a[3]={‘a’,’b’,’c’};

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

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

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

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

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

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

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

  A、int 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语言中对一维整型数组的正确定义为 D 。

  A、int a(10);

  B、int n=10,a[n];

  C、int n;a[n];

  D、#define N 10

  int a[N];

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

  A、a[10]

  B、a[3.5]

  C、a(5)

  D、a[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 )。

  A、int *p=&i,i;

  B、int *p,i;

  C.int i,*p=&i;

  D、int i,*p;

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

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

  A、p=q

  B、*p=*q

  C、n=*q

  D、p=n

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

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

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

  选项C,n=*q 等价于n=n;

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

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

  A、int p=*a;

  B、int *p=a;

  C、int p=&a;

  D、int *p=&a;

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

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

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

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

  A、a[p]

  B、p[a]

  C、*(p+2)

  D、p+2

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

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

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

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

  选项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

  D、P+8

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

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

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

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

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

  选项D,P+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/2,a/=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+n一1=150,n=70.5,由于结点个数必须是整数,所以不可能有题目中这样的二叉树。故选择D选项。

【计算机二级考试C语言复习题及答案】相关文章:

计算机二级《C语言》模拟试题及答案10-24

计算机二级C语言真题及答案07-11

计算机二级考试C++试题及答案09-20

国家计算机二级c语言题库及答案09-05

全国计算机二级c语言题库试题及答案07-19

计算机二级考试C语言知识点09-30

计算机C语言试题及答案07-17

2016年计算机二级c语言真题及答案09-19

2017年计算机二级考试C语言考试试题07-26

2017年c语言二级考试技巧07-17