(新版)二级C语言考试复习题库(500题)_第1页
(新版)二级C语言考试复习题库(500题)_第2页
(新版)二级C语言考试复习题库(500题)_第3页
(新版)二级C语言考试复习题库(500题)_第4页
(新版)二级C语言考试复习题库(500题)_第5页
已阅读5页,还剩239页未读 继续免费阅读

下载本文档

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

文档简介

PAGEPAGE1(新版)二级C语言考试复习题库(500题)一、单选题1.关系数据库管理系统能实现的专门关系运算包括()。A、排序、索引、统计B、选择、投影、连接C、关联、更新、排序D、显示、打印、制表答案:B解析:关系运算包括:①传统集合运算,包括并、交、差、广义笛卡尔积;②专门关系运算,包括选择、投影、连接、除等。答案选择B选项。2.下列叙述中错误的是()。A、在数据库系统中,数据的物理结构必须与逻辑结构一致B、数据库技术的根本目标是要解决数据的共享问题C、数据库设计是指在已有数据库管理系统的基础上建立数据库D、数据库系统需要操作系统的支持答案:A解析:数据库物理结构主要指数据的存放位置和存储结构,包括关系、索引、聚簇、日志、备份等的存储安排和存储结构;数据库的逻辑结构是用户所看到和使用的数据库,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。A项错误,存储位置的改变并不影响逻辑关系。答案选择A选项。3.有以下程序:#includemain(){char*s="12134";intk=0,a=0;while(s[k+1]!='\0'){k++;if(k%2==0){a=a+s[k]-'0'+1;continue;}a=a+(s[k]-'0');}printf("k=%da=%d\n",k,a);}程序运行后的输出结果是()。A、k=6a=11B、k=3a=14C、k=4a=12D、k=5a=15答案:C解析:第一次循环,k=1,s[1]=2,执行a=a+s[1]-'0'=2;第二次循环,k=2,s[2]=1,执行a=a+s[2]-'0'+1=2+2=4;第三次循环,k=3,s[3]=3,执行a=a+s[3]-'0'=4+3=7;第四次循环,k=4,s[4]=4,执行a=a+s[k]-'0'+1=7+5=12,可得到结果k=4,a=12。答案选择C选项。4.有以下程序#includevoidfun(int*p,int*q){intt;t=*p;*p=*q;*q=t;*q=*p;}main(){inta=0,b=9;fun(&a,&b);printf("%d%d\n",a,b);}程序的输出结果是()。A、09B、00C、90D、99答案:D解析:main函数中变量a和b以传地址的方式传递参数,形参的改变会导致实参的改变。fun函数的作用是先交换两个指针的指向的值,即p指针指向的值是9,q指针指向的值是0,然后将p指针指向的值赋给q指针,q指针指向的值也成了9,所以a和b的值均为9,答案选择D选项。5.有以下程序:#includemain(){intx=0x13;if(x=0x12)printf("True");printf("False\n");}程序运行后的输出结果是()。A、TrueB、TrueFalseC、FalseD、TrueFalseTrue答案:B解析:if(x=0x12)条件语句为赋值语句,注意赋值操作符“=”与相等操作符“==”的区别,此处是赋值语句“=”0x12即十进制的18,给x赋值18,因此if的判断条件为真,执行输出语句,输出True;之后再执行下一个输出语句,输出False,答案选择B选项。6.有以下程序(注:字符a的ASCII码值为97):#includemain(){char*s={"abc"};do{printf("%d",*s%10);++s;}while(*s);}程序运行后的输出结果是()。A、bcB、789C、7890D、979800答案:B解析:abc的ASCII值分别为97、98、99。程序中执行输出s中字符对应的ASCII码与10进行模运算后的值,s是一个指针,首先指向字符a,先执行97%10,结果为7;然后++s,指针指向下一个字符b,执行98%10,结果为8,直到s所指为空,故最后输出的结果为789。答案选择B选项。7.某二叉树共有845个结点,其中叶子结点有45个,则度为1的结点数为()。A、400B、754C、756D、不确定答案:C解析:在二叉树中,度为0的结点总是比度为2的结点多一个,那么,结点共有845个,度为0的结点有45个,度为2的结点数有44个,所以度为1的结点数有756个。答案选择C选项。8.对建立良好的程序设计风格,下面描述正确的是()。A、程序应简单、清晰、可读性好B、符号名的命名只要符合语法C、充分考虑程序的执行效率D、程序的注释可有可无答案:A解析:程序不仅仅要能够正常运行,还要便于调试和维护,所以程序语句结构应该简单直接,具有良好的可读性,建立良好的程序设计风格。答案选择A选项。9.支持子程序调用的数据结构是()。A、栈B、树C、队列D、二叉树答案:A解析:在高级语言中,函数的调用是通过栈来实现的。在进行函数调用时,系统将所需的信息压入栈中,如函数的局部变量、返回值等。每个函数的状态是由函数中的局部变量、函数参数值、函数的返回值地址决定的,存储这些信息的数据区域称为活动记录,或叫做栈帧,它是运行时系统栈上分配的空间。答案选择A选项。10.以下是if语句的基本形式:if(表达式)语句其中“表达式”()。A、必须是逻辑表达式B、必须是关系表达式C、必须是逻辑表达式或关系表达式D、可以是任意合法的表达式答案:D解析:if中的表达式一般是关系表达式或逻辑表达式,用于描述选择结构的条件,但也可以是其他类型表达式,在其值非零时为真,所以任意合法的表达式都可以做if语句的判断条件。答案选择D选项。11.以下关于指针的叙述正确是()。A、所有类型的指针变量所占内存的大小是一样的B、指针变量所占内存的大小与其类型有关,char型指针变量只占1个字节,double型指针变量占8个字节C、指针变量可直接指向任何类型的变量,而不会出现编译或运行错误D、指针变量既可以直接指向结构体,也可直接指向结构体中某个成员,而不会出现编译或运行错误答案:A解析:所有变量地址值所占字节都相同,故指针变量所占内存大小相同,A项正确,B项错误。只能把具有相同类型的变量地址,存放到指针变量中,结构体变量与某个成员类型不同,不能用同样的指针指向它们,C、D两项错误。答案选择A选项。12.设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是()。A、n=0;while((ch=getchar())!="\n")n++;B、n=0;while(getchar()!="\n";n++);C、for(n=0;getchar()!="\n";n++);D、n=0;for(ch=getchar()!="\n";n++);答案:D解析:要统计一行中输入字符个数(不包含回车符)的程序实现,首先定义一个用作统计的变量n,赋初值为0;因为字符结束应该有换行符,所以该行字符是否结束的判断条件应为“getchar()!="\n"”;D项中for循环表达式格式错误,应在ch前添加“;”,注意for循环中有三个表达式,必须有两个分号,D项编译错误。答案选择D选项。13.下面描述不属于软件特点的是()。A、软件是一种逻辑实体,具有抽象性B、软件在使用中不存在磨损、老化问题C、软件复杂性高D、软件使用不涉及知识产权答案:D解析:软件具有以下特点:①软件是一种逻辑实体,具有抽象性;②软件没有明显的制作过程;③软件在使用期间不存在磨损、老化问题;④软件对硬件和环境具有依赖性;⑤软件复杂性高,成本昂贵;⑥软件开发涉及诸多的社会因素,如知识产权等。答案选择D选项。14.下列选项中不属于面向对象程序设计特征的是()。A、分类性B、多态性C、类比性D、封装性答案:C解析:面向对象设计是建立在“对象”概念上的方法学,对象是面向对象语言中类的实体,其特点包括:①标识唯一性,对象可区分;②分类性,可以将具有相同属性和操作的对象抽象成类;③多态性,同一个操作对于不同对象表现不同的行为;④封装性,屏蔽数据的具体结构以及操作的算法;⑤模块独立性好,对象内部各种元素结合紧密,内聚性强。答案选择C选项。15.设有定义doublex[10],*p=x;以下能给数组x下标为6的元素读入数据的正确语句是()。A、scanf("%f",&x[6]);B、scanf("%1f",*(x+6));C、scanf("%1f",p+6);D、scanf("%1f",p[6]);答案:C解析:scanf函数的一般形式为:scanf(格式控制字符串,地址列表);,其中的地址列表应当是存放输入数据变量的地址。A项,“%f”格式符对应的是float类型的变量;BD两项,*(x+6)和p[6]都表示下标为6的元素的值而非其地址;C项,p+6表示数组x下标为6的元素的地址。答案选择C选项。16.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是()。A、函数的形参和实参分别占用不同的存储单元B、形参只是形式上的存在,不占用具体存储单元C、同名的实参和形参占同一存储单元D、函数的实参和其对应的形参共占同一存储单元答案:A解析:函数体中,变量(包括形参)只在函数被调用时才临时开辟存储单元,当退出函数时,这些临时开辟的存储单元全被释放掉。C语言中函数调用可以分成传值和传引用,传值调用,形参是实参的数据拷贝;传引用调用,形参是实参的指针拷贝;所以,形参和实参占用不同的存储单元。答案选择A选项。17.若变量已正确定义并赋值,则错误的赋值语句是()。A、=a+1;B、a=sizeof(double);C、a=dǁc;D、a+1=a;答案:D解析:赋值号的左边必须是一个代表某个存储单元的变量名,赋值号的右边必须是C语言中合法的表达式。赋值运算的功能是先求出右边表达式的值,然后把此值赋给赋值号左边的变量。答案选择D选项。18.某二叉树的前序序列为ABCDEFG,中序序列为DCBAEFG,则该二叉树的后序序列为()。A、EFGDCBAB、DCBEFGAC、BCDGFEAD、CBGFEA答案:D解析:二叉树的前序序列为ABCDEFG,A为根结点。中序序列为DCBAEFG,可知DCB为左子树结点,EFG为右子树结点。依此类推,画出该二叉树,二叉树的后序序列为DCBGFEA。答案选择D选项。19.以下叙述正确的是()。A、C程序总是以main()作为程序执行的起始行B、main()函数若不带参数,其后面的一对圆括号可省略C、函数体内的定义语句和可执行语句允许任意穿插出现D、C语言中的语句之间必须用分号作为分隔符答案:A解析:main函数后面的括号告诉编译器这是一个函数,不可以省略,排除B选项;在复合语句中,不仅可以有执行语句,还可以有定义语句,定义语句应该出现在执行语句的前面,故排除C选项;C语言中的某些语句可以不用分号,例如if语句,宏定义,故D选项错误。答案选择A选项。20.有以下程序#includemain(){char

B,c;inti;b='a';c='A';for(i=0;i<6;i++){if(i%2)putchar(i+b);elseputchar(i+c);}printf("\n");}程序运行后的输出结果是()。A、BcDeFB、ABCDEFC、AbCdEfD、abcdef答案:C解析:本题中,当i为偶数时,即0、2、4,执行putchar(i+c)会依次输出ACE;当i为奇数时,即1、3、5,执行putchar(i+b)会依次输出bdf,所以最终输出AbCdEf。答案选择C选项。21.若有定义语句:intx=12,y=8,z;在其后执行语句:z=0.9+x/y;则z的值为()。A、1.9B、1C、2D、2.4答案:B解析:由于x,y,z都是整型数据,所以x除以y的值为整型数值1,之后1和0.9相加得到1.9,再转换为整型数1赋给整型变量z。答案选择B选项。22.有两个关系R和T如下:则由关系R得到关系T的操作是()。A、投影B、交C、选择D、并答案:A解析:关系T是由关系R的第1、3列的元组组成,这是对关系R进行投影运算的结果。可以简单理解为:选择运算是对行(元组)的操作,投影运算是对列的操作。投影运算是对列的操作。投影是从表中选出指定的属性值组成新表,是单目运算,答案选择A选项。23.若a是数值类型,则逻辑表达式(a==1)ǁ(a!=1)的值是()。A、1B、0C、2D、不知道a的值,不能确定答案:A解析:运算符“ǁ”为逻辑或运算符,即只要两边的条件表达式中有一个为“真”,则“逻辑或”的运算结果就为“真”。当a==1时,运算符左边的表达式为“真”;当a!=1时,运算符右边的表达式为“真”。因此,逻辑表达式(a==1)ǁ(a!=1)的值恒为1。答案选择A选项。24.有两个关系R与S如下,由关系R和S得到关系T,则所使用的操作为()。A、并B、自然连接C、除法D、交答案:C解析:除运算可以近似地看作笛卡尔积的逆运算。R÷S=T,T称为R除以S的商。S中属性为A和A1,T中属性为B和B1,在R元组中找到对应于S中两个元组的T中元组为f3与n2。R中最后一个元组与S中无对应关系,所以在T中也不会出现。答案选择C选项。25.若变量已正确定义,在if(W)printf("%d\n",k);中,以下不可替代W的是()。A、<>b+cB、c=getchar()C、a==b+cD、a++答案:A解析:在C语言中,表示不等于不能用“<>”,而只能使用“!=”。答案选择A选项。26.关于C语言的变量名,以下叙述正确的是()。A、变量名不可以与关键字同名B、变量名不可以与预定义标识符同名C、变量名必须以字母开头D、变量名是没有长度限制的答案:A解析:合法的标识符由字母(大、小写均可)、数字和下划线组成,并且必须以字母或下划线开头。关键字是指被C语言保留的,不能用作其他用途的标识符,它们在程序中都代表着固定的含义,用户不可重新定义,A项正确、BC两项错误。变量名没有长度限制,但不可超过编译器可以辨识的范围,D项错误。答案选择A选项。27.有以下程序#includemain(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序运行后的输出结果是()。A、2,3,1B、2,3,2C、2,3,3D、2,2,1答案:A解析:考查逗号表达式。注意区分,z=x++是先将x的值赋给z,在令x自增;z=++x是先将x自增,再将自增后的值赋给z;而无论是++x还是x++,都会完成x自增的运算。对于表达式“z=x++,y++,++y;”,因为赋值运算符的优先级高于逗号运算符的优先级,所以可以将上式改成“(z=x++),(y++),(++y);”。然后从左向右先计算表达式z=x++,后缀自增运算先进行其他运算,再执行自增运算,所以z的值为1,x的值为2,再计算逗号表达式第二个表达式y++,此时y的值为1,y++的值为2,最后计算第三个表达式++y,y的值为3。答案选择A选项。28.数据库管理系统是()。A、操作系统的一部分B、在操作系统支持下的系统软件C、一种编译系统D、一种操作系统答案:B解析:系统软件主要包括:①操作系统软件;②各种语言的解释程序和编译程序;③各种服务性程序;④各种数据库管理系统。数据库管理系统是一种系统软件,负责数据库中的数据组织、数组操纵、数据维护、控制和保护以及数据服务等。答案选择B选项。29.以下选项中,不能对主函数中变量i和j的值进行交换的程序是()。A、#includevoidswap(int*p,int*q){int*t;*t=*p;*p=*q;*q=*t;}main(){inti=10,j=20,*a=&i,*b=&j;swap(a,b);printf("i=%dj=%d\n",i,j);}B、#includevoidswap(int*p,int*q){intt;t=*p;*p=*q;*q=t;}main(){inti=10,j=20,*a=&i,*b=&j;swap(a,b);printf("i=%dj=%d\n",i,j);}C、#include#includevoidswap(int*p,int*q){int*t;t=(int*)malloc(sizeof(int));*t=*p;*p=*q;*q=*t;free(t);}main(){inti=10,j=20;swap(&i,&j);printf("i=%dj=%d\n",i,j);}D、#includevoidswap(int*p,int*q){intt;t=*p;*p=*q;*q=t;}main(){inti=10,j=20,*x=&i,*y=&j;swap(x,y);printf("i=%dj=%d\n",i,j);}答案:A解析:A项,定义了一个临时指针t,实现两个指针地址的交换,而传入的参数是两个变量i和j的地址,但是函数内部交换的是地址值,并没有交换主函数中变量i与j的值;B项,调用函数传入的是i与j地址,函数体内交换的是地址内元素,临时变量t为整型变量,能实现i与j值交换;C项,调用函数传入的是i与j地址,函数体内交换的是地址内元素,临时变量t为整型指针,且已正确开辟内存,能实现i与j值交换;D项与B项相同,能实现i与j值交换。答案选择A选项。30.下列叙述中正确的是()。A、栈是“先进先出”的线性表B、队列是“先进后出”的线性表C、循环队列是非线性结构D、有序线性表既可以采用顺序存储结构,也可以采用链式存储结构答案:D解析:有序的线性表既可采用顺序存储结构,也可以采用链式存储结构。A项错误,栈是“先进后出”的线性表;B项错误,队列是“先进先出”的线性表;C项错误,循环队列是线性结构的,有序的线性表既可采用顺序存储结构,也可采用链式存储结构。答案选择D选项。31.在数据库系统中,数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述是()。A、外模式B、逻辑模式C、概念模式D、物理模式答案:A解析:数据库的标准结构为三级模式结构,包括:①外模式;②模式;③内模式。其中,外模式也称用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。答案选择A选项。32.若函数中有定义语句:intk;则()。A、系统将自动给k赋初值0B、这时k中的值无定义C、系统将自动给k赋初值-1D、这时k中无任何值答案:B解析:intk;这条语句是定义一个整型变量k,这是动态定义,编译程序仅为k开辟存储单元,而没有在存储单元中存放任何初值,此时变量中的值时无意义的。若是静态定义,则会自动初始化,其默认值为0。答案选择B选项。33.以下叙述正确的是()。A、C语言函数可以嵌套调用,例如:fun(fun(x))B、C语言程序是由过程和函数组成的C、语言函数不可以单独编译D、C语言中除了main函数,其他函数不可作为单独文件形式存在答案:A解析:一个函数的返回值可以作为参数然后传给另一个函数,因此函数是可以嵌套调用的。B项错误,C语言程序只有函数构成,没有过程;C项错误,编译系统的任务在于检查语法错误,只要符合语法规则的C程序都可以通过编译,就算是单独的函数也可以;D项错误,在C语言中除main()函数以外的其他函数可以和main()函数在同一个C文件中,也可以单独处于其他的C文件,只要在使用到这些函数的main()函数的C文件中用预编译指令“#include”包含进来即可。答案选择A选项。34.以下描述中,不是线性表顺序存储结构特征的是()。A、可随机访问B、需要连续的存储空间C、不便于插入和删除D、逻辑相邻的数据物理位置上不相邻答案:D解析:在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素称为顺序存储,其中逻辑上相邻的元素在物理位置上也相邻。顺序存储结构中可以随机访问元素,但插入和删除需要移动大量数据,耗费资源。答案选择D选项。35.设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为()。A、课号,成绩B、学号,成绩C、学号,课号D、学号,姓名,成绩答案:C解析:学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字应该是与前两个表能够直接联系且能唯一定义的学号和课号。答案选择C选项。36.已知a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n=c<d)后n的值为()。A、1B、0C、2D、-1答案:C解析:“=”优先级低于“<”、“>”。“&&”逻辑与表达式。exp1&&exp2,规则为:对exp1求值,若为0,则表达式为0,则不计算exp2;若exp1非0,则求exp2值,作为表达式值。本题计算过程为:先判断a>b为假,m=0,整个逻辑表达式为假,不计算右表达式,n=2。答案选择C选项。37.下列特征中不是面向对象方法的主要特征的是()。A、多态性B、标识唯一性C、封装性D、耦合性答案:D解析:面向对象设计是建立在“对象”概念上的方法学,对象是面向对象语言中类的实体,其特点包括:①标识唯一性,对象可区分;②分类性,可以将具有相同属性和操作的对象抽象成类;③多态性,同一个操作对于不同对象表现不同的行为;④封装性,屏蔽数据的具体结构以及操作的算法;⑤模块独立性好,对象内部各种元素结合紧密,内聚性强。答案选择D选项。38.下列数据结构中,能用二分法进行查找的是()。A、顺序存储的有序线性表B、线性链表C、二叉链表D、有序线性链表答案:A解析:二分查找只适用于顺序存储的有序表。此处所说的有序表是指线性表中的元素按值非递减排列或非递增排列。答案选择A选项。39.线性表常采用的两种存储结构是()。A、散列方法和索引方式B、链表存储结构和数组C、顺序存储结构和链式存储结构D、线性存储结构和非线性存储结构答案:C解析:线性表常用的存储结构为:①顺序存储结构,物理上连续存储,空间位置隐含逻辑位置;②链式存储结构,各元素物理存储上不连续,通过指针相连。答案选择C选项。40.以下叙述中错误的是()。A、基类型不同的指针可以直接相互赋值B、函数可以通过指针形参向所指单元传回数据C、字符型指针可以指向一个字符串D、一般情况下,指针的运用可使程序代码效率更高答案:A解析:把一个指针变量的值赋给另一个指针变量,但一定要确保这两个指针变量的基类型是相同的。答案选择A选项。41.有以下程序#includeintk=5;voidf(int*s){s=&k;*s=7;}main(){intm=3;f(&m);printf("%d,%d\n",m,k);}程序运行后的输出结果是()。A、3,5B、7,7C、5,7D、3,7答案:D解析:函数f的功能是定义一个整型的指针变量s,指向全局变量k,然后修改s指向地址中的值为7,因此f函数只是修改全局变量k的值为7,与main函数中临时变量m无关,因此最后输出为3,7。答案选择D选项。42.在E-R图中,用来表示实体联系的图形是()。A、椭圆形B、矩形C、菱形D、三角形答案:C解析:在E-R图中,菱形表示联系,矩形表示实体,椭圆形表示属性。答案选择C选项。43.设栈的顺序存储空间为S(0:49),栈底指针bottom=49,栈顶指针top=30(指向栈顶元素)。则栈中的元素个数为()。A、30B、29C、20D、19答案:C解析:栈是一种特殊的线性表,它所有的插入与删除操作都限定在表的同一端进行。入栈运算即在栈顶位置插入一个新元素,退栈运算即取出栈顶元素赋予指定变量。在内存中,栈的增大方向是地址递减,元素依次存储在单元30:49中,个数为:49-30+1=20个。答案选择C选项。44.有以下函数:#includevoidexch(intt[]){t[0]=t[5];}main(){intx[10]={1,2,3,4,5,6,7,8,9,10},i=0;while(i<=4){exch(&x[i]);i++;}for(i=0;i<5;i++)printf("%d\n",x[i]);}程序运行后的输出结果是()。A、246810B、13579C、12345D、678910答案:D解析:函数exch的作用就是把数组某个元素的值变为这个元素位置加5后对应的元素值,所以执行完之后输出数组x的前五个元素的值,其实就是数组x的后五个元素的值,答案选择D选项。45.下面不属于软件设计阶段任务的是()。A、软件的功能确定B、软件的总体结构设计C、软件的数据设计D、软件的过程设计答案:A解析:软件设计阶段的任务包括:①结构设计;②数据设计;③接口设计;④过程设计。软件的功能确定是在需求分析阶段完成的。答案选择A选项。46.下列选项中属于面向对象设计方法主要特征的是()。A、继承B、自顶向下C、模块化D、逐步求精答案:A解析:面向对象设计方法的主要特征有封装性、继承性和多态性。而结构化程序设计方法的主要原则有自顶向下、逐步求精、模块化、限制使用goto语句。BCD三项是结构化程序的主要特征。答案选择A选项。47.设有定义:doublex=2.12;,以下不能完整输出变量x值的语句是()。A、printf("x=%5.0f\n",x);B、printf("x=%f\n",x);C、printf("x=%lf\n",x);D、printf("x=%0.5f\n",x);答案:A解析:printf函数控制字符%f输出float类型,%lf输出double类型。格式控制%m.nf,表示数据输出总的宽度为m位,其中小数部分占n位。当数据的小数位多于指定宽度n时,截去右边多余的小数,并对截去的第一位小数做四舍五入处理;而当数据的小数位少于指定宽度n时,在小数的右边补零;当m小于有效位数时,整数部分输出所有有效数字并且自动对齐,小数部分按照n指定位数输出。A项按照float格式输出数据,宽度为5位,保留小数0位,输出为2,不能完整输出x。B项按照float格式输出数据,输出为2.120000。C项按照double格式输出数据,输出为2.120000。D项按照float格式输出数据,保留小数位数为5,输出为2.12000。答案选择A选项。48.以下选项中,当x为大于1的奇数时,值为0的表达式是()。A、x%2==1B、x/2C、x%2!=0D、x%2==0答案:D解析:当x为大于1的奇数,x%2==1,则表达式x%2==0为假(即值为0),答案选择D选项。49.软件生命周期可分为定义阶段、开发阶段和维护阶段。详细设计属于()。A、定义阶段B、开发阶段C、维护阶段D、上述三个阶段答案:B解析:软件生命周期可分为:①定义阶段,包括可行性研究、需求分析;②开发阶段,包括概要设计、详细设计、实现、测试;③维护阶段,包括使用、维护、退役。答案选择B选项。50.数据库系统在其内部具有3级模式,用来描述数据库中全体数据的全局逻辑结构和特性的是()。A、外模式B、概念模式C、内模式D、存储模式答案:B解析:概念模式,也称逻辑模式,是对数据库系统中全局数据逻辑结构的描述,由若干个概念记录类型组成,还包含记录间联系、数据的完整性、安全性等要求。它不涉及具体的硬件环境与平台,与具体的软件环境也无关。答案选择B选项。51.有以下函数:#includevoidfunc(intn){inti;for(i=0;i<=n;i++)printf("*");printf("#");}main(){func(3);printf("????");func(4);printf("\n");}程序运行后的输出结果是()。A、****#????***#B、***#????*****#C、**#????*****#D、****#????*****#答案:D解析:从main函数开始,执行func()函数,for循环执行4次,连续输出四个“*”,然后输出一个“#”;输出“????”;再次调用func(),for循环执行5次,连续输出五个“*”,然后输出一个“#”;最后输出换行符。答案选择D选项。52.对有序线性表(23,29,34,55,60,70,78)用二分法查找值为60的元素时,需要比较次数为()。A、1B、2C、3D、4答案:C解析:二分法查找法不断的将序列分为可能包含和必然不包含的两部分,本题流程为:①将60与中间的元素55进行比较,60>55,所以60不可能在前4个元素中;②第二次将60与中间的元素70进行比较,60<70,所以60不可能在后2个元素中;③第三次将60与中间元素60比较,这时查找成功。答案选择C选项。53.有以下程序:#includemain(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;}printf("%d,%d\n",a,b);}程序运行后的输出结果是()。A、9,18B、8,11C、7,11D、10,14答案:D解析:初始值a=1,b=2,第一次循环:b=b+a=2+1=3,a=a+2=1+2=3,a=a+1=3+1=4;第二次循环:b=b+a=3+4=7,a=a+2=4+2=6,a=a+1=6+1=7;第三次循环:b=b+a=7+7=14,a=a+2=7+2=9,a=a+1=9+1=10,不满足for循环条件退出循环,最终a=10,b=14。答案选择D选项。54.以下关于C语言的叙述中正确的是()。A、C语言中的注释不可以夹在变量名或关键字的中间B、C语言中的变量可以在使用之前的任何位置进行定义C、在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致D、C语言的数值常量中夹带空格不影响常量值的正确表示答案:A解析:A项正确,C语言中,程序中的注释可以出现在程序中任何合适的地方,但是,不能写在变量名或关键字的中间,一旦写在其中间,将会失去变量名或关键字的意义,导致报错;B项错误,条件没有说全,应该是在有效的范围内,变量可以在任何位置定义,例如注释中定义无效。C项错误,在C语言的算术运算符中,取余运算符“%”的两个运算分量必须是整数,但对于其他运算符,如“+”,“-”来说,两侧的运算符类型也可以不一样,例如左侧为一个字符类型,右侧为一个整数类型,系统在执行程序时会自动将字符类型转换为ASCII值进行运算;D项错误,C语言的数值表示时各个数位必须紧靠在一起,否则编译系统只会识别紧靠运算符的一部分数值,另一部分数值会发生语法错误。答案选择A选项。55.以下选项中可用作C程序合法实数的是()。A、1e0B、3.0e0.2C、E9D、9.12E答案:A解析:C程序的合法实数有小数和指数两种表示形式。其中,对于用指数形式表示的实数来说,字母e或E之前必须要有数字,且字母e或E后面的指数必须为整数。B项,e后的指数不能为小数形式;C项,E前必须要有数字;D项,E后缺少整数形式的指数。答案选择A选项。56.在黑盒测试方式中,设计测试用例的主要根据是()。A、程序外部功能B、程序内部逻辑C、程序数据结构D、程序流程图答案:A解析:黑盒测试也称功能测试或数据驱动测试,完全不考虑程序内部逻辑结构和具体代码,把程序看作是一个不能打开的黑盒子,依据软件需求规格说明书,检查程序的功能是否符合它的功能说明,主要针对软件界面和软件功能进行测试。答案选择A选项。57.若有定义语句inta,b;doublex;则下列选项中没有错误的是()。A、switch(x%2){case0:a++;break;case1:b++;break;default:a++;b++;}B、switch((int)x/2.0){case0:a++;break;case1:b++;break;default:a++;b++;}C、switch((int)x%2){case0:a++;break;case1:b++;break;default:a++;b++;}D、switch((int)(x)%2){case0.0:a++;break;case1.0:b++;break;default:a++;b++;}答案:C解析:switch语句中,表达式的类型应与case语句后的常量类型保持一致,并且switch的判断条件只能为整型或字符型,case后面为常量表达式。A项,x%2得到的是浮点型数据,而case语句后的常量是整型数据,类型不一致;B项,(int)x/2.0得到的也是浮点型数据,类型不一致;D项,(int)x%2.0得到的是整型数据,而case语句后的常量是浮点型数据,类型也不一致。答案选择C选项。58.有以下程序:#includemain(){intA=0,B=0,C=0;C=(A-=A-5);(A=B,B+=4);printf("%d,%d,%d\n",A,B,C);}程序运行后输出的结果是()。A、0,4,5B、4,4,5C、4,4,4D、0,0,0答案:A解析:C语言中可以将多条语句放在同一行,用“;”隔开。赋值运算和逗号运算都是从左到右结合。首先执行A-=A-5,即A=A-(A-5),得A的值为5,然后执行C=(A-=A-5),即将A的值5赋给变量C,使得C的值也为5。然后执行下句逗号表达式中的A=B,把B的值0赋给A,此时A的值为0,然后执行B=B+4,使得B的值为4,最后打印输出。答案选择A选项。59.下列叙述中,不符合良好程序设计风格要求的是()。A、程序的效率第一,清晰第二B、程序的可读性好C、程序中要有必要的注释D、输入数据前要有提示信息答案:A解析:“清晰第一,效率第二”是当今主导的程序设计风格。对程序的要求不仅是能够运行正常,还要便于调试和维护,所以程序要具有良好的可读性,语句结构应该简单直接,这有利于程序的开发与维护。答案选择A选项。60.若有以下程序#includemain(){inta=-2,b=0;do{++b;}while(a++);printf("%d,%d\n",a,b);}则程序的输出结果是()。A、2,3B、0,2C、1,2D、1,3答案:D解析:while(a++)是先判定a是否为0,不管判定结果如何,都执行a++。当a++的值为0时,a的值为1,即a增加了3,因此,b也增加3。答案选择D选项。61.有以下程序#includemain(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf("%d\n",c);}执行后的输出结果是()。A、4B、2C、1D、3答案:D解析:本题中*p=*p1*(*p2)=a*b=3,也就是将指针p所指存储空间的值改为3,即c改为3。答案选择D选项。62.下列叙述中正确的是()。A、所谓有序表是指在顺序存储空间内连续存放的元素序列B、有序表只能顺序存储在连续的存储空间内C、有序表可以用链接存储方式存储在不连续的存储空间内D、任何存储方式的有序表均能采用二分法进行查找答案:C解析:“有序”是指线性表中的元素按照升序或降序(允许相邻元素相同)的方式排列。有序是一个逻辑概念,与物理存储无关。二分法查找时涉及下标运算,要求有序表必须顺序存储。答案选择C选项。63.有如下程序:#includemain(){inta=0,b=1;if(++a==b++)printf("T");elseprintf("F");printf("a=%d,b=%d\n",a,b);printf("\n");}程序运行后的输出结果是()。A、Ta=0,b=1B、Fa=1,b=2C、Ta=1,b=2D、Fa=0,b=2答案:C解析:程序执行过程为:判断++a==b++是否成立,++a前置运算先加1,则运算符==左边表达式值为1,a=1,b++后置运算先取值,则==右边表达式值我1,b=2,即是判断1==1,成立,输出T,输出a=1,b=2。答案选择C选项。64.在E-R图中,用()来表示实体之间联系。A、矩形B、菱形C、椭圆形D、正方形答案:B解析:E-R图是实体联系模式图,其中用矩形表示实体集;用椭圆形表示属性;用菱形表示联系。答案选择B选项。65.以下程序段中,不能实现条件“如果aA、x=(a>=b)?-10:10;B、if(a<b)x=10;elsex=-10;C、x=-10;if(b>a)x=10;D、if(a<b)x=10;if(b<a)x=-10;答案:D解析:A项:条件运算符?运算过程为:如果a>=b,x=-10,否则x=10,能实现题目中功能。B项:如果a<b,则x=10,否则x=-10,能实现题目中功能。c项:首先赋值x=-10,如果a<b,则x=10,即在a>=b情况下有x=-10,能实现题目中功能。D项:如果a<

B,则x=10,如果b<a,则x=-10,其中没有对a=b进行判断,不能实现题目中功能,答案选择D选项。66.结构化程序设计的基本原则不包括()。A、多态性B、自顶向下C、模块化D、逐步求精答案:A解析:结构化程序设计的基本原则包括:①模块化;②自顶向下;③逐步求精;④限制使用goto语句。多态性是面向对象的设计思想。答案选择A选项。67.某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为()。(假设根结点在第1层)A、3B、4C、6D、7答案:D解析:在任意一个二叉树中,度为0的叶子结点总比度为2的结点多一个,所以本题中度为2的结点为1-1=0个,即二叉树的每一个结点都只有一个孩子,7个结点共7层。答案选择D选项。68.有以下程序:#includemain(){char*s="120119110";intn0,n1,n2,nn,i;n0=n1=n2=nn=i=0;do{switch(s[i++]){default:nn++;case'0':n0++;case'1':n1++;case'2':n2++;}}while(s[i]);printf("n0=%d,n1=%d,n2=%d,nn=%d\n",n0,n1,n2,nn);}程序的运行结果是()。A、n0=3,n1=8,n2=9,nn=1B、n0=2,n1=5,n2=1,nn=1C、n0=2,n1=7,n2=10,nn=1D、n0=4,n1=8,n2=9,nn=1答案:A解析:本题执行过程为:s[0]='1',匹配case'1',n1=1,n2=1;s[1]='2',匹配case'2',n2=2;s[2]='0',匹配case'0',n0=1,n1=2,n2=3;s[3]='1',匹配case'1',n1=3,n2=4;s[4]='1',匹配case'1',n1=4,n2=5;s[5]='9',匹配default,nn=1,n0=2,n1=5,n2=6;s[6]='1',匹配case'1',n1=6,n2=7;s[7]='1',匹配case'1',n1=7,n2=8;s[8]='0',匹配ease'0',n0=3,n1=8,n2=9;s[9]='\0',退出循环。输出n0,n1,n2,nn为3,8,9,1,答案选择A选项。69.若实体A和B是一对一的联系,实体B和C是多对一的联系,则实体A和C的联系是()。A、多对一B、一对多C、一对一D、多对多答案:A解析:实体集之间必须通过联系来建立联接关系,分为:①一对一联系,即1:1;②一对多联系,即1:m;③多对多联系,即m:n。本题中,A与B是1:1联系,B与C是m:1联系,所以A与C是m:1联系,即多对一。答案选择A选项。70.当数据库中数据总体逻辑结构发生变化,而应用程序不受影响,称为数据的()。A、逻辑独立性B、物理独立性C、应用独立性D、空间独立性答案:A解析:数据独立性是指数据独立于程序,包括:①物理独立性,指数据的物理结构改变,应用程序不用改变;②逻辑独立性,指数据的逻辑结构改变,应用程序不用改变。答案选择A选项。71.设变量已正确定义并赋值,以下正确的表达式是()。A、x=y*5=x+zB、int(15.8%5)C、x=y+z+5,++yD、x=25%5.0答案:C解析:赋值运算左边必须是单一变量名。A项错误,“y*5=x+z”部分是非法赋值。BD两项错误,求余运算中的操作对象只能是整型。C项,为逗号表达式。答案选择C选项。72.有如下程序:#includeintsub(doublea,doubleb){return(int)(a-b);}main(){printf("%d\n",sub(3.8,2.1));}程序运行后的输出结果是()。A、2.0B、1.7C、2D、1答案:D解析:在类型转换过程中,如果较高类型转换成较低类型,直接忽略多余位数。程序执行过程为:调用函数sub(3.8,2.1),3.8-2.1=1.7(double类型),(int)强制转换将1.7转换成int类型1,然后返回1并输出。答案选择D选项。73.下列叙述中正确的是()。A、数据的逻辑结构与存储结构必定是一一对应的B、由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C、程序设计语言中的数据一般是顺序存储结构,因此,利用数组只能处理线性结构D、以上三种说法都不对答案:D解析:A项错误,数据的逻辑结构反映数据元素之间逻辑关系,与存储的物理结构并没有一一对应关系;B项错误,线性结构和非线性结构是关于逻辑结构的两种不同分类,存储结构上没有线性和非线性之分;C项,利用数组也能处理非线性结构,比如用数组存储二叉树。答案选择D选项。74.在医院,每个医生只属于某一个诊疗科,医生同一天可为多位患者看病,而一名患者可在多个科室治疗,则实医生和患者之间的联系是()。A、多对多B、多对一C、一对多D、一对一答案:A解析:一般来说,实体集之间必须通过联系来建立连接关系,分为三类:①一对一联系(1:1);②一对多联系(1:m);③多对多联系(m:n)。医生可为多位患者看病,患者也可以找多位医生看病,实体医生与患者联系是多对多,答案选择A选项。75.有以下程序段:inta,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;printf("a=%db=%dc=%d",a,b,c);程序的输出结果是()。A、=10b=50c=10B、a=10b=50c=30C、a=10b=30c=10D、a=10b=30c=50答案:A解析:因为a=10,b=50,所以a<b,if语句判断条件不成立,于是执行c=a,得到c=10,a和b的值不变。答案选择A选项。76.结构化程序由顺序、选择、循环三种基本结构组成,以下相关叙述错误的是()。A、三种基本结构不可以嵌套使用B、顺序结构是按语句在程序中的先后顺序逐条执行,没有分支,没有转移C、选择结构是根据不同的条件执行不同分支中的语句D、循环结构是根据条件决定是否重复、重复执行多少次循环体语句答案:A解析:结构化程序主要由3种基本控制结构组成,顺序结构是最基本的算法结构,当执行由这些语句构成的程序时,将按这些语句在程序中的先后顺序逐条执行,没有分支,没有转移,没有步骤之间的相互约束,没有对某一步骤的多次使用,完全按照步骤的原有次序依次执行,B选项叙述正确。选择结构根据不同的条件去执行不同分支中的语句,C选项叙述正确。循环结构就是根据各自的条件,使同一组语句重复执行多次,D选项叙述正确。三种结构可以嵌套使用,A选项叙述错误,答案选择A选项。77.数据流程图(DFD图)是()。A、软件概要设计的工具B、软件详细设计的工具C、结构化方法的需求分析工具D、面向对象方法的需求分析工具答案:C解析:数据流图是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模,是结构化方法的需求分析工具。答案选择C选项。78.有以下程序:#includemain(){chara,b,c,d;scanf("%c%c",&a,&b);c=getchar();d=getchar();printf("%c%c%c%c\n",a,b,c,d);}当执行程序时,按下列方式输入数据(从第一列开始,代表回车,注意:回车是一个字符)1234则输出结果是()。A、123B、12C、1234D、1234答案:A解析:scanf()函数的一般调用形式为:scanf(格式控制,输入地址列表)。其中,格式控制是用双引号括起来的字符串,包括格式字符和普通字符,格式是由“%”和格式字符组成。getchar()函数的功能是从标准输入设备上读入一个字符。根据程序中的格式控制可知,接收输入时分别把1赋给了a,2赋给了b,然后getchar()函数提取一个换行符赋给c,再提取一个字符3赋给了d。所以程序的输出结果为:123。答案选择C选项。79.在教师表中,如果要找出职称为“教授”的教师,所采用的关系运算是()。A、投影B、选择C、联接D、自然选择答案:B解析:投影表示从关系模式中指定若干属性组成新的关系。选择表示从关系中找出满足给定条件的元组的操作。联接是关系的横向结合,联接运算将两个关系模式拼接成一个更宽的关系模式,生成新的关系中包含满足联接条件的元组。属性同为“教授”的教师组成新的关系。答案选择B选项。80.有以下程序:#includevoidfun(inta,intb){intt;t=a;a=b;b=t;}main(){intc[10]={1,2,3,4,5,6,7,8,9,0},i;for(i=0;i<10;i+=2)fun(c[i],c[i+1]);for(i=0;i<10;i++)printf("%d,",c[i]);printf("\n");}程序运行的结果是()。A、1,2,3,4,5,6,7,8,9,0,B、2,1,4,3,6,5,8,7,0,9,C、0,9,8,7,6,5,4,3,2,1,D、0,1,2,3,4,5,6,7,8,9,答案:A解析:在C语言中,函数参数传递的作用是“传值”,形参和实参是两个没有关系的变量。函数fun交换了参数值,但只是交换了形参的值,结果并不会传递给实参。所以数组c没有发生变化,原顺序输出。答案选择A选项。81.下列关于线性链表的描述中,正确的是()。Ⅰ.只含有一个指针域来存放下一个元素地址Ⅱ.指针域中的指针用于指向该结点的前一个或后一个结点(即前件或后件)Ⅲ.结点由两部分组成:数据域和指针域。A、仅Ⅰ、ⅡB、仅Ⅰ、ⅢC、仅Ⅱ、ⅢD、全部答案:C解析:在链式存储方式中,双向链表有两个指针域,故Ⅰ错误。每个结点包含存放数据的数据域和存放指针的指针域,故Ⅲ正确。指针用于表示线性逻辑关系,指向该结点的前驱、后继或者两者都有,故Ⅱ正确。答案选择C选项。82.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是()。A、冒泡排序为n(n-1)/2B、简单插入排序为nC、希尔排序为nD、快速排序为n/2答案:A解析:在最坏情况下,冒泡排序、直接插入排序与简单选择排序法均需要比较n(n-1)/2次。希尔排序需要比较n1.5次,堆排序需要比较的次数最少,为nlog2n。答案选择A选项。83.设有如下关系表,由关系R和S通过运算得到关系T,则所使用的运算为()。A、T=R∩SB、T=R∪SC、T=R×SD、T=R/S答案:B解析:交运算和并运算用于属性相同的两个关系间,其中交运算的结果是既属于关系R也属于关系S的集合,并运算将结构相同的两个关系合并,合并后的关系包含两个关系中的所有元组。答案选择B选项。84.函数调用语句:fun((exp1,exp2),(exp1,exp2,exp3));含有的实参个数是()。A、1B、4C、5D、2答案:D解析:函数fun参数列表中有两个参数,多个参数之间用逗号分隔,分别是逗号表达式“(exp1,exp2)”的值与“(exp1,exp2,exp3)”的值。答案选择D选项。85.线性表的链式存储结构与顺序存储结构相比,链式存储结构的优点有()。A、节省存储空间B、插入与删除运算效率高C、便于查找D、排序时减少元素的比较次数答案:B解析:顺序表可以随机存取,元素间关系隐藏于存储关系中,但插入与删除操作需要移动大量元素,降低了效率;链表查找时需要沿链依次比较,效率低,为了表示元素间关系需要额外的指针域,但插入与删除操作仅需改变指针,比顺序表快。答案选择B选项。86.有以下定义inta;longb;doublex,y;则以下选项中正确的表达式是()。A、(a*y)%bB、a==x<>yC、a%(int)(x-y)D、y=x+y=x答案:C解析:%运算是取两整数相除后余数的运算符,它只适用于整数的运算。A项错误,(a*y)%b中的(a*y)为double型;B项错误,C语言中没有<>运算符;C项正确,x-y结果为double型,但是通过强制类型转换将其转换为int型;D项错误,x+y不能作为左值。答案选择C选项。87.有以下程序#includemain(){inta=7;while(a--);printf("%d\n",a);}程序运行后的输出结果是()。A、-1B、0C、1D、7答案:A解析:“++”和“—”运算,当以前缀形式出现时,则先进行加一或减一操作,再取值,当以后缀形式出现时,则先取值,再进行加一或减一操作。程序中执行a--,直到while判断为0时才跳出循环,执行下条语句,即a为0时再执行a--,此时跳出while循环,最终输出的结果为-1。答案选择A选项。88.以下定义语句中正确的是()。A、floata=1,*b=&a,*c=&b;B、inta=b=0;C、harA=65+1,b='b';D、oublea=0.0;b=1.1;答案:C解析:A项错误,b是指针变量,*c=&b表示将一个二级指针赋值给一个一级指针,应该为*c=b或者**c=&b;B项错误,变量定义的时候不能用连续用等号,等号在定义是初始化的一种;D项错误,变量前为分号“;”表示前面的语句定义完毕,变量b的定义没有指明变量类型。答案选择C选项。89.若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是()。A、x+1=yB、++x,y=x--C、x=x+10=x+yD、ouble(x)/10答案:B解析:B项正确,++x是前缀表达式,y=x--是复合语句,先进行x--,然后把自减后的值赋给y。A项错误,x+1是右值,不能被赋值;C项错误,x+10是右值,不能被赋值;D项错误,应改成(double)x/10,double(x)/10是表示声明了一个double变量,它名字是(x)/10,显然不符合C语言语法。答案选择B选项。90.若已有定义语句:inta,b,c;且变量已正确赋初值,则以下选项中正确的赋值表达式是()。A、=(b=c)+8;B、(a=b)=c=9;C、a=(b==c)='A';D、a+b=c+1;答案:A解析:A项正确,将c赋值给b后又加上8,然后再赋值给a;B、D项错误,赋值运算符左边必须是一个变量;C项错误,(b==c)是个表达式,语法错误。答案选择A选项。91.设有定义:intx=7,y=12;,则以下表达式值为3的是()。A、(y%=x)-(x%=5)B、y%=(x%=5)C、y%=x-x%5D、y%=(x-x%5)答案:A解析:A项正确,a%=b表示a=a%(b),A项可改写成y=y%x,x=x%5,再计算y-x计算的结果为3,满足题意;B项为0,C项为2,D项等同于C项。答案选择A选项。92.下列不属于软件设计阶段任务的是()。A、软件总体设计B、算法设计C、制定软件确定测试计划D、数据库设计答案:C解析:软件概要设计阶段的任务有:①软件体系结构设计;②软件数据结构和数据库设计;③编写概要设计文档;④概要设计文档评审。软件确认测试计划是在需求分析阶段制定的,依据需求规格说明书来验证软件的功能和性能。答案选择C选项。93.若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。A、x=y==5;B、x=n%2.5;C、x+n=i;D、x=5=4+1;答案:A解析:A项正确,y==5返回0或者1,然后赋值给x。B项错误,浮点数不能参与模运算;C项错误,赋值运算符左边只能是单一变量,x+n是右值,不能给它赋值;D项错误,5是常量,不能被赋值。答案选择A选项。94.有以下程序#includemain(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf("%d,%d,%d,%d\n",a,b,c,d);}程序输出()。A、0,0,0,3B、编译有错C、1,1,2,0D、0,1,2,0答案:B解析:如果if的执行语句含有多个语句(两个以上),则必须使用复合语句,即用花括号把一组语句括起来;否则,紧跟if的下一条语句是它的执行语句,因此c=2不是if执行语句,它是在if和else之间的语句。在程序中else必须与if配对,共同组成一条if-else语句,中间不能出现其他语句,因此该程序编译错误。答案选择B选项。95.若变量已正确定义为int型,要通过语句scanf("%d,%d,%d",&a,&b,&c);给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(u代表一个空格)()。A、1u2u3<回车>B、uuu1,2,3<回车>C、1,uuu2,uuu3D、1,2,3答案:A解析:在输入整数或实数这类数值型数据时,输入的数据之间必须用空格、回车符、制表符(Tab键)等间隔符隔开,间隔符个数不限。在题目中,scanf函数使用通配符逗号,则在输入数据时也要使用通配符逗号,且逗号要紧跟着数据后面。B项,没有输入非格式符“,”。答案选择A选项。96.下列数据结构中,属于非线性结构的是()。A、循环队列B、带链队列C、二叉树D、带链栈答案:C解析:线性结构要满足两个条件:①有且仅有一个根结点;②每个结点最多有一个前驱,也最多有一个后继。栈和队列均满足这两个条件,属于线性结构;循环队列是一个头结点和尾结点互为前驱结点和后继结点的特殊的队列,属于线性结构;带链队列、带链栈都是用链表形式来实现的,分别满足队列和栈的条件,只是存储结构不连续,属于线性结构。二叉树除了叶子结点外,每个结点都可以有两个后继结点,属于非线性结构。答案选择C选项。97.C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述中正确的是()。A、预定义标识符(如库函数中的函数名)可用作用户标识符,但失去原有含义B、用户标识符可以由字母和数字任意顺序组成C、在标识符中大写字母和小写字母被认为是相同的字符D、关键字可用作用户标识符,但失去原有含义答案:A解析:C语言允许把预定义标识符重新定义另作他用,但这将失去预先定义的原意。B项,标识符的第一个字符必须为字母或下划线;C项,标识符区分大小写;D项,关键字是指被C语言保留的,不能用作其他用途的标识符。答案选择A选项。98.深度为5的完全二叉树的结点数不可能是()。A、15B、16C、17D、18答案:A解析:深度为n的完全二叉树的结点数范围为:2n-1-1+1~2n-1,本题中的范围即为24-1+1~25-1,即为16~31之间。所以节点数不可能是15,选A。99.以下叙述中错误的是()。A、算法正确的程序最终一定会结束B、算法正确的程序可以有零个输出C、算法正确的程序可以有零个输入D、算法正确的程序对于相同的输入一定有相同的结果答案:B解析:算法的5个特性:①有穷性;②确定性;③可行性;④有零个或多个输入;⑤有一个或多个输出。答案选择B选项。100.以下叙述中正确的是()。A、C程序中的注释只能出现在程序的开始位置和语句的后面B、C程序书写格式严格,要求一行内只能写一个语句C、程序书写格式自由,一个语句可以写在多行上D、用C语言编写的程序只能放在一个程序文件中答案:C解析:C程序的注释可以出现在C程序的任何位置,注释符号:“//”或“/*…*/”,选项A错误。C程序中,一行内可写多个语句,每条语句用分号“;”结束,选项B错误,选项C正确。用C语言编写的程序可以放在多个程序文件中,用#include命令行实现文件包含功能,选项D错误。答案选择C选项。101.下列叙述中正确的是()。A、结点中具有两个指针域的链表一定是二叉链表B、结点中具有两个指针域的链表可以是线性结构,也可以是非线性结构C、二叉树只能采用链式存储结构D、循环链表是非线性结构答案:B解析:A项错误,具有两个指针域的链表可能是双向链表,也可能是二叉链表,其中双向链表是线性结构,二叉树为非线性结构;B项正确,如双向链表是线性结构,二叉树为非线性结构,两者结点中均有两个指针域;C项错误,二叉树通常采用链式存储结构,也可采用其他结构;D项错误,循环链表是线性结构,逻辑概念线性非线性与实际存储结构无关。答案选择B选项。102.下列关于栈的描述中,正确的是()。A、在栈中只能插入元素B、在栈中只能删除元素C、只能在一端插入或删除元素D、只能在一端插入元素,而在另一端删除元素答案:C解析:栈是一种操作受限的线性表:栈只能在栈顶插入和删除元素。答案选择C选项。103.一棵二叉树共有25个结点,其中5个叶子结点,那么度为1的结点数为()。A、4B、6C、10D、16答案:D解析:根据二叉树的性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个,所以度为2的结点数为4个,那么25-5-4=16即为度为1的结点数。答案选择D选项。104.下列叙述中正确的是()。A、每个C程序文件中都必须要有一个main函数B、在C程序中main函数的位置是固定的C、程序中所有函数之间都可以相互调用D、在C程序的函数中不能定义另一个函数答案:D解析:在C程序中,main函数的位置可以任意,而且不管main函数位置怎么变化,程序都会以main函数作为入口,选项B错误;每个C程序(而不是每个C程序文件)必须有且只能有一个main函数,选项A错误;main函数不能被其他函数调用,选项C错误;函数的定义不能放在另一个函数体内,但是声明可以,答案选择D选项。105.针对简单程序设计,以下叙述的实施步骤正确的是()。A、确定算法和数据结构、编码、调试、整理文档B、编码、确定算法和数据结构、调试、整理文档C、整理文档、确定算法和数据结构、编码、调试D、确定算法和数据结构、调试、编码、整理文档答案:A解析:简单程序设计的步骤是首先要确定算法和数据结构,然后编码、调试,最后整理相关文档。答案选择A选项。106.程序段:intx=12;doubley=3.141593;printf("%d%8.6f",x,y);输出结果是()。A、123.141593B、123.141493C、12,3.141593D、123.1415930答案:A解析:输出的x与y间没有空格,“%8.6f”代表总共8位宽度,包括小数点,小数点后有6位小数。答案选择A选项。107.在三级模式之间引入两层映象,其主要功能之一是()。A、使数据与程序具有较高的独立性B、使系统具有较高的通道能力C、保持数据与程序的一致性D、提高存储空间的利用率答案:A解析:数据库管理系统在数据库的三级模式之间提供了两层映象,包括:①外模式/模式映射,当模式发生改变时,只要改变其映射,就可以使外模式保持不变,保证了逻辑独立性;②模式/内模式映射,当数据的存储结构发生变化时,只需改变模式/内模式映射,就能保持模式不变,保证了物理独立性。答案选择A选项。108.构成C程序的三种基本结构是()。A、顺序结构、转移结构、递归结构B、顺序结构、嵌套结构、递归结构C、顺序结构、选择结构、循环结构D、选择结构、循环结构、嵌套结构答案:C解析:结构化程序由三种基本结构组成:顺序结构、选择结构和循环结构。已经证明,由三种基本结构组成的算法可以解决任何复杂的问题。答案选择C选项。109.以下选项中不属于字符常量的是()。A、'C'B、"C"C、'\xCC'D、'\072'答案:B解析:B项,C语言中用双引号表示字符串,在分配存储空间时需要包含"\0"作为结束标志。CD两项,分别表示十六进制、八进制格式ASCII码值对应的字符常量。答案选择B选项。110.关于地址和指针,以下说法正确的是()。A、通过强制类型转换可以将一种类型的指针变量赋值给另一种类型的指针变量B、可以取一个常数的地址赋值给同类型的指针变量C、可以取一个表达式的地址赋值给同类型的指针变量D、可以取一个指针变量的地址赋值给基类型相同的指针变量答案:A解析:常数的地址存储在内存的常量区,常量区存储的都是常量,值都是不可修改的,所以直接取常量的地址赋给指针变量没有任何意义,C语言也不允许这样做,编译会出错,B项错误;表达式的值存储在临时变量中,内存中存在专门用来存储临时变量的区域,对这块地址进行操作也是没有意义的,C语言不允许这样做,编译会出错,C项错误;可以取一个指针变量的地址,但是指针变量的地址属于指针,只能赋值给指针类型的指针变量,D项错误。答案选择A选项。111.以下选项中叙述正确的是()。A、结构化程序的三种基本结构是循环结构、选择结构、顺序结构B、C语言源程序不编译也能直接运行C、使用N—S流程图不能描述复杂算法D、计算机能够直接运行C语言源程序,不必进行任何转换答案:A解析:编译就是把高级语言变成计算机可以识别的二进制语言,不经过编译的源程序是不能运行的,B项错误。算法可以用各种描述方法进行描述,N-S流程图把算法的每一步都用一个矩形框来表示,把一个个矩形框按执行的次序连接起来就是一个算法描述,无论算法复杂与否都能用N-S流程图描述,C项错误。C语言源程序需要经过编译和连接生成目标文件和可执行文件后才能运行,D项错误。答案选择A选项。112.软件开发中,需求分析阶段可以使用的工具是()。A、N-S图B、DFD图C、PAD图D、程序流程图答案:B解析:结构化解析方法是结构化程序设计理论在软件需求解析阶段的运用,DFD(数据流图)是结构化解析常用的工具之一,数据字典、判定树和判定表也是常用的结构化分析工具。程序流程图、N-S图、PAD图等图形工具用于详细设计的过程中。答案选择B选项。113.有以下程序:#includemain(){int*p,x=100;p=&x;x=*p+10;printf("%d\n",x);}程序运行后的输出结果是()。A、110B、120C、100D、90答案:A解析:程序执行过程为:定义指针p,指向变量x,p的值即为x的地址,*p就表示该地址处存放的值,x=(*p)+10=110,输出110。答案选择A选项。114.有以下程序:#includemain(){charc;while((c=getchar())!='\n'){switch(c-'2'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);default:putchar(c+2);break;}}printf("\n");}程序运行后从第一列开始输入以下数据:2473<回车>程序的输出结果是()。A、668977B、4444C、6677877D、68766答案:A解析:本题执行过程为:读入c='2',c-'2'=0,首先匹配case0,依次输出6,6,后执行break语句,跳出分支结构;读入c='4',c-'2'=2,匹配case2,输出8,执行break语句,跳出分支结构;读入c='7',c-'2'=5,匹配default,输出9,执行break语句,跳出分支结构;读入c='3',c-'2'=1,匹配case1,依次输出7,7,执行break语句,跳出分支结构。输入回车,结束循环。答案选择A选项。115.有以下程序:#includemain(){ints;scanf("%d",&s);while(s>0){switch(s){case1:printf("%d",s+5);case2:printf("%d",s+4);break;case3:printf("%d",s+3);default:printf("%d",s+1);break;}scanf("%d",&s);}}运行时,若输入123450<回车>,则输出结果是()。A、6566456B、66656C、66666D、6666656答案:A解析:输入1:执行case1,输出6,没有遇到break,继续执行case2,输出5,遇到break,跳出;输入2:执行case2,输出6,遇到break,跳出;输入3:执行case3,输出6,没有遇到break,执行default,输出4;输入4:执行default,输出5;输入5:执行default,输出6。最后输出结果是6566456。116.算法的空间复杂度是指()。A、算法在执行过程中所需要的计算机存储空间B、算法所处理的数据量C、算法程序中的语句或指令条数D、算法在执行过程中所需要的临时工作单元数答案:A解析:算法的空间复杂度是指算法在执行过程中所需要的计算机存储空间。包括算法程序所占空间,输入的初始数据所占空间和执行过程中所需要的额外空间。答案选择A选项。117.设有两行定义语句:intscanf;floatcase;则以下叙述正确的是()。A、两行定义语句都不合法B、两行定义语句都合法C、第1行语句不合法D、第2行语句不合法答案:D解析:预定义标识符是系统已经有过定义的标识符,用户可以重新定义,可以作为变量名。scanf为库函数名

温馨提示

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

评论

0/150

提交评论