2017年计算机二级考试C语言备考习题
以下是百分网小编为大家整理的2017年计算机二级考试C语言备考习题,大家可以来做一做,巩固一下自己的知识。

选择题
1.在深度为5的满二叉树叶中,叶子结点的个数为( )。
A.32
B.31
C.16
D.15
2.软件生命周期中,花费最多的阶段是( )。
A.详细设计
B.软件编码
C.软件测试
D.软件维护
3.视图设计一般有3种设计次序,下列不属于视图设计次序的是( )。
A.自顶而下
B.由内向外
C.由外向内
D.自底向上
4.下列数据结构中,能用二分法进行查找的是( )。
A.顺序存储的有序线性表
B.结性链表
C.二叉链表
D.有序线性链表
5.以下叙述中错误的是( )。
A.对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B.数组名代表的是数组所占存储区的首地址,其值不可改变
C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D.可以通过赋初值的方式确定数组元素的个数
6.以下只有在使用时才为该类型变量分配内存的存储类型说明是( )。
A.auto和static
B.auto和register
C.register和static
D.extern和register
7.下列可作为C语言赋值的语句的是( )。
A.x一3,y=5
B.a=b=6
C.i--;
D.a,c
8.若整型变量a、b、c、d中的值依次为2、2、3、4,则条件表达式a A.1
B.2
C.3
D.4
9.下列叙述中错误的是( )。
A.线性表是由n个元素组成的一个有限序列
B.线性表是一种线性结构
C.线性表的所有结点有且仅有一个前件和后件
D.线性表可以是空表
10.以下程序执行后sum的值是( )。
main()
{ int i,sum;
for(i=1;i<6;i++)sum+=i:
printf("1%d\n",sum):
}
A.15
B.14
C.不确定
D.0
11.设j为Int型变量,则下面for循环语句的执行结果是( )。
for(j=10;j>3;j--)
{ if(j%3)j--;
--j;--j;
printf("%d",j);
}
A.6 3
B.7 4
C.6 2
D.7 3
12.表示关系X<=Y<=Z的C语言表达式为( )。
A.(X<=Y)&&(Y<=Z)
B.(X<=Y)AND(Y<=Z)
C.(X<=Y<=Z)
D.(X<一Y)&(Y<一Z)
13.设有如下定义:
int arr[]={6,7,8,9,10);
int*ptr:
ptr=arr;
*(ptr2)=2;
printf("%d,%d\n",*ptr,*(ptr2)):
则下列程序段的输出结果为( )。
A.8,10
B.6,8
C.7,9
D.6,2
14.设有定义语句:
int x[-6]={2,4,6,8,5,7),*p=X,i;
要求依次输出X数组6个元素中的值,不能完成此操作的语句是( )。
A.for(i=0;i<6;i++)printf("%2d",*(p++));
B.for(i=0;i<6;i++)printf("%2d",*(pq-i));
C.for(i=0;i<6;i++)printf("%2d",*p++);
D.for(i=0;i<6;i++)printf("%2d",*(p)++);
15.数字字符0的ASCII值为48,运行以下程序的输出结果是( )。
main()
( char a=’1’,b=’2’;
printf("%C,",b++);printf("%d\n",b—a);}
A.3,2
B.50,2
C.2,2
D.2,50
16.设有如下定义:
int(*ptr)();
则以下叙述中正确的是( )。
A.ptr是指向一维组数的指针变量
B.ptr是指向int型数据的指针变量
C.ptr是指向函数的指针,该函数返回一个int型数据
D.ptr是一个函数名,该函数的返回值是指int型数据的指针
17.设有定义的语句:“char c1=92,c2=92;”,则以下表达式中的值为零的是( )。
A.c1^c2
B.c1&c2
C.~c2
D.c1 | c2
18.以下程序的输出结果是( )。
void fun(int*a,int i,int i)
{int t;
if(i { t=a[i[;a[i]=a[j];a[j]一t;
i++;j--;
fun(a,i,j);
}
}
main()
{ int K[]={2,6,1,8},i;
fun(x,0,3);
for(i=0;i<1;i++)printf("%2d",x[i]);
printf("\n");
}
A.1,2,6,8
B.8,6,2,1
C.8,1,6,2
D.8,6,1,2
19.有以下程序:
main()
{int i,j;
for(j=10;j<11;j++)
{ for(i=9;i if(!(j%i))break;
if(i==j-1)
printf("%d",j);
}
}
输出结果是( )。
A.11
B.10
C.9
D.10 11
参考答案:
1.C。【解析】根据二叉树的性质及定义,一棵深度为k 且有2k-1个结点的二叉树为满二叉树。满二叉树的叶子结点为最后一层的结点数,又根据满二叉树的性质,在满二叉树的第i层上至多有2i-1个结点。因此深度为5的满二叉树的叶子结点数为25-1=16个。
2.D。【解析】本题考查对软件生命周期的理解,软件生命周期整体上可分为定义阶段、开发阶段和维护阶段。其中定义阶段包括可行性研究与计划制订和需求分析;开发阶段包括概要设计、详细设计、开发和测试;维护阶段是一个单独阶段,不包含在开发阶段内,它是所花费用最多的一个阶段。
3.C。【解析】视图设计的设计次序分3种:自顶向下、自底向上和由内向外。它们为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握。
4.A。【解析】二分法查找只用于顺序存储的有序线性表,而顺序查找用在顺序存储的非有序线性表和线性链表。
5.C。【解析】数组下标从0开始,当数组元素的下标超出了定义的范围时,系统不会出“下标越界”的信息,运行会出错,因此在编程时务必检查下标是否越界。
6.B。【解析】在用静态static与外部extern定义变量时,系统立刻给其分配内存,而定义自动类auto与强制放入寄存器register类型变量时,只有当使用时才分配内存。
7.C。【解析】本题考查赋值语句,而选项A、B是表达式,不合题意,选项D中强制类型转换,应把类型名用括号括起来,选项C中i--也可写成i=i-1,故选择c选项。
8.C。【解析】本题考查三目运算符a 9.C。【解析】线性表可以是空表,在线性表中,第一个结点没有前驱结点(前件),最后一个结点没有后继结点,其他结点有且只有一个前驱点(后继点)。
10.C。【解析】sum+=i等价于sun+i,在本题中sum 没有赋初值,而题中只输出sum的值,因此整个结果为不确定值。
11.B。【解析】当j=10时,for循环成立,j%3为1,if条件也为真,当执行完j--后,j为9,再执行“--j;--J;”后,j的值为7,因此输出7,继续循环执行j--后j为6,当j
=6时for循环成立,j%3为0,if条件为假,此时执行“-- j;--j;”后,j为4,输出4,再继续循环执行j--后j为3,当j=3时,for循环不成立,退出循环,故选择8选项。
12.A。【解析】题中X<=Y<=Z的意思为X<=Y 并且Y<=Z,在c语言中,要表示“且”的关系,应用“与”逻辑运算符,即“&&”,故选择A选项。
13.D。【解析】程序中ptr指针指向数组art的首地址,*ptr=arr[0]=6,*(ptr2)=2,故选D。
14.D。【解析】本题要求输出每个元素的值,D选项中(*p)++等价于*p=*p+1,其仅仅是对*p加1,并没有达到输出其每个值的作用。
15.C。【解析】b++是先用表达式的值然后自增l,因此表达式值为’2 ’,b为’3 ’;b-a=’3 ’-’1’=2,因此最后输出的结果为2,2,前一个为字符2,后一个为数字2。
16.C。【解析】本题中int(*ptr)()的含义是指向函数
的指针变量,其为指向函数的指针变量,该函数返回一个int 型数据,故选择C选项。
17.A。【解析】当值相同时按位异或,则为0,按位或与按位与时仍不变,负数也为非0。
18.C。【解析】本题用了函数调用,fun中if语句成立则进行i,j的交换,用到主函势中则为把下标为0、3,1、2互换,因此,当执行完后X的数组为8,1,6,2,故选择C选项。
19.B。【解析】本题考多循环的使用,当j=10,i=9时, 循环成立,第一个if条件为假,第二个if条件i==j-1成立,则输出j的值为10,接者执行i++后,i为10;当i为10,for循环不成立,退出内层循环,此时执行j++后,j为11,循环不成立,退出循环。
20.D。【解析】scanf函数读取的是char型数据,所以回车时输入的换行符也是有效字符。于是cl,c2,c3,c4的内容分别是1,2,3,’\n’。
【计算机二级考试C语言备考习题】相关文章:
计算机二级C语言考试备考复习题及答案10-10
计算机二级考试C语言备考复习题201710-11
计算机二级C语言备考习题及答案201710-09
2017计算机二级C语言备考习题及答案08-02
2017计算机二级C语言考试习题10-20
2017年计算机二级C语言备考习题10-16