1、国家二级 C语言机试(选择题)模拟试卷 84及答案解析(总分:80.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.算法的空间复杂度是指( )。(分数:2.00)A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间2.下列叙述中正确的是( )。(分数:2.00)A.一个逻辑数据结构只能有一种存储结构B.逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率3.下列关于类、对象、属性和
2、方法的叙述中,错误的是( )。(分数:2.00)A.类是对一类具有相同的属性和方法对象的描述B.属性用于描述对象的状态C.方法用于表示对象的行为D.基于同一个类产生的两个对象不可以分别设置自己的属性值4.在软件开发中,需求分析阶段产生的主要文档是( )。(分数:2.00)A.数据字典B.详细设计说明书C.数据流图说明书D.软件需求规格说明书5.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和( )。(分数:2.00)A.编码设计B.测试阶段C.运行阶段D.物理设计6.在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是( )。(分数:2.00)A.并B.交C.投影D.除7.下列
3、叙述中,正确的是( )。(分数:2.00)A.软件交付使用后还需要进行维护B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令8.设一棵满二叉树共有 15个结点,则在该满二叉树中的叶子结点数为( )。(分数:2.00)A.7B.8C.9D.109.设 R是一个 2元关系,有 3个元组,S 是一个 3元关系,有 3个元组。如 T=RS,则 T的元组的个数为( )。(分数:2.00)A.6B.8C.9D.1210.下列选项中,不属于数据库管理的是( )。(分数:2.00)A.数据库的建立B.数据库的调整C.数据库的监控D.数据库的校对11.
4、对于一个正常运行的 C程序,下列叙述中正确的是( )。(分数:2.00)A.程序的执行总是从 main函数开始,在 main函数结束B.程序的执行总是从程序的第一个函数开始,在 main函数结束C.程序的执行总是从 main函数开始,在程序的最后一个函数中结束D.程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束12.以下选项中与 if(a=1)a+;else a=b;语句功能不同的语句是( )。(分数:2.00)A.switch(a) case 0:a=b;break; default:a+; B.switch(a=1) case 0:a+; default:a=b; C.s
5、witch(a) default:a=b;break; case l:a+; D.a=(a=1)?(a+):b13.以下不合法的用户标识符是( )。(分数:2.00)A.804zhangB._hhC.yy614D.If14.己知 char a;int b:float c;double d;则表达式 a-b+c-d结果为( )型。(分数:2.00)A.doubleB.floatC.intD.char15.假设有语句 sizeof(double),则它是( )。(分数:2.00)A.一个整型表达式B.一个双精度浮点型表达式C.一种函数调用D.一种函数定义16.若变量都己正确说明,则以下程序段输出结
6、果为( )。 #include main() char a=a; int b=2: printf(ab?“*a=d“:“#b=d“,a,b); (分数:2.00)A.*a=3B.#b=3C.*a=3#b=5D.全部错误17.若有以下定义(设 int类型变量占 2个字节) int i=8,j=9; 则以下语句: printf(“i=d,j=dn“,i,j); 输出的结果是( )。(分数:2.00)A.i=8,j=9B.i=d,j=8C.i=d,j=dD.8,918.设 a和 b均为 int型变量,且 a=6,b=11,则能使值为 3的表达式是( )。(分数:2.00)A.b(a4)B.b(a-a
7、5)C.ba-a5D.(ba)-(a4)19.有关 return语句说法不正确的是( )。(分数:2.00)A.系统默认的返回值类型为整型,故当函数的返回值为 int型时,在函数定义时,返回值的类型说明可以省略。B.当函数有返回值时,凡是允许表达式出现的地方,都可以调用该函数。C.当函数没有返回值时,函数的返回值类型可以说明为 void型,它表示“无类型”或“空类型”。D.函数的返回值类型必须与 return语句中的表达式值的类型一致,但 C语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将 return语句中表达式的值转换为函数的返回值类型。20.有以下程序: #incl
8、ude main() int i=0,a=O; while(iA.62B.63C.23D.3621.在下列选项中,没有构成死循环的程序段是( )。(分数:2.00)A.int i=100; for(;) i=i10+1; if(i10)break; B.while(1);C.int k=0: do+k;while(k12?x+10:x-12; printf(“dn“,y); (分数:2.00)A.0B.22C.12D.1027.运行下面程序时,从键盘输入字母 A,则输出结果是( )。 #include main() char ch; ch=getchar(); switch(ch) caseA
9、:printf(“AAAAn“); caseB:printf(“BBBBn“); default:printf(“CCCCn“); (分数:2.00)A.AAAAB.AAAA BBBBC.AAAA BBBB CCCCD.AAAA CCCC28.以下叙述正确的是( )。(分数:2.00)A.只能在循环体内和 switch语句体内使用 break语句B.contiune语句的作用是结束整个循环的执行C.在循环体内使用 break语句或 continue语句的作用相同D.从多层循环嵌套中退出时,只能使用 goto语句29.下列叙述中错误的是( )。(分数:2.00)A.在 C语言中,对二进制文件的访
10、问速度比文本文件快B.在 C语言中,随机文件以二进制代码形式存储数据C.语句 FILE fp;定义了一个名为 fp的文件指针D.C语言中的文本文件以 ASCII码形式存储数据30.若输入“abcdef”、“abdef”,以下程序的输出结果为( )。 #include #include main() int n; char s120,s220,*p1,*p2; scanf(“s“,s1); scanf(“s“,s2); p1=s1; p2=s2; n=strcmp(p1,p2); printf(“dn“,n);(分数:2.00)A.-1B.0C.abcdefD.abdef31.以下语句定义正确的
11、是( )。(分数:2.00)A.int a14=1,2,3,4,5;B.float a3=1,2,3;C.long a23=1,1,2,1,2,3,0,0;D.double a3=0;32.下述程序的输出结果是( )。 #include void main() int a5=1,2,3,4,5; int *p=a,*q=&p; printf(“d“,*(p+); printf(“d“,*q); (分数:2.00)A.22B.11C.34D.1233.字符串“ABCDEF“的长度是( )。(分数:2.00)A.11B.10C.5D.334.若二维数组 a有 m列,则在 aij前的元素个数为( )
12、。(分数:2.00)A.j*m+iB.i*m+jC.j*m+i+1D.i*m+j+135.下列程序的运行结果是( )。 #include void fun(int*s,int*p) static int t=3; *P=st; t-; void main() int a=2,3,4,5,k,x; for(k=0;kA.5,4,3,2,B.2,3,4,5,C.2,2,2,2,D.5,5,5,5,36.以下有关宏替换的叙述不正确的是( )。(分数:2.00)A.双引号中出现的宏名不替换B.使用宏定义可以嵌套C.宏定义仅仅是符号替换D.宏名必须用大写字母表示37.设有定义:char*c:,以下选项中
13、能够使字符型指针 c正确指向一个字符串的是( )。(分数:2.00)A.char str=“string“;c=str;B.scanf(“s“,c);C.c=getchar();D.char str=“string“;strcpy(“c,str“)38.有以下程序: #include #include struct A int a;char b10;double c; void f(struct A*t); main() struct A a=1001,“ZhangDa“ 10980; f(&a);printf(“d,s,61 fn“,aa,ab,ac); void f(struct A *t
14、) t-a=1002;strcpy(t 一b,“ChangRong“); t-c=12020; 程序运行后的输出结果是( )。(分数:2.00)A.1001,zhangDa,10980B.1002,ChangRong,12020C.1001,ChangRong,10980D.1002,zhangDa,1202039.下述程序的输出结果是( )。 #include void main() char a=1,b=2; char c=abint-unsigned-long-float-double;赋值运算中最终结果的类型,以赋值运算符左边变量的类型为准,即赋值运算符右端值的类型向左边变量的类型看齐
15、,并进行相应转换。15.假设有语句 sizeof(double),则它是( )。(分数:2.00)A.一个整型表达式 B.一个双精度浮点型表达式C.一种函数调用D.一种函数定义解析:解析:sizeof(double)是 C语言内部规定的一个计算参数(double)在计算机的内存中所占用的字节数量的函数,它返回一个整数值。16.若变量都己正确说明,则以下程序段输出结果为( )。 #include main() char a=a; int b=2: printf(ab?“*a=d“:“#b=d“,a,b); (分数:2.00)A.*a=3B.#b=3C.*a=3#b=5D.全部错误 解析:解析:本
16、题考查 printf函数的格式和三目运算符“?:”的使用。printf 函数中格式说明符之前插入的任何字符都原样输出。本题中“ab”为真,所以返回“*a=97”。17.若有以下定义(设 int类型变量占 2个字节) int i=8,j=9; 则以下语句: printf(“i=d,j=dn“,i,j); 输出的结果是( )。(分数:2.00)A.i=8,j=9B.i=d,j=8 C.i=d,j=dD.8,9解析:解析:本题考查 printf函数的格式。printf 函数中格式说明符之前插入的任何字符都按原样输出。对于 printf函数,有两个说明,第一个后面的内容要按原样输出。18.设 a和 b
17、均为 int型变量,且 a=6,b=11,则能使值为 3的表达式是( )。(分数:2.00)A.b(a4)B.b(a-a5)C.ba-a5D.(ba)-(a4) 解析:解析:表达式“ab”表示的是求 a除以 b的余数。因此,选项 A):(64)=2,112=1;选项 B):(665)=5,115=1;选项 C):11665=4;选项 D):(116)一(64)=3。19.有关 return语句说法不正确的是( )。(分数:2.00)A.系统默认的返回值类型为整型,故当函数的返回值为 int型时,在函数定义时,返回值的类型说明可以省略。B.当函数有返回值时,凡是允许表达式出现的地方,都可以调用该
18、函数。C.当函数没有返回值时,函数的返回值类型可以说明为 void型,它表示“无类型”或“空类型”。D.函数的返回值类型必须与 return语句中的表达式值的类型一致,但 C语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将 return语句中表达式的值转换为函数的返回值类型。 解析:解析:函数的返回值类型一般与 return语句中的表达式值的类型一致,但 C语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将 return语句中表达式的值转换为函数的返回值类型。20.有以下程序: #include main() int i=0,a=O; while(iA.62B.63C.23D.36 解析:解析:本题考查 while循环。当 i