国家二级(C语言)机试模拟试卷131
选择题
1.下列有关数据库的描述中正确的是( )。(A)
A. 在需求分析阶段建立数据字典
B. 在概念设计阶段建立数据字典
C. 在逻辑设计阶段建立数据字典
D. 在物理设计阶段建立数据字典
解析:数据字典是在需求分析阶段建立的。
2.数据库系统的三级模式不包括( )。(A)
A. 数据模式
B. 内模式
C. 外模式
D. 概念模式
解析:数据库系统的三级模式是概念模式、内模式和外模式。
3.面向对象设计方法的主要特征是( )。(A)
A. 继承
B. 自顶向下
C. 模块化
D. 逐步求精
解析:面向对象设计方法的基本特征:封装性、继承性、多态性、抽样性。
4.关于C语言常量的叙述中错误的是( )。(A)
A. 经常被使用的变量可以定义成常量
B. 常量分为整型常量、实型常量、字符常量和字符串常量
C. 常量可分为数值型常量和非数值型常量
D. 所谓常量,是指在程序运行过程中,其值不能被改变的量
解析:常量和变量的概念不同,常量是指在程序运行中,其值不能被改变的量,变量是在程序运行过程中会发生变化的量,所以选项A不正确,常量分为整型常量、实型常量、字符常量和字符串常量,也可分为数值型常量和非数值型常量。
5.以下关于C语言的相关叙述中正确的是( )。(A)
A. 简单C语句必须以分号结束
B. C程序中的每一行只能写一条语句
C. C语言程序中的注释必须与语句写在同一行
D. C语句必须在一行内写完
解析:简单C语句必须以分号结束,多条语句可以写在同一行上,注释也可以单独成行或有多行注释,另外,C语句不一定要写在一行上,除了特别的一些地方(如字符串引用)之外,C语句可以用硬回车连接。
6.以下关于算法的叙述中错误的是( )。(B)
A. 算法正确的程序可以有零个输入
B. 算法正确的程序可以有零个输出
C. 算法正确的程序最终一定会结束
D. 算法正确的程序对于相同的输入一定有相同的结果
解析:程序可以不用输入,但一定要有输出,所以B不正确;算法正确的程序一定会结束,而且相对于相同的输入输出一定相同。
7.关于C语言的用户标识符中,不合法的是( )。(C)
A. a_1
B. Xa3c
C. A一一x
D. _1
解析:C语言的用户标识符由数字、字母和下划线构成,选项C中出现的短线不是下划线,所以不合法。
8.关于C语言的赋值语句,合法的是( )。(B)
A. a=b==1;
B. e=n%3;
C. x+y=u;
D. x=2=6+2;
解析:常量不能被赋值,所以D错,表达式不能被赋值,所以C错,赋值运算的级别高手逻辑运算符,所以A错,若写成a=(b==1)则是合法的表达式。
9.在使用scanf(’’%2d%f’’,&a,&b);语句并从键盘输入123 456后,a和b的值分别是( )。(A)
A. 12和3.0
B. 123和456.0
C. 12和456.0
D. 12和345 6.0
解析:scanf是严格执照格式输入的,2d指只输入两位数字,所以a=12,b=3,另外,题目中没有%c格式用来输入字符,所以空格将会被看作是分隔符(此处为结束符)。
10.下列C语言语句会出现错误的是( )。(A)
A. char a=’123’
B. char a=’\n’;
C. char a=’a’;
D. char =’’\x2d’’;
解析:选项A将一个字符串赋给了一个字符变量是不正确的;选项B和C是字符赋值,正确;选项D是十六进制表示法。也正确。
11.下列表达式的值当变量c的值不为2、4、6时也为“真”的是( )。(D)
A. (c>=2&&c<=6)&&(c%2!=1)
B. (c=2)‖(c==4)‖(c==6)
C. c>=2&&c<=6)&&!(c%2)
D. (c>=2&&c<=6)‖(c!=3)‖(c!=5)
解析:‖是或运算符,即只要其中有一个表达式为真,结果即为真,当c=3或c=5时,选项D最左边的表达式为真,所以整个表达式为真。
12.C语句中不能够正确计算下述公式的程序段是( )
f=(C)
A. if(x>=0) f=sqrt(x);
if(x<0) f=sqrt(-x);
B. if(x>=0) f=sqrt(x);
else f=sqrt(-x);
C. f=sqrt(x)
if(x<0) f=sqrt(-x);
D. f=sqrt(x>=0?x:-x);
解析:选项C中在没有判断x的正负之前便进行了开方运算,所以和公式不符。
13.有以下程序:
#include
main()
{ int m=20;
while(m--);
printf(’’y=%d\n’’,m);
}
程序执行后的输出结果是( )。(A)
A. m=-1
B. m=0
C. m=1
D. while构成无限循环
解析:注意while循环体为空语句,m是先使用值再减1,所以当m=0时退出循环,再减1,结果为一1。
14.有以下程序:
#include
main()
{int i;
for(i=1;i<=40;i++)
{if(i++%5==0)
if(i++%8==0)print(’’%d’’,i)
}
printf(’’%d’’,i);
}
程序执行后的输出结果是( )(A)
A. 17
B. 24
C. 32
D. 12
解析:i++是在表达式中先使用i的值,表达式执行完成后将i加1。题目的意思是在1~40的数中先找到能被5整除的数,如5,10,15,20等,若找到则将其加1并判断是否能被8整除,如果能则再加1,执行输出操作。所以只有15能被5整除,且加1后也能被8整除,再加1后为17。
15.有以下程序:
#include
main()
{int s;
scanf(’’%d’’,&s);
while(s>0)
{switch(s)
{case 1:printf(’’%d’’,s+5)
case 2:printf(’’%d’’,s+4);break;
case 3:printf(’’%d’’,s+3);
case 4:printf(’’%d’’,s+2);
default:printf(’’%d’’,s+1
本文档预览:3600字符,共17049字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载