计算机二级考试c语言考试技巧
- 格式:pdf
- 大小:211.22 KB
- 文档页数:14
计算机二级考试c
语言考试技巧
一、选择题一、选择题(请在【答题】菜单上选择【选择题】命令,启动选择题测试程序,(请在【答题】菜单上选择【选择题】命令,启动选择题测试程序,
按照题目上的内容进行答题。作答选择题时键盘被封锁,使用键盘无效,考生须
使用鼠标答题。选择题部分只能进入一次,退出后不能再次进入。选择题部分不
单独计时。)
1
、以下选项中,当x
为大于1
的奇数时,值为0
的表达式是( )。
A
. x%2==0
B
. x/2
C
. x%2!=0
D
. x%2==1
【答案】
A
【解析】
当x
为大于1
的奇数,x%2==1
,则表达式x%2==0
为假(即值为0
),答案选择A
选项。
2
、有以下程序:
#include
main( )
{
int i, array[6] = {1, 5, 0, 4};
for (i=0; i<5; i++)
printf("%d,", array[i] & 4);
printf("\n");
}
程序运行后的输出结果是( )。
A
. 0,4,0,4,0,
B
. 1,5,0,4,0,
C
. 1,5,5,4,0,
D
. 1,2,1,2,0
【答案】
A
【解析】
本函数的功能是将数组中所有元素与4
进行与运算,首先将元素转换为二进制,然后和二进制数100
(十进制4
)进行与运
算,第一个元素为001&100
即为000
,也就是0
,同理可得答案分别为0
、4
、0
、4
、0
,注意第五位按照0
进行运算。答案选
择A
选项。
3
、以下叙述中错误的是( )。
A
.
使用三种基本结构构成的程序只能解决简单问题
B
.
结构化程序由顺序、分支、循环三种基本结构组成
C
. C
语言是一种结构化程序设计语言
D
.
结构化程序设计提倡模块化的设计方法
【答案】
A
【解析】
结构化程序由顺序、分支和循环三种基本结构组成,选项B
正确。由三种基本结构组成的算法可以解决任何复杂的问题,而不
只是解决简单问题,选项A
错误。由三种基本结构所构成的算法称为结构化算法;由三种基本结构所构成的程序称为结构化
程序,C
语言是一种结构化程序设计语言。结构化程序通过函数实现模块化的设计方法。选项C
、D
正确。答案选择A
选项。
4
、设有定义:char p[]={'1','2','3'},*q=p;
,以下不能计算出一个char
型数据所占字节数的表达式是( )。
A
. sizeof(p)
B
. sizeof(char)
C
. sizeof(*q)
D
. sizenf(p[0])
【答案】
A
【解析】
p
是char
类型数组,sizeof(p)
计算的是数组p
中所有元素所占用的字节数,而不是char
型数据所占字节数。答案选择A
选项。
5
、对于现实世界中事物的特征,在实体-
联系模型中使用( )。
A
.
属性描述
B
.
关键字描述
C
.
二维表格描述
D
.
实体描述
【答案】
A
【解析】
在实体-
联系模型中,用属性来描述现实世界中事物的特征。答案选择A
选项。
6
、有以下程序
#include
main()
{
int x=1, y=0;
if (!x) y++;
else if (x==0)
if (x) y+=2;
else y+=3;
printf("%d\n", y);
}
程序运行后的输出结果是( )。
A
. 0
B
. 2
C
. 1
D
. 3
【答案】
A
【解析】
在该题中,选择结构的表达式都不成立,所以整个选择语句都没有执行,y
值没有发生改变,答案选择A
选项。
7
、有以下程序
#include
int m1(int x,int y)
{
return x<=y ? x :y;
}
int m2(int x,int y)
{
return x<=y ? y :x;
}
int fun(int a,int b)
{
return a+b;
}
main()
{
int x=2,y=3,z=1;
printf("%d\n", fun(m1(x,y),m2(y,z)));
}
程序的运行结果是( )。
A
. 5
B
. 6
C
. 4
D
. 3
【答案】
A
【解析】
函数m1()
返回两个参数中较小的数值,函数m2()
返回两个参数中较大的数值,函数fun()
返回两个参数之和,所以
fun(m1(x,y), m2(y,z)) = fun(m1(2,3), m2(3,1)) = fun(2,3) = 5,答案选择A
选项。
8
、以下叙述中错误的是( )。
A
. C
程序对预处理命令行的处理是在程序执行的过程中进行的
B
.
预处理命令行的最后不能以分号表示结束
C
. #define MAX
是合法的宏定义命令行
D
.
在程序中凡是以“#”
开始的语句行都是预处理命令行
【答案】
A
【解析】
在C
语言中,编译预处理是在编译程序对C
源程序进行编译前执行的,选项A
错误。以“#”
开头的行都称为“
编译预处理命令
行”
,其中的末尾不得用“;”
结束,区别语句的定义和说明语句,选项B
、D
正确。C
项中的宏定义为不带参数的宏命令行,宏名
之后可以有替换文本,也可以没有,选项C
正确。答案选择A选项。
9
、在数据库设计中,描述数据间内在语义联系得到E-R
图的过程属于( )。
A
.
逻辑设计阶段
B
.
需求分析阶段
C
.
概念设计阶段
D
.
物理设计阶段
【答案】
C
【解析】
数据库设计的需求分析阶段是数据库设计的第一阶段,这一阶段收集到的基础数据和一组数据流图是下一步设计概念结构的
基础。数据库概念设计的目的是分析数据间内在的语义关联,在此基础上建立一个数据的抽象模型。数据库的逻辑设计主要
工作是将E-R
图转换成指定的关系数据库中的关系模式。数据库物理设计的主要目标是对数据库内部物理结构作调整并选择合
理的存取路径,以提供数据库访问速度及有效利用存储空间。答案选择C
选项。
10
、以下叙述中正确的是( )。
A
.
在C
语言中,预处理命令行都以“#”
开头
B
.
预处理命令行必须位于C
源程序的起始位置
C
. #include
必须放在C
程序的开头
D
. C
语言的预处理不能实现宏定义和条件编译的功能
【答案】
A
【解析】
“
编译预处理”
就是在C
编译程序对C
源程序进行编译前,由编译预处理程序对这些编译预处理命令行进行处理的过程。A
项正
确,在C
语言中,凡是以“#”
号开头的行,都称为“
编译预处理”
命令行。B
项错误,预处理命令行可以出现在程序的任何一行的
开始部位,其作用一直持续到源文件的末尾;C
项错误,#include
可以出现在程序的任意一行的开始部位;D
项错
误,预处理可以实现宏定义、条件编译和文件包含。答案选择A
选项。
11
、以下叙述中正确的是( )。
A
.
如果p
是指针变量,则&p
是不合法的表达式
B
.
如果p
是指针变量,则*p
表示变量p
的地址值
C
.
在对指针进行加、减算术运算时,数字1
表示1
个存储单元的长度
D
.
如果p
是指针变量,则*p+1
和*(p+1)
的效果是一样的
【答案】
C
【解析】
考查指针的用法。A
项错误,&p
表示变量p
的地址;B
项错误,*p
表示p
的值;C
项正确,在对指针进行加、减运算时,数
字“1”
不再代表十进制整数“1”
,而是指1
个存储单元长度;D
项错误,*p+1
是先取p
的值,然后执行+1
操作,*(p+1)
是先对指
针移动1
个存储空间,然后取值。答案选择C选项。
12
、关于“do{
循环体}while(
条件表达式)”
,以下叙述正确的是( )。
A
.
循环体的执行次数总是比条件表达式的执行次数多一次
B
.
条件表达式的执行次数总是比循环体的执行次数多一次
C
.
条件表达式的执行次数与循环体的执行次数一样
D
.
条件表达式的执行次数与循环体的执行次数无关
【答案】
D
【解析】
考查do-while
循环语句。其执行过程为:先执行do
循环体语句,然后判定圆括号内的表达式,如果为真则继续执行do
循环体
语句,如果为假则结束循环。考虑情况一:即由于条件表达式为假而退出循环,此时二者执行次数一样;情况二:即在循环
体中执行了break
语句而退出循环,此时条件表达式的执行次数比循环体的执行次数少一次。因此,答案选择D
选项。
13
、设有定义:
int a;float b;
执行scanf("%2d%f",&a,&b);
语句时,若从键盘输入876 543.0
,则a
和b
的值分别是( )。
A
. 87
和6.0
B
. 876
和543.0
C
. 87
和543.0
D
. 76
和543.0
【答案】
A
【解析】
scanf
函数的一般形式为:scanf(
格式控制,
地址表列);
。其中,“
格式控制”
是用双引号括起来的字符串,也称“
转换控制字符
串”
,它包括两种信息:①格式说明,由“%”
和格式字符组成;②普通字符,即需要原样输入的字符。“
地址表列”
是需要接收
输入数据的一系列变量的地址。本题中的“
格式控制”
是“%2d%f”
,其中%2d
的意思是要输入一个整数,但该整数最宽只占2
个
字符,而%f
是要输入一个浮点数。而题目要求输入的是876
和543.0
,所以scanf
函数将87
赋给a
,6
赋给b
。答案选择A
选项。
14
、若有以下程序
#include
#define N 4
void fun(int a[][N], int b[], int flag)
{
int i,j;
for(i=0; i
{
b[i] = a[i][0];
for(j=1; j
if (flag?(b[i] > a[i][j]) : (b[i] < a[i][j]))
b[i] = a[i][j];
}
}
main()
{
int x[N][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}, y[N],i;