《国家二级C语言机试(选择题)模拟试卷107(题后含答案及解析).pdf》由会员分享,可在线阅读,更多相关《国家二级C语言机试(选择题)模拟试卷107(题后含答案及解析).pdf(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、国家二级国家二级 C C 语言机试(选择题)模拟试卷语言机试(选择题)模拟试卷 107107(题后含答案及解析题后含答案及解析)题型有:1.选择题选择题1 下列选项中不属于结构化程序设计原则的是()。A可封装B自顶向下C模块化D逐步求精正确答案:A解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用 goto 语句,所以选择 A。知识模块:选择题2 有两个关系 R 和 T 如下:则由关系 R 得到关系 T 的操作是()。A投影B交C选择D并正确答案:A解析:从表图中可以看出,关系 T 是从关系 R 中选取一部分字段(A 和 C)及其值构成新的关系,是一种纵向操作产生新列,属于投
2、影,正确选项为 A。知识模块:选择题3 有以下程序:#includestdio hmain()printf(dn”,NULL);程序运行后的输出结果是()。A1B变量无定义,输出不确定C1D0正确答案:D解析:NULL 为一个符号常量,对应的 ASC码值为 0,答案选 D。知识模块:选择题4 有以下程序:#includestdioh#define f(x)x*x*xmain()int a=3,s,t;s=f(a+1);t=f(a+1);printf(d,dn,s,t);程序运行后的输出结果是()。A10,64B10,10C64,10D64,64正确答案:A解析:C 语言中带参数的宏可以理解为用
3、参数直接替代定义式中的变量,而不经过任何修改。所以s=f(a+1)=a+1*a+1*a+1,t=f(a+1)=(a+1)*(a+1)*(a+1),所以有无括号的运算结果是不同的。知识模块:选择题5有以下程序:#includestdio hint f(int x,int y)return(yx)*x);voidmain()int a=3,b=4,c=5,d;d=f(f(a,b),f(a,c);printf(dn,d);程序运行后的输出结果是()。A9B10C8D7正确答案:A解析:考查函数的返回值。d=f(f(a,b),f(a,c)=f(ba)*a,(ca)*a)=f(3,6)=(63)*3=9
4、,所以答案选 A。知识模块:选择题6 以下叙述中正确的是()。A如果 p 是指针变量,则&p 是不合法的表达式B如果 p 是指针变量,则*p 表示变量 p 的地址值C在对指针进行加、减算术运算时,数字 1 表示 1 个存储单元的长度D如果 p 是指针变量,则*p+1 和*(p+1)的效果是一样的正确答案:C解析:考查指针的用法。指针进行算术运算的时候,数字“1”不再代表十进制整数“1”,而是指一个存储单元长度,选项 C 正确。指针变量存储的是其指向的变量的地址,其本身的地址仍用取地址运算符“&”求得,*p 表示的是 p指向的变量的值,选项 A、B 错。*p+1 表示的是指针 p 指向的变量值+
5、1,而*(p+1)则是取得了下一个变量的值,两者不同,选项 D 错。答案选 C。知识模块:选择题7 有以下程序:#includestdio hvoid main()unsigned char a=8,c;c=a3:printf(dn,c);程序运行后的输出结果是()。A32B16C1D0A32B16C1D0正确答案:C解析:字符常量与其 ASC码值一一对应,在计算的时候,可以使用该字符的 ASC码参与运算,输出时会根据格式控制符输出对应的字符或者 ASC码。右移运算符“”的运算规则是把左边运算数的各二进制位全部右移n位,n 取决于“”右边的数值。字符 a 的 ASC码值为 8,对应二进制为 1
6、000,所以 a3=1,输出的字符 c 的 ASC码值为 1,答案选 C。知识模块:选择题8 下列各项中,对对象概念描述正确的是()。A对象间的通信靠消息传递B对象是名字和方法的封装体C任何对象必须有继承性D对象的多态性是指一个对象有多个操作正确答案:A解析:对象之间进行通信的构造叫作消息,选项 A 正确、封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作,选项 B 错误。对象不一定必须有继承性,选项 C 错误,多态性是指同一个操作可以是不同对象的行为,选项 D 错误。知识模块:选择题9以下函数的功能是计算 a 的 n 次方并作为函数值返回:double f
7、un(doublea,int n)int i;double s=10;for(i=1;i=n;i+)S=_;return s:为实现上述功能,函数中下画线处应填入的是()。As*iBs*aCs+i*iDs+a*a正确答案:B解析:s 为 a 的(i1)次方的结果,所以令 s=s*a 即可得到 a 的 i 次方。知识模块:选择题10 有以下程序:#includestdiohint fun(int n)if(n)return fun(n1)+n;elsereturn 0;main()printf(dn,fun(3);程序的运行结果是()。A4B5C6D7正确答案:C解 析:fun函 数 是 一 个
8、 递 归 函 数,n=3,返 回f(3 1)+3=f(2)+3=f(1)+2+3=f(0)+1+2+3=0+6=6。知识模块:选择题11 有以下程序:#includestdiohmain()char ch=Z;ch=(chA+1)26+A;putchar(ch);printf(n);程序的运行结果是()。AZBYCBDA正确答案:D解析:z 的 ASC码是 90,A 的 ASC码是 65,所以 ch=(chA+1)26+A=2626+65=65,65 对应的字符即 A。知识模块:选择题12 有以下程序:#includestdio h#define N 4void fun(int a,int b
9、)inti;for(i=0;iN;i+)bi=aiN1i;main()int xNN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,yN,i;fun(x,y);for(i=0;iN;i+)printf(d,yi);printf(n);程序的运行结果是()。A1,2,3,4,B3,6,9,12,C4,7,10,13,D1,5,9,13,正确答案:C解析:调用 fun 函数,yi=xiN1i,N=4,x 是 4 行 4 列的二维数组。i=0 时,y0=x041=x03=4;j=1 时,y1=x1411=x12=7;i=2时,y2=x2412=x21=10;i=3 时
10、,y3=x30=13。知识模块:选择题13 若有定义:int a=1,b=2,c=3;,则执行表达式(a=b+c)(+b)后,a,b,c 的值依次为()。A1,2,3B5,3,2C5,2,3D5,3,3正确答案:C解析:表示或运算,当第一个表达式为真时,第二个表达式就不会被执行。根据优先级规则,两边都是括号,所以先计算(a=b+c),将 b+c 的值赋值给 a,则 a=5,而右边的括号不会被执行,所以 b=2,c=3。知识模块:选择题14 算法的空间复杂度是指()。A算法在执行过程中所需要的计算机存储空间B算法所处理的数据量C算法程序中的语句或指令条数D算法在执行过程中所需要的临时工作单元数正
11、确答案:A解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间,因此本题答案为 A。知识模块:选择题15 数据库管理系统是()。A操作系统的一部分B在操作系统支持下的系统软件C一种编译系统D一种操作系统正确答案:B解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和提供数据服务等,是一种在操作系统支持下的系统软件,因此本题答案为 B。知识模块:选择题16 若有 C 语言表达式 2+3*4+73,则以下选项中叙述正确的执行顺序是()。A先执行 3*4 得 12,再执行 2+12 得 14,再执行 73 得 2,最后执行 14+2得
12、16B先执行 3*4 得 12,再执行 73 得 25,最后执行 2+12+25 得 165C先执行 73 得 2,再执行 3*4 得 12,再执行 12+2 得 14,最后执行 2+14得 16D先执行2+3 得 5,再执行 5*4 得 20,再执行20+7 得 27,最后执行273 得 9正确答案:A解析:C 语言表达式的执行顺序是从左向右,当遇到优先级高的表达式组分时,先执行优先级高的表达式,故选项 A 正确。知识模块:选择题17 有以下程序:#includestdiohmain()char x=2,y=2,z;z=(y1)&(x1);printf(dn,z);程序的输出结果是()。A1
13、B0C4D8正确答案:B解析:本题考查位运算和&。y1 为 4,x1 为 1,二者与运算后为 0,故 B 选项正确 知识模块:选择题18 有以下程序:#includestdioh#includestringhmain()chara=1234,*b=ABC;printf(ddddn,strlen(a),sizeof(a),strlen(b),sizeof(b);程序运行后的输出结果是()。A4 5 3 4B4 3 2 1C4 5 3 3D4 5 1 3正确答案:A解析:对于字符数组a,含有4 个元素,所以strlen 为 4,而sizeof 包括最后隐藏的0,故sizeof 有 5 个。对于字符
14、串b,strlen 为 3,关键是sizeof,这里的sizeof 不再是指数组的长度,因为 b 是一个地址值,整型数据,所以占用了 4 个字节。知识模块:选择题19 若有以下程序:#includestdiohmain()int a=1,b=2,c=3,d=4,r=0;if(a!=1);else r=1;if(b=2)r+=2;if(C!=3);r+=3;if(d=4)r+=4;printf(dn,r);则程序的输出结果是()。A3B7C6D10正确答案:D解析:第一个 if 语句 a!=1 条件为假,所以执行 else 后的语句 r=1。第二个if 语句 b=2 条件成立,执行 r+=2,r
15、 的值变为 3,第三个 if 语句 c!=3 条件为假,所以不做任何操作。执行下面的 r+=3 操作,r 的值变为 6。判断第四个 if 条件,d=4 条件成立,执行 r+=4 操作,结果为 10。故 D 选项正确。知识模块:选择题20设有定义:int x23;则以下关于二维数组 x 的叙述中错误的是()。A元素 x0可看作由 3 个整型元素组成的一维数组B数组 x 可以看作由 x0和 x1两个元素组成的一维数组C可以用 x0=0;的形式为数组所有元素赋初值 0Dx0和 x1是数组名,分别代表一个地址常量正确答案:C解析:x0可看作由 3 个整型元素组成的一维数组,不可以用语句 x0=0;为数
16、组所有元素赋初值 0。故 C 选项正确。知识模块:选择题21 下列叙述中错误的是()。A系统总体结构图支持软件系统的详细设计B软件设计是将软件需求转换为软件表示的过程C数据结构与数据库设计是软件设计的任务之一DPAD图是软件详细设计的表示工具正确答案:A解析:详细设计的任务是为软件结构图而非总体结构图中的每一个模块确定实现算法和局部数据结构、用某种选定的表达工具表示算法和数据结构的细节,因此 A 选项描述错误。知识模块:选择题22 支持子程序调用的数据结构是()。A栈B树C队列D二叉树正确答案:A解析:栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表。在主程序调用子函数时要首先保存主
17、程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,所以 A 选项正确。知识模块:选择题23 有以下程序:#includestdiohmain()int a=3;a+=a=a*a;printf(dn,a);程序的输出结果是()。A0B9C3D12正确答案:D解析:等号“=”运算符是从右到左,且与“+、*”运算符比,优先级较低。首先计算 a*a,结果为 9,执行 a=a9 后 a 的值为6,然后执行 a+=a,即 a=a+a=6+(6),所以值为12。知识模块:选择题24 有以下程序:#includestdiohmain(
18、)int a=1,b=0;if(a)b+;else if(a=0)b+=2;else b+=3;printf(dn,b);程序运行后的输出结果是()。A0B1C2D3正确答案:C解析:“+”和“”运算,当以前缀形式出现时,则先进行加 1 或减1 操作,再进行其他运算;当以后缀形式出现时,则先进行其他运算,再进行加1 或减 1 操作。a 初始定义为 1,h 为 0,执行 a,a 的值变为 0,即 if 判断为假,执行 b+=2,输出 b 的值为 2。知识模块:选择题25 若有定义:char s30=0;运行时输入:This is a string回车则以下不能正确读入整个字符串 This isa
19、 string 到字符数组 s 中的语句组是()。Ascanf(s,s);Bgets(s);Cfor(i=0;(c=getchar()!=n;i+)si=c;Di=0;while(c=getchar()!=n)si+=c;正确答案:A解析:考查基本的字符串输入控制语句 知识模块:选择题26 以下关于 C 语言函数参数传递方式的叙述中正确的是()。A数据只能从实参单向传递给形参B数据可以在实参和形参之间双向传递C数据只能从形参单向传递给实参DC 语言的函数参数既可以从实参单向传递给形参,也可以在实参和形参之间双向传递,可视情况选择使用正确答案:A解析:数据只能由实参单向传递给形参称为“值传递”,
20、而不能由形参传回来给实参,A 选项正确;数组名、指针等作参数,实参传递给形参地是地址值,这样形参和实参就指向同一段内存单元,在函数体内对形参数据的改变也将影响到实参。实参和形参之间不可双向传递,BD 选项错误。数据不能从形参传递给实参,C 选项错误。知识模块:选择题27 有以下程序:#includestdiohmain()unsigned char a=8,c;c=a3;printf(dn,c);程序运行后的输出结果是()。A32B16C1D0正确答案:C解析:字符常量与其 ASC码值一一对应,在计算的时候,可以使用该字符的 ASC码参与运算,输出时会根据格式控制符输出对应的字符或者 ASC码
21、。右移运算符“”的运算规则是把左边运算数的各二进制位全部右移n位,n 取决于“”右边的数值。字符 a 的 ASC码值为 8,对应二进制为 1000,所以 a3=1,输出的字符 c 的 ASC码值为 1,答案选 C。知识模块:选择题28 关系表中的每一横行称为一个()。A元组B字段C属性D码正确答案:A解析:关系表中,每一行称为一个元组,对应表中的一条记录;每一列称为一个属性,对应表中的一个字段;在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。知识模块:选择题29 以下叙述中正确的是()。A在算法设计时,可以把复杂任务分解成一些简单的子任务B在 C 语言程序设计中,所有函数必须保存在一个
22、源文件中C只要包含三种基本结构的算法就是结构化程序D结构化程序必须包含所有三种基本结构,缺一不可正确答案:A解析:C 语言程序中,函数不一定都放在同一个源文件中,可以分别放在不同源文件中,通过#include 命令来引用,所以B 错误;结构化程序可以包含三种基本结构中的一种或几种,所以 C、D 选项错误。知识模块:选择题30设有定义:double x=2 12;,以下不能完整输出变量 x 值的语句是()。Aprintf(x=50fn,x);Bprintf(x=fn,x);Cprintf(x=1fn,x);Dprintf(x=05fn,x);正确答案:A解析:本题考查 printf 函数的格式输
23、出。“格式控制字符串”部分为“f”表示按照浮点型输出,选项 B 正确;加入长度格式符 l 即“l”表示按照双精度浮点型输出,选项 C 正确:若要控制输出精度,则需以“”开头,后跟十进制整数,如“2f”或“02f”,选项 D 正确;控制输出宽度则是用整数表示,如“5f”。选项 A 中“50f”表示输出宽度为 5,右对齐,小数点后保留位数为 0,所以结果输出为 2,不能完整输出 x,答案选 A。知识模块:选择题31 以下数组定义中错误的是()。Aint x 23=1,2,3,4,5,6;Bint x3=0;Cint x3=1,2,3,4,5,6;Dint x23=1,2,3,4,5,6;正确答案:
24、D解析:二维数组的第一维数据表示行数,第二维数据表示列数,所以 x23中的数据应为两行三列,和定义内容不符,选项 D 错误,答案选 D。知识模块:选择题32 有以下程序:#includestdioh#define N 4void fun(int aN)int i;for(i=0;iN;i+)a0i+=aN1N1i;void main()int xNN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i;fun(x);for(i=0;iN;i+)printf(d,xii);printf(n);程序运行后的输出结果是()。A17 6 11 16B16 11 16C4
25、7 10 13D5 13 21 29正确答案:A解析:按照二维数组的访问方式逐个查找,然后总结规律是这种题型常用的解决方法。知识模块:选择题33 有以下程序:#includestdiohmain()char*s=12134;int k=0,a=0;while(sk+1)k+;if(k2=0)a=a+(sk0+1);continue;a=a+(sk0);printf(k=d a=dn,k,a);程序运行后的输出结果是()。Ak=5 a=15Bk=4 a=12Ck=6 a=11Dk=3 a=14正确答案:B解析:当 k=0 时,执行 while 一次,得到 k=1,a 为 2;当 k=1 时,执行
26、 while一次,得到k=2,a 为 4;当k=2 时,执行while 一次,得到k=3,a 为 7;当k=3时,执行 while 一次,得到 k=4,a 为 12。故 B 选项正确。知识模块:选择题34 下列关于栈的叙述中,正确的是()。A栈底元素一定是最后入栈的元素B栈操作遵循“先进后出”的原则C栈顶元素一定是最先入栈的元素D以上三种说法都不对正确答案:B解析:栈是“先进后出”,因此,栈底元素是先入栈的元素,栈顶元素是后入栈的元素。知识模块:选择题35 软件需求规格说明书的作用不包括()。A软件设计的依据B软件可行性研究的依据C软件验收的依据D用户与开发人员对软件要做什么的共同理解正确答案
27、:B解析:软件可行性分析报告是软件可行性研究的依据。知识模块:选择题36 C 语言主要是借助以下哪个功能来实现程序模块化?()A定义函数B定义常量和外部变量C三种基本结构语句D丰富的数据类型正确答案:A解析:C 语言是由函数组成的,函数是 C 语言的基本单位。所以可以说 C语言主要是借助定义函数来实现程序模块化的。知识模块:选择题37有以下程序:#includestdio hmain()int a=2,b=0;while(a+&+b);printf(d,dn,a,b);程序运行后的输出结果是()。A1,3B0,2C0,3D1,2正确答案:D解析:考查 while 循环以及自加运算,其中 a+是
28、 a 先参与运算再自加 1,而+b 是 b 先自加 1 再参与运算。第一次进入循环:a 的值是2,b 的值是 0,判断条件为2&1,2 个值都是非零,while 判断条件成立,接着进入第二次循环。这时 a 的值是1,b 的值是 1,判断条件即为1&2,表达式的值为真,进入第三次循环。这时a 的值是 0,b 的值是 2,判断条件为0&3,与运算左边的值为 0,即判断为假。此时跳出循环,执行printf 语句,这时a 的值是 1,b 的值是 2。知识模块:选择题38 有以下程序:#includestdiohint fun(int x)int p;if(x=0 x=1)return 3;p=xfun
29、(x2);return(p);main()printf(dn,fun(9);程序运行后的输出结果是()。A4B5C9D7正确答案:D解析:本题考查函数的递归调用。执行fun(9)后,fun(9)=9(7(5(3f(1)=7,故 D 选项正确。知识模块:选择题39有以下程序:#includestdio hvoid main()char a510=one,two,three,four,five;int i,j;char t;for(i=0;i5;i+)for(j=i+1;j4;j+)if(ai0aj0)t=ai0;ai0=aj0;aj0=t;puts(a1);程序运行后的输出结果是()。AtwoowoBfixowoCtwofovDowootf正确答案:A解析:for 循环完成的功能是把二维数组 a 的第一列的字母按从小到大排序,其他列的字母不变。知识模块:选择题40 以下关于宏的叙述中错误的是()。A宏名必须用大写字母构成B宏替换不具有计算功能C宏替换不具有计算功能D宏替换不占用运行时间正确答案:A解析:宏名习惯采用大写字母,以便与一般变量区别,但是并没有规定一定要用大写字母,故选 A。知识模块:选择题