国家二级C语言机试(选择题)模拟试卷11(共255题)_第1页
国家二级C语言机试(选择题)模拟试卷11(共255题)_第2页
国家二级C语言机试(选择题)模拟试卷11(共255题)_第3页
国家二级C语言机试(选择题)模拟试卷11(共255题)_第4页
国家二级C语言机试(选择题)模拟试卷11(共255题)_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家二级C语言机试(选择题)模拟试卷11(共9套)(共255题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共25题,每题1.0分,共25分。)1、下面不能作为软件设计工具的是()。A、PAD图B、程序流程图C、数据流程图(DFD图)D、总体结构图标准答案:C知识点解析:软件设计可以使用的工具有总体结构图、程序流程图、N-S图、PAD图、PDL。数据流程图(DFD图)是需求分析使用的工具。2、某二叉树的前序序列为ABCDEFG,中序序列为DCBAEFG,则该二叉树的后序序列为A、EFGDCBAB、DCBEFGAC、BCDGFEAD、DCBGFEA标准答案:D知识点解析:该二叉树的前序序列为ABCDEFG,中序序列为DCBAEFG,可知A为根结点,结点B、C、D位于根结点的左子树上,结点E、F、G位于根结点的右子树上;并且结点B、C、D在前序序列和中序序列中顺序颠倒,则说明这三个结点依次位于前一个结点的左子树上;结点E、F、G顺序未变,则说明这三个结点依次位于前一个结点的右子树上。根据以上分析,可以画出这个二叉树的形状如下:根据该二叉树,可得出后序遍历序列为:DCBGFEA,选项D正确。3、以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序voidsort(inta[],intn){inti,j,t;for(i=0;iA、1,2,3,4,5,6,7,8,9,10,B、10,9,8,7,6,5,4,3,2,1,C、1,2,3,8,7,6,5,4,9,10,D、1,2,10,9,8,7,6,5,4,3,标准答案:C知识点解析:程序中sort函数的功能是对数组中的数据进行从大到小的排序。主函数main中调用函数“sort(&aa[3],5);”,使得数组aa中从第4个元素开始的5个元素进行从大到小的排序,数组aa中的元素变为:1,2,3,8,7,6,5,4,9,10。并输出这些元素。4、软件设计中划分模块的一个准则是()。A、低内聚、低耦合B、高内聚、低耦合C、低内聚、高耦合D、高内聚、高耦合标准答案:B知识点解析:一般较优秀的软件设计应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,因此本题答案为B。5、有以下程序#includemain(){inta=1,b=0;printff"%d,",b=a+b);printf("%d\n",a=2*b);}程序运行后的输出结果是A、1,0B、3,2C、1,2D、0,0标准答案:C知识点解析:在主函数中定义了两个整型变量a和b,并把它们的初值分别设置为1和0:在第二条语句中,首先计算出a和b的和等于1,把此值赋给变量b,并在屏幕上输出此时变量b的值1:在第三条语句中,计算出2乘以1的积等于2,把2赋给变量a,再把变量a的值在屏幕上输出。6、关系数据模型的三个组成部分中不包括()。A、关系的数据操纵B、关系的并发控制C、关系的数据结构D、关系的完整性约束标准答案:B知识点解析:关系数据模型的三个组成部分:关系的数据结构(用二维表表示),关系操纵(查询、删除、插入、修改),关系的数据约束(实体完整性约束、参照完整性约束、用户定义的完整性约束)。7、下列算法中均以比较作为基本运算,则平均情况与最坏情况下的时间复杂度相同的是A、在顺序存储的线性表中寻找最大项B、在顺序存储的线性表中进行顺序查找C、在顺序存储的有序表中进行对分查找D、在链式存储的有序表中进行查找标准答案:A知识点解析:最坏情况下的时间复杂度称为最坏时间复杂度。一般不特别说明,讨论的时间复杂度均是最坏情况下的时间复杂度。最坏情况下的时间复杂度是算法在任何输入实例上运行时间的上界,这就保证了算法的运行时间不会比任何情况更长。平均时间复杂度是指所有可能的输入实例均以等概率出现的情况下,算法的期望运行时间。在输入不同的情况下算法的运行时间复杂度可能会发生变化。平均时间复杂度给出了算法的期望运行时间,有助于算法好坏的评价以及在不同算法之间比较时有一个统一标准。在顺序存储的线性表中寻找最大项,其平均情况与最坏情况下的时间复杂度都是n/2。8、下列描述中,不符合良好程序设计风格要求的是A、程序的效率第一,清晰第二B、程序的可读性好C、程序中要有必要的注释D、输入数据前要有提示信息标准答案:A知识点解析:一般来讲,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。程序设计风格总体而言应该强调简单和清晰,程序必须是可以理解的。著名的“清晰第一,效率第二”的论点已成为当今主导的程序设计风格。9、数据字典(DD)所定义的对象都包含于A、数据流图(DFD图)B、程序流程图C、软件结构图D、方框图标准答案:C知识点解析:本题考查数据流程图DFD的概念。对于面向数据流的结构化分析方法,按照DeMarco的定义,“结构化分析就是使用数据流图(DFD)、数据字典(DD)、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化规格说明的目标文档”。结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。数据流图(DFI)——DataFlowDiagram)是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。由此可得数据流程图是结构化方法的需求分析工具。10、有以下程序:#include<stdio.h>intadd(inta,intb){return(a+b);}main(){intk,(*f)(),a=5,b=10;f=add;}则以下函数调用语句中错误的是()。A、k=*f(a,b);B、k=add(a,b);C、k=(*f)(a,b);D、k=f(a,b);标准答案:A知识点解析:int(*f)()为一个函数指针变量,返回值为整型,f为一个指针变量,指向一个已经定义的函数,在调用该函数的时候需要把参数写在相应的小括号内,即(*指针名)(参数或参数列表),所以选项A调用错误,答案选A。11、以下不能用于描述算法的是A、程序语句B、E.R图C、伪代码和流程图D、文字叙述标准答案:B知识点解析:E-R图为实体.联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。描述算法的有流程图,盒图,伪代码,文字描述以及程序代码描述。12、若k是int类型变量,且有以下for语句1for(k=-1;k<0;k++)printf("****\n");下面关于语句执行情况的叙述中正确的是A、循环体执行两次B、循环体执行一次C、循环体一次也不执行D、构成无限循环标准答案:B知识点解析:本题考查for循环的使用。在程序中,for循环的初始值k=-1,循环结束条件是k<0,每次循环k增加1,第一次进入循环的时候k为-1,k小于0,执行打印,然后k的值变成0,下次进入循环k不小于0,循环结束,因此循环只能执行一次。13、以下程序的输出结果是()。main(){inty=一10;while(y++);printf(’’y=%d\n’’,y);}A、y=0B、y=一1C、y=1D、y=2标准答案:C知识点解析:注意分号位置while循环语句的循环体为空语句,所以每一次循环程序什么都不做。当循环自变量y=0时,退出循环,变量y执行自加运算,得1,所以打印输出变量y的值为1。14、以下关于C语言数据类型使用的叙述中错误的是A、若要保存带有多位小数的数据,可使用双精度类型B、若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型C、若只处理“真”和“假”两种逻辑值,应使用逻辑类型D、整数类型表示的自然数是准确无误差的标准答案:C知识点解析:在C语言中没有定义逻辑类型,而是用0代表假,用非零代表真。15、以下叙述中错误的是A、算法正确的程序可以有零个输入B、算法正确的程序最终一定会结束C、算法正确的程序可以有零个输出D、算法正确的程序对于相同的输入一定有相同的结果标准答案:C知识点解析:算法的特征:①有穷性:一个算法(对任何合法的输入)在执行有穷步后能够结束,并且在有限的时间内完成。②确定性:算法中的每一步都有确切的含义。③可行性:算法中的操作能够用已经实现的基本运算执行有限次来实现。④输入:一个算法有零个或者多个输入,零个输入就是算法本身确定了初始条件。⑤输出:一个算法有一个或者多个输出,以反映出数据加工的结果。所以C选项错误。16、表达式a+=a-=a=9的值是A、-9B、0C、18D、9标准答案:B知识点解析:第一步a=9.然后计算a-a的值.并将此值赋给a,因此此时a=0,最后计算a+a,并将此值赋给a,因此最终结果为0。17、以下叙述中正确的是A、字符常量在内存中占2个字节B、转义字符要用双引号括起来,以便与普通的字符常量区分开C、字符常量需要用单引号括起来D、字符常量是不能进行关系运算的标准答案:C知识点解析:在程序中用单引号把一个字符括起来作为字符常量。转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCII字符,这些字符常量也必须括在一对单引号内,和整型常量一样,字符常量也可以进行关系运算的。18、若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是A、++x,y=x--B、x+1=yC、x=x+10=x+yD、double(x)/10标准答案:A知识点解析:用逗号将表达式连接起来的式子称为逗号表达式。其表达式的一般形式为:表达式1,表达式2,……,表达式n。最后一个表达式的值就是此逗号表达式的值。所以选项A为C语言中的逗号表达式。赋值表达式的左侧只能是变量,不能是常量或表达式。强制类型转换表达式的形式为:(类型名)(表达式),其中(类型名)称为强制类型转换运算符,数据类型两边的圆括号不能省略。19、有以下程序#includeintfun(){staticintx=1;x*=2;returnx;}main(){inti,s=1;for(i=1;i<=3;i++)s*=fun();printf("%d\n",s);}程序运行后的输出结果是A、0B、10C、30D、64标准答案:D知识点解析:本题考查了静态局部变量,该局部变量的值在函数调用结束后如果不消失而保留原值。函数fun的功能返回2的乘方,主函数fun函数调用3次,因此第一次s累乘2,第二次累乘4,第三次累乘8,即为2*4*8,值为64。20、设有定义:inta=1,b=2,c=3;以下语句中执行效果与其它三个不同的是A、if(a>b)c=a;a=b;b=c;B、if(a>b){c=a,a=b,b=c;}C、if(a>b)c=a,a=b,b=c;D、if(a>b){c=a;a=b;b=c;}标准答案:A知识点解析:在C语言中,用分号表示一条语句的结束,用{}把几条语句放在一块表示一个语句块,其整体表示一个功能。因而在题目给出的四个选项中,选项B、C、D表示的功能相同,而选项A表示的是一条if语句,两条赋值语句。21、若有定义语句:inta[2][3],*p[3];,则以下语句中正确的是A、p=a;B、p[0]=a;C、p[0]=a[1][2];D、p[1]=a;标准答案:C知识点解析:本题考查多维数组和数组指针。a是一个二维数组,p是一个指针数组,该数组有3个元素,每个元素都是一个指向整型对象的指针。选项A)错误,等号的左边是一个数组地址,不是变量:选项B)数据类型不匹配,p[0]是指向一个整型对象,而a是一个二维数组首地址:选项C)正确,是把元素a[1][2]赋值给p[0];选项D)和选项B)一样属于数据类型不匹配,p[1]是指向一个整型对象,而a是一个二维数组首地址。22、有以下程序#include#includevoidfun(char*w,intm){chars,*p1,*p2;p1=w;p2=w+m-1;while(p1<p2){s=*p1;*p1=*p2;*p2=s;p1++;p2--;}}main(){chara[]="123456";fun(a,strlen(a));puts(a);}A、116611B、161616C、654321D、123456标准答案:C知识点解析:函数fun的功能是将字符串w中的元素从大到小进行排列,所以在主函数中调用函数fun后,字符串a的元素从大到小进行了排列。23、若程序中有宏定义行:#defineN100则以下叙述中正确的是A、宏定义行中定义了标识符N的值为整数100B、上述宏定义行实现将100赋给标示符NC、在运行时用100替换标识符ND、在编译程序对C源程序进行预处理时用100替换标识符N标准答案:D知识点解析:在C语言中,凡是以“#”号开头的行,都称为“编译预处理”。其含义是在C编译程序对C源程序进行编译前,由编译预处理程序对这些编译预处理命令进行处理的过程。由#define定义的宏就是编译预处理命令。C程序在进行编译之前,都要先对程序中所有出现的“宏名”,都用宏定义中的替换文本进行替换。24、以下叙述中正确的是A、如果p是指针变量,则*p表示变量P的地址值B、如果p是指针变量,则&p是不合法的表达式C、在对指针进行加、减算术运算时,数字1表示1个存储单元的长度D、如果p是指针变量,则*p+1和*(p+1)的效果是一样的标准答案:C知识点解析:移动指针是对指针变量加上或减去一个整数,或通过赋值运算,使指针变量指向相邻的存储单元。因此,只有当指针指向一串连续的存储单元时,指针的移动才有意义。当指针指向一串连续的存储单元时,可以对指针变量进行加上或减去一个整数的运算,也可以对指向同一串连续存储单元的两个指针进行相减的运算。除此之外,不可以对指针进行任何其他的算术运算。C语言提供了一个间接访问运算符(*),又称间址运算符,它是一个单目运算符,优先级比较高,高于普通的算术运算符,但是低于()运算符,因此*p+1和*(p+1)的含义是不一样。当指针变量中存放了一个确切的地址值时,就可以用“间接访问运算符”通过指针来引用该地址的存储单元。25、以下定义数组的语句中错误的是A、intnum[][3]={{1,2},3,4,5,6};B、intnum[]={1,2,3,4,5,6};C、intnum[][4]={1,2,3,4,5,6};D、intnum[2][4]={{1,2},{3,4},{5,6}};标准答案:D知识点解析:在选项D的数组定义中,赋值号左边定义了一个2行4列的二维数组,而在右边定义了一个3行2列的二维数组。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共40题,每题1.0分,共40分。)1、以下四个程序中,完全正确的是A、#includemain();main(){/*/Programming/*/printf("programming!\n");}B、#include{/*programming*/printf("programming!\n");}C、#includemain()main(){/*/*programming*/*/printf("programming!\n");}D、include{/*programming*/print("programming!\n");}标准答案:B知识点解析:在选项A中,main()函数后而的分号是错误的,C语言在函数名后而不能有分号。在C语言中注释内容必须放住“/*和“*/”之间,“/*”和“*/”必须成对出现,按语法规定在注释之间不可以再嵌套“/*和“*/”。在选项C的程序段中注释语句之间有嵌套:所以选项C不正确。C语言用#include命令行米实现文件包含的功能。#include命令行的形式为:#include“文件名”,所以在选项D中include前面少了一个#符号,因而选项D不正确。2、下列叙述中正确的是()。A、存储空间连续的数据结构一定是线性结构B、存储空间不连续的数据结构一定是非线性结构C、没有根结点的非空数据结构一定是线性结构D、具有两个根结点的数据结构一定是非线性结构标准答案:D知识点解析:判断一个非空的数据结构是否为线性结构必须满足以下两个条件:①有且只有一个根结点;②每一个结点最多有一个前件,也最多有一个后件。根据这两个条件,可知选项A)、B)和C)都不能判定是否是线性结构,选项D)正确,答案选D)。3、以下程序段的输出结果是()。char*s="\\141\141\abc\t":pirntf("%d\n",strlen(s));A、8B、9C、10D、11标准答案:B知识点解析:本程序实际上是计算字符串\\141\141\abc\t的长度,里面包括三个转义字符:"\\","\141","\t"各占一个字节,再加上其余的6个字节,共计长度为9个字节。4、软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是A、学生成绩管理系统B、C语言编译程序C、UNIX操作系统D、数据库管理系统标准答案:A知识点解析:学生成绩管理系统为应用软件。5、软件生命周期中的活动不包括()。A、市场调研B、需求分析C、软件测试D、软件维护标准答案:A知识点解析:软件生命周期可以分为软件定义、软件开发与软件运行维护三个阶段。主要活动阶段是:可行性研究与计划阶段,需求分析,软件设计,软件实现,软件测试,运行和维护,所以选择A。6、软件需求规格说明书的作用不包括A、软件验收的依据B、用户与开发人员对软件要做什么的共同理解C、软件设计的依据D、软件可行性研究的依据标准答案:D知识点解析:软件规格说明书主要有三个作用:①用户和软件开发人员之间的合同;②开发人员进行设计和编程的依据;③软件工程项目验收的依据。7、下面的程序在编译时产生错误,其出错原因是()。#includemain(){int1_case;floatprintF;printf("请输入2个数:");scanf("%d%f",&1_case,&printF);printf("%d%f\n",1_case,printF);}A、定义语句出错,1case不能作为变量名B、定义语句出错,printF不能用作用户自定义标识符C、定义语句无错,scanf不能作为输入函数使用D、定义语句无错,printf不能输出1_case的值标准答案:A知识点解析:C语言变量名可由数字,字母,下划线构成,但首字符不能为数字。8、有以下程序段:#includeintj;floaty;charname[50];seanf(”%2d%f%s”,&j,&y,name);当执行上述程序段时,从键盘上输入555667777abc后,Y的值为()。A、566.0B、55566.0C、7777.0D、566777.0标准答案:A知识点解析:它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。其中的格式命令可以说明最大域宽。在百分号(%)与格式码之间的整数用于限制从对应域读人的最大字符数。所以j的值为55,y的值为566.0,字符数组name为7777abc。9、以下程序段完全正确的是A、intk,*p=&k;scanf(’’%d’’,p);B、int*p;scanf(’’%d’’,p);C、int*p;scanf(’’%d’’,&p);D、intk,*p;*p=&k;scanf(’’%d’’,p);标准答案:A知识点解析:选项B没有对指针进行初始化,无效指针。选项C错在没有对指针进行初始化,无效指针,并且在scanf(“%d”,&p)中无需再进行取地址操作。选项D,语句*p=&k;的左端*p是指针所指内存空间的值,&k是地址,应为p=&k。10、把以下四个表达式用作if语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是A、k%2B、k%2==1C、(k%2)!=0D、!k%2==1标准答案:D知识点解析:本题考查if语句和if语句构成的选择。选项A表示k除以2的余数,如果余数为1则if成立,否则不能成立,即if判断k是否为奇数;选项B是判断k除以2的余数是否等于1,函数和选项A相同;选项C表示k除以2的余数不为0,和选项A一致;选项D中,!运算符优先级高于%预算符,先计算!k,然后再取余数,并判断余数是否等于1。11、以下叙述中正确的是()。A、C语言程序总是从main函数开始执行B、C语言程序总是从最前面的函数开始执行C、C语言程序中main函数必须放在程序的开始位置D、C语言程序所调用的函数必须放在main函数的前面标准答案:A知识点解析:C语言中main函数的位置可以任意,而且不管main函数放在哪里,程序的执行总是从main函数开始,并在main函数结束,答案选A。12、数据库管理系统是()。A、操作系统的一部分B、在操作系统支持下的系统软件C、一种编译系统D、一种操作系统标准答案:B知识点解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中数据组织、数据操纵、数据维护、控制及保护和数据服务等。是一种在操作系统之上的系统软件。13、有以下程序main(){inti=5;do{if(i%3=1)if(i%5==2){printf("*%d",i);break;}i++:}while(i!=0);printf("\n");}程序的运行结果是A、*3*5B、*5C、*7D、*2*6标准答案:C知识点解析:由于循环变量i的初值等于5,所以第一、二次进入do…while循环语句时,条件语句if(i%3==1),if(i%5==2){printf(“*%d”,i);break;}不执行,只执行i++语句。当i=7时,满足条件语句if(i%3==1),if(i%5==2){printf("*%d",i);break;},所以输出*7,结束循环。14、有以下程序#includedoublef(doublex);main(){doublea=0;inti;for(i=0;i<30;i+=10)a+=f((double)i);printf("%3.0f\n",a);}doublef(doublex){returnx*x+1;}程序运行后的输出结果是A、500B、401C、503D、1404标准答案:C知识点解析:本题重点考察函数的定义和调用,第一次循环,a=0,i=0;返回值a=0*0+1=1;第二次循环,a=1,i=10;返回值a=10*10+1+1=102;第三次循环,a=102,i=20;返回值a=20*20+1+102=503;第四次循环,a=503,i=30;不符合i<30,跳出循环,最后结果输出a=503。15、以下不合法的字符常量是()。A、’\018’B、’\"’C、’\\’D、’\xcc’标准答案:A知识点解析:\ddd’表示1~3位八进制数代表的字符,不能出现8,所以选项A)错误;’\’表示双引号符,选项B)正确;’\\’表示反斜线符’\’’,选项C)正确;’\xcc’表示由两位十六进制数cc所代表的字符,选项D)正确,所以答案选A)。16、下列程序段中完全正确的是()。A、int*p;scanf("%d",&p);B、int*p;scanf("%d",p);C、intk,*p=&k;scanf("%d",p);D、intk,*p;*p=&k;scanf("%d",p);标准答案:C知识点解析:A选项中错在没有对指针进行初始化,无效指针,并且在scanf("%d",&p)中无须再进行取地址操作;B选项中没有对指针进行初始化,无效指针;D选项中语句*p=&k;的左端*p是指针所指内存空间的值,&k是地址,应为p=&k。C选项正确。17、若有定义:doublea=22;inti=0,k=18;则不符合C语言规定的赋值语句是A、i=(a+k)<=(i+k);B、a=a++,i++;C、i=a%11;D、i=!a;标准答案:C知识点解析:在C语言中,求余运算符的运算对象只能是整型,在题目中,变量a是一个双精型实型变量。18、以下选项中,不能作为合法常量的是A、1.234e04B、1.234e0.4C、1.234e+4D、1.234e0标准答案:B知识点解析:本题考查C语言中的常量,C语言中字母e或E之前必须有数字,且e或E后面的指数必须为整数。选项B中字母e后面是浮点数,错误,其他选项都是正确的常量。19、以下C语言用户标识符中,不合法的是A、_1B、AaBcC、a_bD、a--b标准答案:D知识点解析:本题考查用户标识符,C语言中,用户标识符只能由字母、下划线和数组组成,且必须以字母或者下划线开始。选项A、B)和C)都是正确的,选项D中的case是C语言关键字,不能作为用户标识符,是错误的。20、下面选项中关于编译预处理的叙述正确的是A、凡是以#号开头的行,都被称为编译预处理命令行B、预处理命令行必须使用分号结尾C、预处理命令行不能出现在程序的最后一行D、预处理命令行的作用域是到最近的函数结束处标准答案:A知识点解析:在C语言中,凡是以“#”号开头的行,都称为编译预处理命令行。这些预处理命令组成的预处理命令行必须在一行的开头以“#”号歼始,每行的末尾不能用“;”号结束,以区别于C语句、定义和说明语句。根据需要,命令行可以出现在程序的任何一行的开始部位,其作用一直持续到源义件的末尾。21、以下叙述中正确的是A、在包含文件中,不得再包含其他文件B、#include命令行不能出现在程序文件的中间C、在一个程序中,允许使用任意数量的#include命令行D、虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接标准答案:C知识点解析:#include文件包含命令,使用时应注意以下5个规则:①包含文件的#include命令行通常应书写在所用源程序文件的开头,故有时也把包含文件称作“头文件”。头文件名可以由用户指定,其后缀不一定用“.h”。②包含文件中,一般包含有一些公用的。#define命令行、外部说明或对(库)函数的原型说明。⑧当包含文件修改后,对包含该文件的源程序必须重新进行编译连接。④在一个程序中,允许有任意多个#include命令行。⑤在包含文件中还可以包含其他文件。22、有以下程序main(){intx=1,y=0;if(!x)y++;elseif(x==0)if(x)y+=2;elsey+=3;printf("%d\n",y);}程序运行后的输出结果是A、2B、0C、1D、3标准答案:B知识点解析:x=1,if和elseif的条件都不满足,故y值不改变输出。23、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。在下划线处应填写的是#include#defineN5Voidfun(intx[N]){intm;for(m=N-1;m>=0;m--)scanf("%d",___);}A、x+mB、x[m+1]C、x+(m++)D、x[++m]标准答案:A知识点解析:本题考查数组和scanf函数的使用。程序通过for循环来给数组元素赋值,赋值语句通过调用scanf函数来实现。scanf函数从键盘接收数据,函数的第二个参数是数据保存的地址,因此选项B和选项D不是地址,错误。选项A和选项C是地址,但是选项C的m值会++自增,然后for循环里面又m-自减,会导致死循环,不满足要求,选项A正确。24、有以下程序段inta,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;printf("a=%db=%dc=%d\n",a,b,c);程序的输出结果是A、a=10b=50c=30B、a=10b=30c=10C、a=10b=50c=10D、a=50b=30c=50标准答案:C知识点解析:本题的程序段首先定义三个整型变量a。b。c,并且其初始值分别等于10,50,30.然后判断a>b是否成立,如果条件成立,则把b的值赋给a,把c的值赋给b。由a和b的初始值可知,此条件表达式不成立,所以a和b的值保持不变。再执行下一条语句,把a的值赋给c,所以c的当前值等于10。最后由输出语句输出变量a,b,c的当前值,分别为10,50,10。25、设有以下代码do{while(条件表达式1)循环体A;}while(条件表达式2);while(条件表达式1){do{循环体B;}while(条件表达式2);}其中,循环体A与循环体B相同,以下叙述正确的是()。A、循环体A与循环体B的执行次数相同B、循环体A比循环体B的执行次数多一次C、循环体A比循环体B的执行次数少一次D、循环体A与循环体B的执行次数不确定标准答案:A知识点解析:考查do-while和while循环语句的执行过程。若条件表达式1的值为假,则循环体A和B均一次都不执行;若只有条件表达式2的值为假,则循环体A和B均执行一次;若条件表达式1、2的值均为真,则循环体A和B会一直执行直到其中一个条件表达式的值为假,这之前两个循环体执行的次数也是相同的;由此答案选A。26、有以下程序:#include<stdio.h>intb=2:intfun(int*k){b=*k+b;retum(b);}main(){inta[10]={1,2,3,4,5,6,7,8},i;for(i=2;i<4;i++){b=fun(&a[i])+b;printf(%d.t,b);)printf(’’\n’’);}程序运行后的输出结果是A、810B、1028C、1012D、1016标准答案:B知识点解析:i=2时,fun(&a[2])返回值是b_b+a[1]_2+3=5,b-b+b:5+5=10;i=3时,fun(&a[3])返回值是b_b+a[3]=10+4=14,b=b+b=14+14=28。27、设有如下的说明和定义struct{inta;char*s;}x,*p=&x:x.a=4;x.s="hello";则以下叙述中正确的是A、语句++p->a;的效果是使p增1B、(p++)->a与p++->a都是合语法的表达式,但二者不等价C、语句*p->s++;等价于(*p)->s++;D、语句++p->a;的效果是使成员a增1标准答案:D知识点解析:p->a得到p指向的结构体变量中的成员a的值。p->a++得到p指向的结构体变量中的成员a的值,用完该值后使p->a加1。++p->a得剑p指向的结构体变量中的成员a的值使之加1(先加)。由此可见指向运算符->优先级高于++,因此*p->s++相当于*(p->s)++,结介性自右至左,因此p++->a和(p++)->a等价。28、下面选项中关于位运算的叙述正确的是A、位运算符都需要两个操作数B、左移运算的结果总是原操作数据2倍C、右移运算时,高位总是补0D、位运算的对象只能是整型或字符型数据标准答案:D知识点解析:位运算则是以位(bit)一级进行的运算,位运算符中除“~”以外,均为二元运算符,即要求两侧各有一个运算量,运算量只能是整型或字符型的数据,不能为实型数据。其中右移时,右端(低位)移出的二进制数舍弃,左端(高位)移入的二进制数分两种情况:对于无符号整数和正整数,高位补0;对于负整数,高位补1。而左移运算在没有溢出的前提下每移动一位,相当于原数据的2倍。29、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A、自然连接B、交C、投影D、并标准答案:A知识点解析:关系R和关系S有公共域,关系T是通过公共域的等值进行连接的结果,符合自然连接,选A。30、以下叙述中正确的是A、在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上B、在使用scanf函数输入整数或实数时,输入数据之间只能用空格来分隔C、在printf函数中,各个输出项只能是变量D、使用printf函数无法输出百分号%标准答案:A知识点解析:seanf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,因此若想在屏幕上输出提示信息,应该首先使用printf函数输出,选项A)正确;在使用scanf函数输入整数或实数时,输入数据之间可以用空格、跳格、回车来分隔,选项B)错误;printf输出项不但可以为变量,还可以表达式或者常量,选项C)错误;如果要输出“%”,可以在格式控制中用“%%”表示,将输出一个“%”,选项D)错误。31、if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是A、必须是整数值B、必须是正数C、可以是任意合法的数值D、必须是逻辑值标准答案:C知识点解析:在if语句中,表达式可以是任意合法的数值。当其值为非零时,执行if语句,为0时执行else语句。32、若有定义语句:char*s1="OK",*s2="ok";以下选项中,能够输出"OK"的语句是()。A、if(strcmp(s1,s2)!=0)puts(s1);B、if(strcmp(s1,s2)!=0)puts(s2);C、if(strcmp(s1,s2)==1)puts(s1);D、if(strcmp(s1,s2)==0)puts(s1);标准答案:A知识点解析:字符串比较函数strcmp(字符串1,字符串2)得返回值为若字符串1与字符串2相同则返回0,若字符串1小于字符串2则返回负整数,若字符串1大于字符串2则返回正整数。要输出字符指针s1指向的字符串,则需保证条件判定语句为真,调用语句puts(s1)输出即可,易知答案选A。33、在数据管理技术发展的三个阶段中,数据共享最好的是()。A、人工管理阶段B、文件系统阶段C、数据库系统阶段D、三个阶段相同标准答案:C知识点解析:数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C)。34、设已有定义:floatx;则以下对指针变量p进行定义且赋初值的语句中正确的是A、int*p=(float)x;B、float*p=&x;C、floatp=&x;D、float*p=1024;标准答案:B知识点解析:定义指针变量的一般形式为:类型名*指针变量名1,*指针变量名2,……;对一个指针变量赋值要通过求地址运算符(&)获得变量的地址值,然后把此地址值赋给指针变量。因而在选项A)的表达式中。赋值号的左边表示定义了指针变量口,而右边表示求变量x的地址值。35、以下关于指针的叙述正确是()。A、所有类型的指针变量所占内存的大小是一样的B、指针变量所占内存的大小与其类型有关,char型指针变量只占1个字节,double型指针变量占8个字节C、指针变量可直接指向任何类型的变量,而不会出现编译或运行错误D、指针变量既可以直接指向结构体,也可直接指向结构体中某个成员,而不会出现编译或运行错误标准答案:A知识点解析:不管什么类型的指针变量,存储的都是被指向变量的地址,即是该变量在内存中的一个存储单元编号,所以所有的指针变量占用的内存大小是相同的,答案选A。36、下面选项中关于位运算的叙述正确的是A、位运算符都需要两个操作数B、左移运算的结果总是原操作数据2倍C、右移运算时,高位总是补0D、位运算的对象只能是整型或字符型数据标准答案:D知识点解析:位运算则是以位(bit)一级进行的运算,位运算符中除“~”以外,均为二元运算符,即要求两侧各有一个运算量,运算量只能是整型或字符型的数据,不能为实型数据。其中右移时,右端(低位)移出的二进制数舍弃,左端(高位)移入的二进制数分两种情况:对于无符号整数和正整数,高位补0;对于负整数,高位补1。而左移运算在没有溢出的前提下每移动一位,相当于原数据的2倍。37、下列关于栈的叙述中,正确的是A、栈底元素一定是最后入栈的元素B、栈顶元素一定是最先入栈的元素C、栈操作遵循先进后出的原则D、以上说法均错误标准答案:C知识点解析:栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈的修改是按后进先出的原则进行的。因此,栈称为先进后出表,或“后进先出”表,所以选择C。38、已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是A、c=(’A’+c)%26-’a’B、c=c+32C、c=c-’A’+’a’D、c=(c-’A’)%26+’a’标准答案:A知识点解析:根据题意可知,小写字母比与之对应的大写字母的ASCII码大32。A选项中字符A加上c表示的大写字符再对字母个数26取余,本身这个表达式没有任何含义所以选择A选项。39、在关系数据库中,用来表示实体间联系的是A、属性B、二维表C、网状结构D、树状结构标准答案:B知识点解析:关系模型实体间的联系采用二维表来表示,简称表。选项C为网状模型实体间的联系,选项D为层次模型实体间的联系,选项A属性刻画了实体。40、软件设计中模块划分应遵循的准则是()。A、低内聚低耦合B、高内聚低耦合C、低内聚高耦合D、高内聚高耦合标准答案:B知识点解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共25题,每题1.0分,共25分。)1、以下叙述正确的是A、C语言程序是由过程和函数组成的B、C语言函数可以嵌套调用,例如:fun(fun(x))C、C语言函数不可以单独编译D、C语言中除了main函数,其他函数不可作为单独文件形式存在标准答案:B知识点解析:在C语言中,允许函数的嵌套调用,即递归调用。在C语言中不存在过程的概念,在C语言中函数允许单独编译,可以作为单独的文件形式存在。2、下列关于二叉树的叙述中正确的是()。A、叶子节点总是比度为2的节点少1个B、叶子节点总是比度为2的节点多1个C、叶子节点数是度为2的节点数的两倍D、度为2的节点数是度为l的节点数的两倍标准答案:B知识点解析:根据二义树的性质3:在任意一一棵二又树中,度为0的叶子节点总是比度为2的节点多一个,所以选择B选项。3、定义部门关系模式如下:部门(部门号,部门名,部门成员,部门总经理),使它不满足第一范式的属性是()。A、部门名B、部门成员C、部门总经理D、部门号标准答案:B知识点解析:对于关系模式,若其中的每个属性都已不能再分为简单项,则它属于第一范式。本题中“部门成员”可进一步分解(成员编号、姓名等),因此不满足第一范式。4、通常软件测试实施的步骤是()。A、集成测试、单元测试、确认测试B、单元测试、集成测试、确认测试C、确认测试、集成测试、单元测试D、单元测试、确认测试、集成测试标准答案:B知识点解析:软件测试过程一般按4个步骤进行,即单元测试、集成测试、验收测试(确认测试)和系统测试。在本题中,答案应该选B。5、若有定义语句:intm[][3]={1,2,3,4,5,6,7};,则与该语句等价的是()。A、intm[][3]={{1,2,3},{4,5},{6,7}};B、intm[][3]={{1,2},{3,4},{5,6,7}};C、intm[][3]={{1,2,3},{4,5,6},{7}};D、intm[][3]={{1},{2,3,4},{5,6,7}};标准答案:C知识点解析:考查二维数组的初始化。初始化二维数组的时候,若给数组的全部元素均赋初值,此时第一维的元素个数可以不指定,部分赋值时,最后一行元素不写完整,此时数组第一维元素个数仍然可以不指定。题中为按行给数组m赋值,最后一行只有部分赋初值,答案选C。6、在软件开发中,需求分析阶段产生的主要文档是A、可行性分析报告B、软件需求规格说明书C、概要设计说明书D、集成测试计划标准答案:B知识点解析:需求分析的最终结果是生成软件需要规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标与确认,又可以作为控制软件开发进程的依据。7、以下叙述中正确的是()。A、语句p=NULL;执行后,指针P指向地址为0的存储单元B、指针变量只能通过求地址运算符&来获得地址值C、语句p=NULL;与p=\0;是等价的语句D、int*p1;、int**p2;、int*p3;都是合法的定义指针变量的语句标准答案:D知识点解析:考查指针变量。指针变量的定义形式为:类型名*指针变量名,表示指向某一个变量的指针,如果定义形式为:类型名**指针变量名,则表示指向某一个指针变量的指针,所以D选项正确。指针变量本身存储的是其指向的变量的地址值,不需要使用求地址运算符&来获得地址,B选项错误。p=NULL;是将空指针赋给指针变量,表示该指针变量当前未指向任何变量,语句p=\0;本身不正确,两者不等,故选项A、C错答案选D。8、有以下程序段inti,n;for(i=0;i<8;i++){n=rand0%5;switch(n){case1:case3:printf("%d\n",n);break;case2:case4:printf("%d\n",n);continue;case0:exit(0);}printf("%dkn",n);}A、当产生的随机数n为4时结束循环操作B、当产生的随机数n为1和2时不做任何操作C、当产生的随机数n为0时结束程序运行D、for循环语句固定执行8次标准答案:C知识点解析:rand()函数功能为产生一个随机数,ralId()%5,则产生0~4之间的任意随机数,当产生的随机数n为O时,执行case0:exit(0)这条语句,结束程序的运行。9、设有如下程序:#includechars[20]=“Beijing”,*P;P=s:则执行P=s;语句后,以下叙述正确的是()。A、s和P都是指针变量B、s数组中元素的个数和P所指字符串长度相等C、可以用*P表示s[0]D、数组s中的内容和指针变量P中的内容相同标准答案:C知识点解析:程序定义了字符数组s和字符型指针变量p,并且使得p指向数组,执行p=s;语句后,*p即表示s[0];s数组中元素的个数和p所指字符串长度不相等,因为s数组中元素的个数包括字符串结束标志“\0”,而p所指字符串长度不包括“\0”;s是字符型数组,p是指针变量,数组s中的内容和指针变量p中的内容不相同,数组中存放的是字符串,而指针变量p存放的是数组的首地址,因此C选项正确。10、若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:由于B和C有一一对应的联系,而A和B之间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。11、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A、自然连接B、差C、交D、并标准答案:B知识点解析:由三个关系R、S和T的结构可以知道,关系T是由关系R、S经过差运算得到的。12、设有以下函数:voidfun(intn,char*s){…},则下列对函数指针的定义和赋值均正确的是()。A、void(*pf)(int,char);pf=&fun;B、void*pf();pf=fun;C、void*pf();*pf=fun;D、void(*pf)(int,char*);pf=fun;标准答案:D知识点解析:函数的参数可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中。函数名代表函数的入口地址,指向函数的指针应该定义为void(*pf)()。如果定义为void*pf(),则表示函数pf的返回值是一个基类型为void的指针,因此D选项正确。13、如果定义floata[10],x;则以下叙述中正确的是A、表达式a+l是非法的B、语句a=&x;是非法的C、三个表达式a[1]、*(a+1)、*&a[1]表示的意思完全不同D、表达式木&a[1]是非法的,应该写成木(&(a[1]))标准答案:B知识点解析:定义语句floata[10],x;以后,数组名a表示了数组元素的首地址,是常量在程序中不能更改,因此选项A是的描述是正确的。而指向运算符和取址运算符,是互反运算符优先级相同,*&a[1]和*(&a[1])含义相同。14、在数据库中,产生数据不一致的根本原因是A、数据冗余B、没有严格保护数据C、未对数据进行完整性控制D、数据存储量太大标准答案:A知识点解析:在一个数据集合中重复的数据称为数据冗余。数据冗余是指数据之间的重复,也可以说是同一数据存储在不同数据文件中的现象。15、以下选项中合法的C语言赋值语句是()。A、++i;B、a=b=34C、a=3,b=9D、k=int(a+b);标准答案:A知识点解析::考查赋值语句。C语言语句在结尾必须有分号,没有分号则不合法,选项B)、C)错;C语言中强制转换类型需要将类型说明符给括起来,应该为k=(int)(a+b),选项D)错;答案选A)。16、十进制整数设为整数类I,则下面属于类I的实例的是A、-518B、0.518C、518E-2D、.518标准答案:A知识点解析:整数的全体构成整数集,整数集是一个数环。在整数系中,零和正整数统称为自然数。-1、-2、-3、…、-n、…(n为非零自然数)为负整数。则正整数、零与负整数构成整数系。整数不包括小数、分数。本题中,选项A是正确的,选项B是小数,选项C是科学计数,也是小数,选项D是小数。17、下列定义变量的语句中错误的是A、floatUS$;B、doubleint;C、charFor;D、int_int;标准答案:A知识点解析:C语言规定,变量的标识符只能由字母、数字或下划线3种字符组成,且首字符必须为字母或下划线。在C语言中大写字母和小写字母被认为是两个不同的字符。选项B)定义的变量标识符int和选项D)定义的变量标识符int与C语言的关键字int是不同的,是正确的变量标识。选项C)定义的变量标识符For与C语言中的关键字for是两个不同的标识符,而在选项A)包含有特殊字符$,因而其不符合C语言的变量命名规定。18、以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#include<stdio_h>#defineN10voidfun(intx[N]){inti=0;while(i<N)scanf("%d",_______);}在程序中下划线处应填入的是A、x+iB、x[i+1]C、x+(i++)D、x[++i]标准答案:C知识点解析:本题考查数组和scanf函数的使用。程序通过while循环来给数组元素赋值,赋值语句通过调用seanf函数来实现。scanf函数从键盘接收数据,第二个参数是数据保存的地址,因此选项B)和选项D)不是地址,错误。选项A)和选项C)是地址,但是选项A)的i值不会发生变化,循环体内每次都是给同一个元素赋值,不满足要求,选项C)正确。19、以下叙述中正确的是A、在C语言中,预处理命令行都以”#”开头B、预处理命令行必须位于C源程序的起始位置C、#include必须放在C程序的开头D、C语言的预处理不能实现宏定义和条件编译的功能标准答案:A知识点解析:在C语言中,凡是以“#”号开头的行,都称为“编译预处理”命令行。预处理命令可以放在程序中的任何位置,其有效范围是从定义开始到文件结束。预处理命令有宏定义、文件包含和条件编译三类。#include命令行表示程序中要引用C标准函数库中的标准输入输出函数。20、有下列程序:#include<stdio.h>#include<string.h>typedefstruct{charname[9];charsex;floatscore[2];}STU;STUf(STUa){STUb={’’Zhao’’,’m’,85.0,90.0);inti;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i<2;i++)a.score[i]=b.score[i];returna;}main(){STUc={“Qian’’,’f,95.0,92.0},d;d=f(c);printf(”%s,%c,%2.0f,%2.0fW’,d.neme,d.sex,d.score[0],d.score[1]);}程序的运行结果是A、Qian,m,85,90B、Zhao,f,95,92C、Zhao,m,85,90D、Qian,f,95,92标准答案:D知识点解析:f()函数的功能是对形参a的各个成员用结构体变量b的各个成员进行赋值后,然后返回变量a。在主函数中调用f(C函数时,将sTu类型的结构体变量c的值传递给形参a,函数f()在对a的各个成员进行重新赋值后,再将返回变量a的值传给d,最后输出结构变量d的各个成员的值。21、以下叙述中正确的是A、if语句只能嵌套一层B、不能在else子句中再嵌套if语句C、if子句和else子句中可以是任意的合法的C语句D、改变if-else语句的缩进格式,会改变程序的执行流程标准答案:C知识点解析:含else子句的if语句的格式为if(表达式)语句1else语句2其中if和else是C语言的关键字。“语句1”称为if子句,“语句2”称为else子句,这些子句只允许为一条语句,若需要多条语句时,则应该使用复合语句,对于if和else语句的嵌套原则是比较自由的。22、下面选项中合法的字符常量是A、XB、’X’C、’abc’D、’\’标准答案:B知识点解析:字符常量是用单引号括起来的一个字符。A选项中,使用双引号,所以是错误的;C选项中,’abc’是字符串,字符常量只能是单个字符,不能是字符串;D选项中,以反斜线"\"开头的是转义字符。因此B选项正确。23、有以下程序#include<stdio.h>main(){intn,*p=NULL;*p=&n;printf("Inputn:");scanf("%d",&p);printf("outputn:");orintf("%d\n",p:}该程序、试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是A、intn,*p=NULL;B、*p=&n;C、scanf("%d",&p)D、printf("%d\n",p);标准答案:A知识点解析:选项A)表示在程序中,声明定义变量语句“intn,*p=NULL;”定义了整型变量n和指针变量p,并且指针变量p初始化为空。其他的语句都是错误的。其中选项B),&n的地址应存放到指针变量p中,而选项C)中数据输入项错误,选项D)输出地址信息。24、I/O方式中使计算机系统并行工作程度最高的是()。A、DMAB、程序查询C、程序中断D、通道控制标准答案:D知识点解析:I/O方式包括程序查询、程序中断、直接存储器存取(DMA)和通道控制等。通道控制方式可以做到一个通道控制多台设备与内存进行数据交换,因而,通道控制方式进一步减轻了CPU的工作负担,增加了计算机系统的并行工作程度。故本题答案为D选项。25、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是()。A、1B、0C、2D、不知道a的值,不能确定标准答案:A知识点解析:逻辑或“||”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道a的值,但是若a为1,则左边运算对象为1;若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共25题,每题1.0分,共25分。)1、算法的有穷性是指A、算法程序的运行时间是有限的B、算法程序所处理的数据量是有限的C、算法程序的长度是有限的D、算法只能被有限的用户使用标准答案:A知识点解析:算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。2、下列程序段选项中,使i的运行结果为4的程序段是()。A、hati=0,j=0;(i=3,(j++)+i)B、inti=1,j=0;j=i=((j=3*2))C、inti=0,j=1;(i==1)?(i=1):(i=3)D、inti=1,j=1;i+j+=2;标准答案:D知识点解析:选项A)中,主要明确逗号表达式运算符的优先级低于赋值运算符优先级,因此i=3;选项B)中,括号内先计算3木2得到6,然后对j赋值为6,所以得i=6;选项C)中,条件表达式j=1成立,故i=1;选项D)中,算术赋值运算符的运算顺序是自右向左,故i+=j+=2相当于j=j+2,i=i+j,故i=4,i的运算结果为4,满足题目要求。3、一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为()。A、219B、229C、230D、231标准答案:B知识点解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点多一个,叶子结点为80,度为2的结点为79,所以总结点数为:80+70+79=229,选B。4、下列叙述中正确的是()。A、算法的效率只与问题的规模有关,而与数据的存储结构无关B、算法的时间复杂度是指执行算法所需要的计算工作量C、数据的逻辑结构与存储结构是一一对应的D、算法的时间复杂度与空间复杂度一定相关标准答案:B知识点解析:算法的时间复杂度是指执行算法所需要的计算工作量,与数据的存储结构有关,与算法的空间复杂度没有关系。数据的逻辑结构与存储位置无关,即与存储结构无关,所以选择B。5、下列叙述中正确的是A、对长度为n的有序链表进行查找,最坏情况下需要的比较次数为nB、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)D、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)标准答案:A知识点解析:本题主要考查的知识点为查找技术。顺序查找的使用情况:①线性表为无序表;②表采用链式存储结构。二分法查找只适用于顺序存储的有序表,并不适用于线性链表。6、已有定义:charc;,程序前面已在命令中包含ctype.h文件。不能用于判断c中的字符是否为大写字母的表达式是A、isupper(c)B、’A’<=c<=’Z’C、’A’<=c&c<=’Z’D、c<=(’z’-32)&(’a’-32)<=c标准答案:D知识点解析:本题考查字符变量和逻辑运算。选项A通过调用函数isupper来判断字符c是否是大小字母,满足要求:选项B是逻辑表达式.不管c为何值,’A’<=c为真或者假,然后再和’Z’比较结果必然为真(0和1都小于’Z’的ASCII值);选项C是通过与运算来判断c是否是大小字母:选项D中’z’-32和大小字母’Z’相等,同样’a’-32和大小字母’A’相等。7、以下正确的字符串常量是A、’abc’B、OlympicGamesD、\\\标准答案:C知识点解析:字符串常量是由双引号括起来的一串字符。在C语言中,以一个反斜线开头后跟一个特定的字符.用来代表一个特定的ASCII字符。利用两个’\\’表示一个反斜杠,因此选项D的表示无法确认表示几个反斜杠。8、在软件设计中,不属于过程设计工具的是A、PDL(过程设计语言)B、PAD图C、N-S图D、DFD图标准答案:D知识点解析:PDL语言(PDLlanguage)一种设计性语言。它是软件设计中广泛使用的语言之一;PAD是问题分析图(ProblemAnalysisDiagram)的英文缩写,自1974年由日本的二村良彦等人提出的又一种主要用于描述软件详细设计的图形表示工具;数据流图(DataFlowDiagram):简称DFD,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法;N-S图也被称为盒图或CHAPIN图。由一些基本的框组成一个大的框,这种流程图又称为N-S结构流程图(以两个人的名字的头一个字母组成)。N-S图包括顺序、选择和循环三种基本结构。常见的过程设计工具有:图形工具:程序流程图,N-S,PAD,HIPO:表格工具:判定表:语言工具:PDL(伪码).9、关于“while(条件表达式)循环体”,以下叙述正确的是A、循环体的执行次数总是比条件表达式的执行次数多一次B、条件表达式的执行次数与循环体的执行次数一样C、条件表达式的执行次数总是比循环体的执行次数多一次D、条件表达式的执行次数与循环体的执行次数无关标准答案:C知识点解析:while语句中表达式是循环条件,语句为循环体。while语句中当表达式计算的值为真(非O)时,执行循环体语句。因此条件表达式执行的次数总是比循环体多一次。10、数据库技术的根本目标是要解决数据的A、存储问题B、共享问题C、安全问题D、保护问题标准答案:B知识点解析:数据库中的数据具有“集成”、“共享”之特点,即数据库集中了各种应川的数据,进行统一地构造与存储,而使它们能被不同的应用程序所使用。因而数据库技术的根本目标是解决数据的共享问题。11、以下选项中,合法的是()。A、charstr3[]={′d′,′e′,′b′,′u′,′g′,′0′};B、charstr4;str4=″helloworld″;C、charname[10];name=″china″;D、charstr1[5]=″pass″,str2[6];str2=str1;标准答案:A知识点解析:选项B不能把一个字符串赋值给一个字符变量,选项C和D犯了同样的错误是把字符串赋给了数组名。12、有以下程序#include<stdio.h>intfun(intn){inta;if(n=1)return1;a=n+fun(n-1);return(a);)main(){pfintf(’’%d\n’’,fun(5));}程序的输出结果是A、14B、10C、15D、9标准答案:C知识点解析:函数fun为递归定义的函数,当调用fun(5)→5+fun(4)→5+4+fun(3)→5+4+3+fun(2)→5+4+3+2+fun(1),因此最后的结果为15。13、设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为()。A、0B、’\0’C、非0值D、NULL标准答案:C知识点解析:本题考查文件的定位。feof函数的用法是从输入流读取数据,如果到达文件末尾(遇文件结束符),eof函数值为非零值,否则为0,所以C选项正确。14、假定已建立以下链表结构,且指针p和q已指向如图所示的节点。则下列选项中可将q所指节点从链表中删除并释放该节点的语句组是()。A、p->next=q->next;free(q);B、p=q->next;free(q);C、p=q;free(q);D、(*p).next=(*q).next;free(p);标准答案:A知识点解析:本题考查删除链表中的节点操作。其方法是将要删除节点的上个节点的下个节点指向要删除节点的下个节点,然后释放该要删除的节点,所以选项A正确。15、若有以下程序#include<stdio.h>int*flint*S,int*t){intk;if(*S<*t){k=*s;*s=*t;*t=k;}retums;}main(){inti=3,j:5,*p=&i,*q=&j,*r;r=f(p,q);pfintf(’’%d,%d,%d,%d,%d\n’’,i,j,*P,*q,*r);}则程序的输出结果是A、3,5,5,3,5B、3,5,3,5,5C、5,3,5,3,5D、5,3,3,5,5标准答案:C知识点解析:函数f为返回值为指针的函数,丰要功能是返回s和t指向空间值人的数据的地址,同时如何s指向空间数据大于t指向空间的数据,那么交换。主函数p和q指向i和j,值为3和5,j的值大于i的值,因此调用蛹数f以后,返回i的地址,r指向j,同时i和j的值交换,i=5,j=3,p和q的指向不变,p指向i,q指向j。16、以下叙述中正确的是A、a表示一个字符常量B、’\0’表示字符0C、表达式:’a’>’b’的结果是“假”D、’\"’是非法的标准答案:C知识点解析:字符常量可以参加关系运算,按照其存储的ASCII码值进行比较,’a’>’b’不成立,值为假。而’\0’表示NULL,ASCII码值为0。17、有以下计算公式若程序前面已经在命令行中包含math.h文件,不能够正确计算上述公式的程序段是A、y=sqrt(x);if(x<0)y=sqrt(-x);B、if(x>=0)y=sqrt(x);elsey=sqrt(-x);C、if(x>=0)y=sqrt(x);if(x<0)y=sqrt(-x);D、y=sqrt(x>=07x:-x);标准答案:A知识点解析:由题意可知计算公式的含义是:当x大于等于0时,y值等于x的算术平方根;当x小于0时,y值等于x的相反数的算术平方根。所以选项B用一个完整的ifelse语句表达了计算公式的含义:选项C用两个if语句表达了计算公式的含义;选项D在求平方根函数的后面用x≥0?x:-x条件表达式来表达了计算公式的含义。选项A没有用C语言语句正确的表达计算公式的含义。18、以下不能将S所指字符串正确复制到t所指存储空间的是A、for(i=0;t[i]:s[i];i++);B、while(*t=*s){t++;s++;}C、for(i=0,j=0;t[i++]=s[j++];);D、do{*t++=*s++;}while(*s);标准答案:D知识点解析:在选项D中,不能把s所指字符串的结束标志符赋给字符串t。19、若有以下说明和语句intc[4][5],(*p)[5];p=c;能够正确引用c数组元素的是A、p+1B、*(p+3)C、*(p+1)+3D、*(p[0]+2)标准答案:D知识点解析:本题考查数组和指针,在本题中c是二维数组,指针p指向二维数组c,p其实是指向c数组的第一行。因此选项A)中p+1指向c数组的第二行:选项B)中,p+3表示p指向c数组的第三行,因此*(p+3)表示取出c数组第三行首元素的地址;选项C)和选项B)类似,表示取出数组c第二行首元素地址然后加3;选项D)中p[0]+2表示数组第一行第三列元素的地址,因此*(p[0]+2)是取出该元素的值。20、若有定义语句:intk[2][3],*pk[3];,则以下语句中正确的是A、pk=k;B、pk[0]===k[1][2];C、pk=k[0];D、pk[1]=k;标准答案:B知识点解析:本题考查多维数组和数组指针。k是一个二维数组,pk是一个指针数组,该数组有3个元素,每个元素都是一个指向整型对象的指针。选项A错误,等号的左边是一个数组地址,不是变量;选项B是把元素k[1][2]赋值给pk[0]:选项C中等号左边不是变量;选项D类型不匹配,pk[1]是指向一个整型对象,而k是一个二维数组首地址。21、有以下程序,程序的输出结果是#include<stdio.h>#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}A、0B、1C、9D、10标准答案:B知识点解析:SQR(k+m)宏展开以后为k+m*k+m,值为5,表达式a/=SQR(k+m)/SQR(k+m)为a=a/(5+5),表达式值为1。22、设有定义:intx[2][3];则以下关于二维数组x的叙述错误的是A、数组x可以看作是由x[0]和x[1]两个元素组成的一维数组B、可以用x[0]=0;的形式为数组所有元素赋初值0C、元素x[0]可看作是由3个整型元素组成的一维数组D、x[0]和x[1]是数组名,分别代表一个地址常量标准答案:B知识点解析:二维数组的元素在内存中占一系列连续的存储单元。数组元素在内存中的排列顺序是先存放第0行的元素,再存放第1行的元素……称这种存放顺序为按行存放。可以把一个二维数组看成是一个一维数组,每个数组元素又是包含有若干个元素的一维数组。另

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论