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

下载本文档

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

文档简介

国家二级C语言机试(选择题)模拟试卷2(共9套)(共225题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共25题,每题1.0分,共25分。)1、一个完整的可运行的C源程序是()。A、至少需由一个主函数和(或)一个以上的函数构成B、由一个且仅由一个主函数和零个以上(含0个)的函数构成C、至少由一个主函数和一个以上的函数构成D、至少由一个且只有一个主函数或多个函数构成标准答案:B知识点解析:C程序是由一个或多个函数组成。在主函数中,必须有一个且只能有一个函数作为主函数main;程序从maill函数开始运行,主函数执行完毕,则程序执行完毕。除主函数外,可包括其他函数,这些函数只有被调用时才执行。2、下面对软件特点描述正确的是()。A、软件具有明显的制作过程B、软件在使用中存在磨损、老化问题C、软件复制不涉及知识产权D、软件是一种逻辑实体,具有抽象性标准答案:D知识点解析:软件具有以下特点:软件是一种逻辑实体,而不是物理实体,具有抽象性;软件的生产与硬件不同,它没有明显的制作过程;软件在运行、使用期间不存在磨损、老化问题;软件的开发、运行对硬件和环境具有依赖性;软件复杂性高,成本昂贵;软件开发涉及诸多的社会因素(包括软件知识产权及法律等问题)。3、下面对软件测试描述错误的是()。A、严格执行测试计划,排除测试的随意性B、随机地选取测试数据C、软件测试的目的是发现错误D、软件测试是保证软件质量的重要手段标准答案:B知识点解析:软件测试的准则如下:①所有测试都应追溯到需求。②严格执行测试计划,排除测试的随意性。③充分注意测试中的群集现象。④程序员应避免检查自己的程序。⑤穷举测试不可能。⑥妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。4、结构化程序所要求的基本结构不包括A、顺序结构B、GOTO跳转C、选择(分支)结构D、重复(循环)结构标准答案:B知识点解析:结构化程序的基本结构有:顺序结构、选择结构和循环结构,没有GOTO跳转结构。5、有以下程序#include<stdio.h>voidmain(){intn=2,k=1;while(1(k>0‖n++));printf(’’%d%d\n’’,k,n);}程序运行后的输出结果是()。A、02B、13C、57D、12标准答案:D知识点解析:在程序中整型变量n的初始值等于2,整型变量k的初始值等于1,在执行while语句时,由于表达式k的值大于0为真,所以不再需要判断“n++”是否为真,“(k>0‖n++)”表达式的值为真。“!(k>0‖n++)”表达式的值为假,所以while语句中的条件不满足,循环语句不会执行,变量n的值也不会加1,所在输出变量k和n的值是1和2。6、下面描述中错误的是A、系统总体结构图支持软件系统的详细设计B、软件设计是将软件需求转换为软件表示的过程C、数据结构与数据库设计是软件设计的任务之一D、PAD图是软件详细设计的表示工具标准答案:A知识点解析:软件设计是将软件需求转换为软件表示的过程:数据结构与数据库设计是软件设计的任务之一:PAD图,即问题分析图,是一种主要用于描述软件详细设计的图形工具。7、若有定义语句:intx=12,y=8,z;在其后执行语句:z=0.9+x/y;则z的值为()。A、1B、1.9C、2D、2.4标准答案:A知识点解析:x、y为整数,x/y值为1,加上0.9为1.9,赋值给整型变量z,接收后为1。8、下列描述中正确的是A、数据库系统是一个独立的系统,不需要操作系统的支持B、数据库技术的根本目标是要解决数据的共享问题C、数据库管理系统就是数据库系统D、以上三种说法都不对标准答案:B知识点解析:数据库系统由如下几个部分组成:数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。这五个部分构成了一个以数据库为核心的完整的运行实体,称为数据库系统。数据库技术的根本目的是要解决数据的共享问题。数据库中的数据具有“集成”、“共享”之特点,亦即数据库集中了各种应用的数据,进行统一地构造与存储,而使它们可被不同应用程序所使用。数据库管理系统(DatabaseManagementSystem,简称DBMS),是一种系统软件,负责数据库中的数据组织、数据操作、数据维护、控制及保护和数据服务等。它是数据库系统的核心。9、设变量均已正确定义并赋值,以下与其他三组输出结果不同的一组语句是A、x++;printf(”%d\n”,x);B、++x;printf(”%d\n”,x);C、n=x++;printf(”%d\n”,n);D、n=++x;printf(”%)d\n”,n);标准答案:C知识点解析:本题考查自增运算符。++在前表示先自增然后使用,++在后面表示先使用然后自增。选项A)中首先执行x++,执行完后x自增1,然后printf输出的是x自增后的值:选项B)首先执行++,x的值增加1,接着输出x的值;选项C)中++在x的后面,因此n的值是x自增前的值,printf输出韵是x自增前的值,选项D)中++在x的前面,因此x首先自增,然后再赋值给n,n的值是x自增后的值,输出的也是x自增后的值。10、以下程序的输出结果是()。(strcat函数用以连接两个字符串)#include#includemain(){chara[20]=’’ABCD\0EFG\0’’,b[]==’’IJK’’;strcat(a,b);printf(’’%s\n’’,a);}A、\OFG\OIJKB、ABCDIJKC、UKD、EFG标准答案:B知识点解析:在字符串中字符’’\0’’表示字符串的结束标志是系统自动加上的,所以字符串a和b相连接的结果为ABCDIJK。11、有以下程序:#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);标准答案:D知识点解析:D选项中,*f(a,b)表示调用后返回一个指向整型数据的地址指针,即该函数的返回值为指针类型,所以不能将其赋值给整形变量k。12、已有定义:charc;,程序前面已在命令中包含ctype.h文件。不能用于判断c中的字符是否为大写字母的表达式是A、isupper(c)B、’A’<=c<=’Z’C、’A’<=c&c<=’Z’D、c<=(’z’-32)&(’av’-32)<=c标准答案:D知识点解析:本题考查字符变量和逻辑运算。选项A)通过调用函数isupper来判断字符c是否是大小字母,满足要求:选项B)是逻辑表达式.不管c为何值,’A’<=c为真或者假,然后再和’Z’比较结果必然为真(0和1都小于’Z’的ASCII值);选项C)是通过与运算来判断c是否是大小字母;选项D)中’z’-32和大小字母’Z’相等,同样’a’-32和大小字母’A’相等。13、关于变量和地址的叙述中正确的是()。A、语句p=NULL;执行后,指针P指向地址为0的存储单元B、语句’’p=NULL;’’与’’p=\0;’’是等价的语句C、“int*p1;int**p2;int*p3;”都是合法的定义指针变量的语句D、指针变量只能通过求地址运算符(&)来获得地址值标准答案:C知识点解析:C语言规定指针变量赋地址值的方式有3种方式:①通过求地址运算符(&)获得地址值;②通过指针变量获得地址值;③通过标准函数获得地址值。另外NULL是在stdio.h头文件中定义的预定义符。NULL的代码值为0。可以给指针变量赋NULL值。例如p=NULL;赋值语句,称p为空指针。这条语句等价于p=’/0’;或p=0;这时,指针p并不是指向地址为0的存储单元,而是具有一个确定的值——“空”。14、设有定义语句:char*aa[2]={’’abcd’’,’’abcD’’};则以下叙述正确的是A、aa数组的两个元素只能存放含有4个字符的一维数组的首地址B、aa数组的值分别是字符串’’abcd’’和’’abcD’’C、aa是指针变量,它指向含有两个元素的字符型数组D、aa[0]存放了字符串’’abcd’’的首地址标准答案:D知识点解析:题目中char*aa[2],定义了指针数组aa,有两个元素,aa[0]存放”abcd’’地址,而aa[1]存放’’ABCD’’地址。15、有以下程序main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4:n+=2;k--;break;}printf("%d",n);}while(k>0&&n<5)}运行以后的输出结果是A、0235B、235C、02356D、2356标准答案:B知识点解析:因为变量的初始值分别为k=5,n=0,所以程序第1次进入循环时,执行default语句,“n=0,k=4”,没有break语句,因此执行case2分支语句,n为2,k为3,程序进行第2次循环,执行“case3:n=3,k=2”,输出n值为3,程序进行第3次循环,执行case3这个分支,结果是“n=5,k=1”,打印出5;这时因为n=5不满足n<5的循环条件,因此退出循环,程序运行结束。16、若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是A、main(){……x=fun(2,10);……}floatfun(inta,intB){……}B、floatfun(inta,intB){……}main(){……x=fun(i,j);……}C、floatfun(int,int);main(){……x=fun(2,10);……}floatfun(inta,intB){……}D、main(){floatfun(inti,intj);……x=fun(i,j);……}floatfun(inta,intB){……}标准答案:A知识点解析:在调用子函数时,应对其进行说明。A选项中,调用时,没有对子函数进行说明。B选项、C选项中被调用函数在主调函数之前定义,不用说明;D选项中在主函数中对被调用函数的返回值类型进行了说明。因此A选项正确。17、以下叙述中错误的是A、结构化程序由顺序、分支、循环三种基本结构组成B、C语言是一种结构化程序设计语言C、使用三种基本结构构成的程序只能解决简单问题D、结构化程序设计提倡模块化的设计方法标准答案:C知识点解析:结构化程序由顺序结构、选择结构和循环结构3种基本结构组成。已经证明,由3种基本结构组成的算法可以解决任何复杂的问题。由3种基本结构所构成的算法称为结构化算法;由3种基本结构所构成的程序称为结构化程序。18、有下列程序:main(){inti,s=0,t[]={l,2,3,4,5,6,7,8,9);for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序执行后的输出、结果是A、20B、45C、36D、25标准答案:D知识点解析:本题在主函数中定义了一维整型数组t[]={1,2,3,4,5,6,7,8,9};然后在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9=25,即变量s的值等于25。19、以下叙述中错误的是A、可以用typedef将已存在的类型用一个新的名字来代表B、可以通过typedef增加新的类型C、用typedef定义新的类型名后,原有类型名仍有效D、用typedef可以为各种类型起别名,但不能为变量起别名标准答案:B知识点解析:C语言允许用typedef说明一种新类型名。typedef类型名标识符:其中“类型名”必须是在此语句之前已定义的类型标识符:“标识符”是一个用户定义标识符,用作新的类型名;typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。20、以下结构体说明和变量定义中,正确的是A、typedefstructabc{intn;doublem;}ABC;ABCx,y;B、structabc{intn;doublem};structabcx,y;C、structABC{intn;doublem;}structABCx,y;D、structabc{intn;doublem;};abcx,y;标准答案:A知识点解析:本题考查typedef的使用方法,typedef对已存在的类型使用一个新的名字,选项A中ABC为新的类型别名,定义正确。21、有以下程序#includemain(){intx;scanf("%d",&x);if(x<=3);elseif(x!=10)printf("%d\n",x);}程序运行时,输入的值在哪个范围才会有输出结果A、不等于10的整数B、大于3或等于10的整数C、小于3的整数D、大于3且不等10的整数标准答案:D知识点解析:题目中,虽然else和第二个if不在同一行上,但等价于在同一行上,因此,程序的意思是当x大于3且不等于10时打印出来。22、有以下程序#include<stdio.h>#include<string.h>voidmain(){charstr[][20]={"One*World","One*Dream!"),*p=str[1];printf("%d,",strlen(p));printf("%s\11",p);}程序运行后的输出结果是A、9,One*Dream!B、10,One*Dream!C、9,One*WorldD、10,One*World标准答案:B知识点解析:在主函数中定义了二维字符数组str,并对它赋初值。定义字符指针p,并把字符串str[1]的地址赋给它一所以这时字符指针p指向字符串“One*Dream!”,然后在两个输出语句中,分别输出这个字符串的长度10和字符串本身。23、有以下程序#includevoidfun(char*t,char*s){while(*t!=0)t++;while((*t++=*s++)!=0);}main(){charss[10]="acc",aa[10]="bbxxyy";fun(ss,aa);printf("%s,%s\n",ss,aa);}程序的运行结果是A、acc,bbxxyyB、accbbxxyy,bbxxyyC、accxxyy,bbxxyyD、accxyy,bbxxyy标准答案:B知识点解析:本题重点考察while循环语句的简单应用。函数fun()中,前一个while循环的作用是:如果形参指针t所指内容不为0,则让t增1,直到它指向0。后一个while循环的作用是:将s所指内容赋给t所指地址,然后两者同时增1,直到赋给t的内容为0。由此可见,函数fun()的作用就是将形参s所指字符串连接到形参t所指字符串末尾,相当于库函数中的strcat()。主函数中使用fun()将数组aa中的字符串连接到了数组ss中原有字符串之后,所以执行完后,ss中的字符串为"accbbxxyy"。程序最后输出的结果是:accbbxxyy,bbxxyy。因此B选项正确。24、下面不属于软件测试实施步骤的是A、集成测试B、回归测试C、确认测试D、单元测试标准答案:B知识点解析:软件测试主要包括单元测试、集成测试、确认测试和系统测试。25、以下叙述中正确的是A、使用typedef定义新类型名后,新类型名与原类型名实际上是等价的B、结构体类型中的各个成分均不能是数组或指针C、结构体类型的变量,不能在声明结构体类型组成时一起定义D、元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义标准答案:A知识点解析:本题考查typedef的使用方法,typedef对已存在的类型使用一个新的名字,结构体类型中的成分可以是数组和指针,所以B选项错误,结构体类型的变量可以在声明结构体的时候一起定义,C选项错误,D选项中可以一起定义。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共25题,每题1.0分,共25分。)1、下列叙述中正确的是()。A、能采用顺序存储的必定是线性结构B、所有的线性结构都可以采用顺序存储结构C、具有两个以上指针的链表必定是非线性结构D、循环队列是队列的链式存储结构标准答案:B知识点解析:所有的线性结构都可以用数组保存,即都可以采用顺序存储结构。而反过来不可以,完全二叉树也能用数组保存(按层次依次存放到数据元素中),但完全二叉树属于非线性结构。双向链表具有两个以上的指针,但属于线性结构。循环队列是队列的顺序存储结构。2、下列数据结构中,属于非线性结构的是A、循环队列B、带链队列C、二叉树D、带链栈标准答案:C知识点解析:根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数据结构分为两大类:线性结构和非线性结构。循环队列、带链队列和带链栈都是线性结构,而二叉树是非线性结构。3、关于C语言程序的下列说法中,正确的是()。A、函数的定义可以嵌套,但函数的调用不可以嵌套B、函数的定义不可以嵌套,但函数的调用可以嵌套C、函数的定义和调用均不可以嵌套D、函数的定义和调用均可以嵌套标准答案:B知识点解析:函数定义都是在函数外部进行的,而函数调用是在函数内部发生的,所以函数的定义不可以嵌套,但函数的调用可以嵌套。4、某二叉树的中序遍历序列为CBADE,后序遍历序列为CBADE,则前序遍历序列为A、EDABCB、CBEDAC、CBADED、EDCBA标准答案:A知识点解析:后序遍历次序是“左右根”,中序遍历次序是“左根右”。由定义可知:①后序遍历中最后一个就是树根结点,即E结点;②在中序遍历中,根结点左边的是左子树集,右边的是右子树集,即CBAD是根结点E的左子树集合。问题就会转化为:求后序遍历是CBAD,中序遍历是CBAD的子树,方法同上。因为中序遍历中,D结点右边没有结点了,所以D结点不包含右子树,否则就会被分为2个子问题。以下是这道题的详细推理过程:步骤1:由CBADE得出根结点为E,由中序遍历可知{CBAD}E,右子树为空;步骤2:由CBAD得出左子树集合的根节点为D,由中序可知{CBA}D,右子树为空;步骤3:同理,二叉树更新后如下图所示。5、在长度为n的顺序表中查找一个元素,假设需要查找的元素有一半的机会在表中,并且如果元素在表中,则出现在表中每个位置上的可能性是相同的。则在平均情况下需要比较的次数大约为A、(3+n)/4B、nC、n/2D、n/4标准答案:A知识点解析:在长度为n的顺序表中查找一个元素,最好的情况是目标在第一个,一次找到;最坏的情况是目标在最后一个,n次找到。那么平均长度为:(1+2+...+n)/n=(n(n+1)/2)/n=(n+1)/2本题需要查找的元素有一半的机会在表中,则在平均情况下需要比较的次数大约为((1+n)/2+1)/2=(3+n)/4。所以选项A正确。6、设有如下的程序段:charstr[]="HelloWorld";char*ptr;ptr=str;执行上面的程序段后,"*(ptr+10)"的值为()。A、’\0’B、’0’C、不确定的值D、’0’的地址标准答案:A知识点解析:本题涉及字符数组和指针两个知识点:①在C语言中,字符数组在存放字符串时会自动在末尾加上“’\0’”,所以题中数组str有11个元素;②ptr指向数组str的首地址,“ptr+10”是指向“str[10]”,“*(ptr+10)”是引用str[10]的值(即结束符“’\0’”)。7、若有定义:doublea=22;inti=0,k=18;,则不符合C语言规定的赋值语句是()。A、i=(a+k)<=(i+k);B、i=a%11;C、a-a++,i++D、i=!a;标准答案:B知识点解析:取模运算符“%”、二元运算符具有左结合性,参与运算的量均为整型。B选项中的a变量是double实型,不符合规定。8、设有定义:inta;floatb;执行scanf(″%2d%f″,&a,&b);语句时,若从键盘输入876543.0,则a和b的值分别是()。A、87和6.0B、876和543.0C、87和543.0D、76和543.0标准答案:A知识点解析:scanf()函数的一般形式为:scan(格式控制,地址表列)。其中,“格式控制”是用双引号括起来的字符串,也称为“转换控制字符串”,它包括两种信息:①格式说明,由“%”和格式字符组成;②普通字符,即需要原样输入的字符。“地址表列”是需要接收输入数据的一系列变量的地址。本题中的“格式控制”是“%2d%f”,“%2d”的意思是要输入一个整数,但该整数最宽只占2个字符,而“%2d”是要输入一个浮点数。题目要求输入的是876空格543.0,所以scanf()函数将87赋给a,将6赋给b。9、数据库技术的根本目标是要解决数据的()。A、存储问题B、共享问题C、安全问题D、保护问题标准答案:B知识点解析:数据库中的数据具有“集成”“共享”之特点,即数据库集中了各种应用的数据。进行统一的构造与存储,而使它们能被不同的应用程序所使用。因而数据库技术的根本目标是解决数据的共享问题。10、C语言中允许用外部说明来指定变量、函数和其他标识符的特征,这里所说的外部指的是()。A、冠以关键字extemB、位置在函数体外部C、作用范围是全程的D、位置在函数的外部标准答案:D知识点解析:C语言中允许用位置在函数外部的说明来指定变量、函数和其他标识符的特征。11、对关系S和关系R进行集合运算,结果中既包含关系S中的所有元组也包含关系R中的所有元组,这样的集合运算称为()。A、并运算B、交运算C、差运算D、除运算标准答案:A知识点解析:关系的并运算是指,由结构相同的两个关系合并,形成一个新的关系,其中包含两个关系中的所有元组。12、有以下程序main(){inta=1,b=2;for(;a<8;a++){b+=a;a+:2;}printf("%d,%d\n",a,b);}程序运行后的输出结果是A、8,11B、10,14C、7,11D、9,18标准答案:B知识点解析:在这段程序中变量a的初值等于1,变量b的初值等于2。第1次执行for循环语句后,变量a的值等于3,变量b的值等于3。第2次执行for循环后,变量a等于6,变量b的值等于7。第3次执行for循环后,变量a等于9,变量b的值等于14。第4次执行for循环后,变量a等于10,这时退出for循环,此时变量b的值等于14。因而程序输出变量a,b的值分别为10,14。13、有以下程序:#include<stdio.h>main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];prinff("%d\n",t);}程序的运行结果是()。A、3B、4C、1D、9标准答案:B知识点解析:每次内循环只循环一次就结束,第1次外循环时,t=t+b[0][b[0][0]]=1+b[0][0]=1+0=1;第2次外循环时,t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第3次外循环时,t=t+b[2][h[2][2]]=2+b[2][2]=2+2=4。14、若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是A、x+1=yB、++x,y=x--C、x=x+10=x+yD、double(x)/10标准答案:B知识点解析:A选项中不能将变量y赋给表达式,C选项中错误与A选项一样,D选项中强制类型转换表达式应写成(double)x/10。15、以下程序段完全正确的是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。16、以下叙述中正确的是A、语句inta[4][3]={1,2,4,5};是错误的初始化形式B、语句inta[][3]={1,2,4,5);是错误的初始化形式C、在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵D、语句inta[4][3]={{1,2),{4,5)};是错误的初始化形式标准答案:C知识点解析:在理解二维数组的时候,可以把一个二维数组看成是一个一维数组,每个数组元素又是包含有若干个元素的一维数组,也就是具有行列的结构,二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可按行分段赋值,也可按行连续赋值。17、以下语句中存在语法错误的是A、charss[][20]={"right?"};B、char*ss[6];ss[1]="right?";C、char*ss[]={"right?"};D、charss[6][20];ss[1]="right?";标准答案:A知识点解析:选项A中定义了二维数组ss,可以用于存储字符串,但是字符串的存储不能通过赋值,仅可以初始化或者输入得到,而选项C和A)不同,选项C为指针数组,对于指针变量可以保存常量字符串的地址。18、在数据库管理系统提供的数据语言中,负责数据的查询、增加、删除和修改等操作的是A、数据定义语言B、数据管理语言C、数据操纵语言D、数据控制语言标准答案:C知识点解析:数据库管理系统提供了相应的数据语言,它们是:数据定义语言,该语言负责数据的模式定义与数据的物理存取构建;数据操纵语言,该语言负责数据的操纵,包括查询与增加、删除和修改等操作;数据控制语言,该语言负责数据完整性,安全性的定义与检查以及并发控制,故障恢复功能。故选项C正确。19、有以下程序intf(intm){staticintn=0;n+=m;returnn;}main(){intn=0;printf("%d",f(++n));printf("%d\n",f(n++));)程序运行后的输出结果是A、1,1B、1,2C、2,3D、3,3标准答案:B知识点解析:由于在函数f中,变量n为静态局部变量,所以在主函数中第一次调用函数f后,变量n的值等于1,当第二调用函数f时,在函数f的内部静态局部变量n的值仍然保留等于l,所以返回函数值等于2。20、若在定义语句:inta,b,c,*p=&c;接着执行以下选项中的语句,则能正确执行的语句是A、scanf("%d%d%d",a,b,c);B、scanf("%d",a,b,c);C、scanf("%d",p);D、scanf("%d",&p);标准答案:C知识点解析:程序语句inta’b,c,*p=&c;定义了三个整型变量a’b,c,和一个整型指针变量p,并且把变量c的地址赋给p。scanf函数的一般形式为“scanf(“格式控制字符串”,地址列表)”,其中的地址列表应当是存放输入数据变量的地址。21、下列叙述中正确的是A、在switch语句中必须使用defaultB、break语句必须与switch语句中的case配对使用C、在switch语句中,不一定使用break语句D、break语句只能用于switch语句标准答案:C知识点解析:break为C语言关键字,又称间断语句。break语句的功能是跳出正在执行的条件语句或循环语句。它可以出现在switch语句中,也可以出现在循环语句中。default是关键字,起标号的作用,代表所有case标号之外的那些标号。default标号可以出现在语句体中任何标号位置上。在switch语句体中也可以没有default标号。22、有下列程序,程序的运行结果是#include<stdio.h>#defineN5#deftfieMN+1#definefi[x)(x*M)main(){inti1,i2;i1=f(2);i2=f(1+1);printf("%d%d\n",i1,i2);}A、127B、1212C、1111D、117标准答案:D知识点解析:在本题中,定义了3个宏定义语句,分别是:#defineN5、#defineMN+5和#definef(x)(x*M),所以根据C语言的宏替换规则,我们可知,f(2)=2*N+1=2*5+1=11,f(1+1)=1+1*N+1=1+1*5+1=7。23、有以下程序#include<stdio.h>#include<string.h>voidfun(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的元素从大到小进行了排列。24、数据库系统的三级模式不包括A、概念模式B、内模式C、外模式D、数据模式标准答案:D知识点解析:数据库系统的三级模式是概念模式、外模式和内模式,所以选择D。25、下列叙述中正确的是A、程序执行的效率与数据的存储结构密切相关B、程序执行的效率只取决于程序的控制结构C、程序执行的效率只取决于所处理的数据量D、以上说法均错误标准答案:A知识点解析:程序执行的效率与数据的存储结构、数据的逻辑结构、程序的控制结构、所处理的数据量等有关。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共25题,每题1.0分,共25分。)1、以下叙述中正确的是A、每个后缀为.c的C语言源程序都应该包含一个main函数B、在C语言程序中,ma.in函数必须放在其他函数的最前面C、每个后缀为.c的C语言源程序都可以单独进行编译D、在C语言程序中,只有main函数才可单独进行编译标准答案:C知识点解析:每一个C语言的文件或函数都可以单独编译,但只有main函数的才可以执行。2、下列叙述中正确的是A、循环队列中的元素个数随队头指针与队尾指针的变化而动态变化B、循环队列中的元素个数随队头指针的变化而动态变化C、循环队列中的元素个数随队尾指针的变化而动态变化D、循环队列中的元素个数不会变化标准答案:A知识点解析:所谓循环结构就是将队列存储空间的最后一个位置绕到第一个位置上,形成逻辑上的环状空间,循环使用。在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针front指向队头元素的前一个位置,因此,队列中的元素数等于从队头指针front指向的后一个位置与队尾指针rear指向位置之间的元素数量。3、一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为A、16B、10C、6D、4标准答案:A知识点解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个,故此度为1的结点个数=总结点数.叶子节点数.度为2的节点数=25.5—4=16。4、对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是A、快速排序B、冒泡排序C、直接插入排序D、堆排序标准答案:D知识点解析:各种排序方法中最坏情况下需要比较的次数分别为:冒泡排序n(n-1)/2、快速排序n(n-1)/2、简单插入排序n(n-1)/2、希尔排序O(n1.5)、简单选择排序n(n-1)/2、堆排序O(nlog2n)。5、某二叉树的前序序列为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正确。6、以下叙述中正确的是()。A、C语言函数可以嵌套调用,例如:fun(fun(x))B、C语言程序是由过程和函数组成的C、C语言函数不可以单独编译D、C语言中除了main函数外,其他函数不可作为单独文件形式存在标准答案:A知识点解析:C语言程序是由函数组成的,所以B选项错误。C语言函数可以单独进行编译,所以C选项错误。每个C程序中必须包含一个main函数,但不一定是每个C程序文件中都必须有,用户单独编写的某个函数也可以存储为一个C程序文件,所以D选项错误。7、以下选项中合法的标识符是()。A、1__B、1—1C、1_1D、_11标准答案:D知识点解析:C语言中的标识符由下划线、字母和数字组成,且必须以下划线或字母开始,所以只有D选项正确。8、定义学生、教师和课程的关系模式S(S#,Sn,Sd,Dc,Sa)(其属性分别为学号、姓名、所在系、所在系的系主任、年龄);C(C#,Cn,P#)(其属性分别为课程号、课程名、先修课);SC(S#,C#,G)(其属性分别为学号、课程号和成绩)。包含对非主属性部分依赖的关系是()。A、S(S#.Sn,Sd,Dc,Sa)B、C(C#,Cn,P#)C、SC(S#,C#,G)D、不存在标准答案:A知识点解析:关系S的主键是S#(学号),S#是主属性,但非主属性Sd(所在系)也可决定Dc(所在系的系主任),所以包含对非主属性部分依赖的关系是S。9、下列对于软件测试的描述中正确的是A、软件测试的目的是证明程序是否正确B、软件测式的目的是使程序运行结果正确C、软件测试的目的是尽可能多地发现程序中的错误D、软件测试的日的是使程序符合结构化原则标准答案:C知识点解析:软件测试是为了发现错误而执行程序的过程。一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。软件测试的目的要以查找错误为中心,而不是为了演示软件的正确功能。10、有如下嵌套的if语句if(aA、k=(aB、k=(aC、k=(aD、k=(a标准答案:D知识点解析:嵌套的ifelse语句的含义是,在变量a的值小于变量b的值,同时,变量a的值小于变量c的值时,把变量a的值赋给变量k。在变量a的值小于变量b的值,同时,变量a的值大于等于变量c的值时,把变量c的值赋给变量k。在变量a的值大于等于变量b的值,同时,变量b的值小于变量c的值时,把变量b的值赋给变量k。在变量a的值大于等于变量b的值,同时,变量b的值大于等于变量c的值时,把变量c的值赋给变量k。11、数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是A、DB包含DBS和DBMSB、DBMS包含DB和DBSC、DBS包含DB和DBMSD、没有任何关系标准答案:C知识点解析:数据库系统(DatabaseSystem简称DBS)由下列几个部分组成:数据库(DB)、数据库管理系统(DBMS)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。这五个部分构成了一个以数据库为核心的完整的运行实体,称为数据库系统。其中DB(DataBase)即数据库,是统一管理的相关数据的集合;DBMS(DatabaseManagementSystem)即数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法。12、下列对软件测试和软件调试叙述中错误的是()。A、严格执行测试计划,排除测试的随意性B、软件调试的目的是改正软件错误C、软件测试不需要考虑测试成本D、正确的执行测试用例标准答案:C知识点解析:软件测试定义:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试的目的:发现错误而执行程序的过程,是评测软件质量的重要过程和手段。软件调试的目的是诊断并改正程序中的错误。测试必须对整个软件总体进行评估。软件测试需要考虑测试成本,软件测试成本也要计入软件开发成本中。故C选项不正确。13、若有定义和语句:inta,b;scanf(“%d,%d",&a,&b);以下选项中的输入数据,不能把值3赋给变量a、把值5赋给变量b的是()。A、3,5,B、3,5,4C、3.5D、3,5标准答案:C知识点解析:在输入3和5之间除逗号外不能有其他字符。14、由关系R1和:R2得到关系R3的操作是A、等值连接B、并C、笛卡尔积D、交标准答案:A知识点解析:等值连接是关系运算一连接运算的一种常用的连接方式。是条件连接(或称θ连接)在连接运算符为“=”号时,即θ=0时的一个特例。15、当变量c的值不为2、4、6时,值为"真"的表达式是()。A、(c>=2&&c<=6)||(c!=3)||(c!=5)B、(c==2)||(c==4)||(c==6)C、(c>=2&&c<=6)&&!(c%2)D、(c>=2&&c<=6)&&(c%2!=1)标准答案:A知识点解析:逻辑或运算符的两个运算对象中,只要有一个值为真,整个逻辑表达式的值就为真;逻辑与运算符的两个运算对象的值均为真,整个逻辑表达式的值才为真。选项A)中,只要c的值不为3或者不为5或者在2和6之间,这个表达式就为真,所以答案选A)。16、以下关于结构化程序设计的叙述中正确的是A、结构化程序使用goto语句会很便捷B、一个结构化程序必须同时由顺序、分支、循环三种结构组成C、由三种基本结构构成的程序只能解决小规模的问题D、在C语言中,程序的模块化是利用函数实现的标准答案:D知识点解析:C语言是结构化程序设计语言,顺序结构、选择结构、循环结构是结构化程序设计的三种基本结构,研究证明任何程序都可以由这三种基本结构组成。但是程序可以包含一种或者几种结构,不是必须包含全部三种结构。自从提倡结构化设计以来,goto就成了有争议的语句。首先,由于goto语句可以灵活跳转,如果不加限制,它的确会破坏结构化设计风格。其次,goto语句经常带来错误或隐患。它可能跳过了某些对象的构造、变量的初始化、重要的计算等语句。Goto语句的使用会使程序容易发生错误并且也不易阅读,所以应避免使用。由三种基本结构构成的程序几乎能解决大部分问题。17、有以下程序main(){inty=10;while(y--);printf("y=%d\n",y);}程序执行后的输出结果是A、y=0B、y=1C、y=-1D、while构成无限循环标准答案:C知识点解析:while循环语句的循环体为空语句,所以每一次循环程序什么都不做。当循环自变量y=0时,退出循环结束,变量y执行自减运算,得-1,所以打印输出变量y的值为-1。18、有下列程序:#include<stdio.h>main(){FILE*fp;intk,n,a[6]={1,2,3,4,5,6);rp=fopen(’’d2.dat’’,’’w’’);fprintf(fp,’’%d%d%d\n’’,a[0],a[1],a[2]);fprintf(fp,’’%d%d%d\n’’,a[3],a[4],a[5]);fclose(fp);fp=fopen(’’d2.dat’’,’’r’’);fscanf(fp,’’%d%d’’,&k,&n);printf(’’%d%d\n’’,k,n);fclose(fp);}程序运行后的输出结果是A、14B、123456C、1234D、12标准答案:B知识点解析:用文件函数fopen打开d2.dat文件并把数组a[6]中的元素分两行写入到d2.dat文件中,关闭文件。然后再次打开文件d2.dat,用。fscanff)函数读取文件d2.dat中的数据,因为每行没有分隔符,所以每一行会被认为是一个完整的数,并存入到变量k和n中,输出变量k和n的值为123456。19、以下选项中函数形参不是指针的是A、fun(int&p){…}B、fun(inta[10]){…}C、fun(int*a){…}D、fun(intP[]){…}标准答案:A知识点解析:C语言中形参数组是指针变量,其数组中元素的个数由传递的实参数组决定,因此可以在定义的时候,不给出元素个数的说明,因此选项B)和D)形参均为指针变量,选项A)的定义在C语言中不存在的。20、以下关于字符串的叙述中正确的是A、两个字符串中的字符个数相同时才能进行字符串大小的比较B、可以用关系运算符对字符串的大小进行比较C、空串比空格打头的字符串小D、C语言中有字符串类型的常量和变量标准答案:C知识点解析:C语言本身并没有设置一种类型来定义字符串变量,却允许使用“字符串常量”。字符串常量是由双引号括起来的一串字符。任意两个字符串的大小比较要调用字符串比较函数strcmp(s1,s2)来进行,其比较的方法是依次对s1和s2中对应位置上的字符两两进行比较,当出现第一对不相同的字符时,即由这两个字符决定所在串的大小(比较字符大小的依据是其ASCII码值)。21、以下叙述中正确的是A、只有全局变量才有自己的作用域,函数中的局部变量没有作用域B、只要是用户定义的标识符,都有一个有效的作用域C、只有在函数内部定义的变量才是局部变量D、局部变量不能被说明为static标准答案:A知识点解析:在函数内定义的变量是局部变量,而在函数之外定义的变量称为外部变量,也是全局变量。全局变量可以为源文件中其他函数所共用,其作用域为从定义变量的位置开始到源文件结束。因此只要用户定义的标识符,全部都有作用域。局部变量可以说明为auto、register以及static。22、有以下程序structS{inta,b;}data[2]={10,100,20,200};main(){structSP=data[1];printf("%d\n",++(p.a));}程序运行后的输出结果是A、11B、20C、21D、10标准答案:C知识点解析:在题目中定义了结构体S类型的数组变量data,并对其赋初值。在程序中定义了指向结构体S类型的变量p,并把数组data的第二个元素data[1]的值赋给它,所以此时成员变量p.a的值等于20,在输出时分别加1,所以输入结果为选项A)。23、若有以下程序段intr==8;printf("%d\n",r>>1);输出结果是A、8B、4C、16D、2标准答案:B知识点解析:定义了整型变量r,其值等于8,在输出语句中,把变量r的值向右移动一位,在C语言中把变量向右移动一位,相当于其值除以2,所以在题中把变量r的值8除2,得到其值等于4。24、有以下程序#includemain(){inta=5,b=1,t;t=(a<<2)|b;printf("%d\n",t);}程序运行后的输出结果是()。A、21B、11C、6D、1标准答案:A知识点解析:语句"t=(a<<2)|b;"先计算表达式"(a<<2)",a的二进制数值为00000101,所以左移2位之后结果为00010100,对应十进制值为20,之后计算"00010100|b",b对应的二进制数值为00000001,或运算的结果为00010101,对应十进制值为21,所以答案选A。25、有以下程序voidfun(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、00B、99C、90D、09标准答案:B知识点解析:函数fun的主要功能是交换p和q指向的地址空间的数据,然后更改p的指向的地址空间数据,使之和q指向的数据相同。主函数调用fun后,p指向a,q指向b,因此a和b的数据全部为9。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共25题,每题1.0分,共25分。)1、下列选项中不属于软件生命周期开发阶段任务的是()。A、软件测试B、概要设计C、软件维护D、详细设计标准答案:C知识点解析:软件生命周期分为软件定义期、软件开发期和运行维护期3个时期,其中的软件开发期包括概要设计、详细设计、实现和测试4个阶段。2、有以下程序#includemain(){inta=0,b=0;/*给a赋值a=10;b=20:给b赋值*/printf("a+b=%d\n",a+b);/*输出计算结果*/}程序运行后的输出结果是A、a+b=30B、a+b=10C、出错D、a+b=0标准答案:D知识点解析:C语言规定,在字符“/*”和其后紧跟的第一个字符“*/”中间的部分是注释内容,且注释部分的内容不参与程序的编译和运行,因此,本题中程序语句“a=10;b=20;”没有执行。3、下列叙述中正确的是()。A、数据库的数据项之间无联系B、数据库中任意两个表之间一定不存在联系C、数据库的数据项之间存在联系D、数据库的数据项之间以及两个表之间都不存在联系标准答案:C知识点解析:数据库的数据项之间以及表之间都存在联系。4、软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是()。A、编译程序B、操作系统C、教务管理系统D、汇编程序标准答案:C知识点解析:编译软件、操作系统、汇编程序都属于系统软件,只有C)教务管理系统才是应用软件。5、在软件开发中,需求分析阶段可以使用的工具是A、N.S图B、DFD图C、PAD图D、程序流程图标准答案:B知识点解析:在软件开发中,需求分析阶段常使用的工具有数据流图(DFD),数据字典(DD)、判断树和判断表。6、以下选项中,值为1的表达式是()。A、1-’0’B、1-’\0’C、’1’-0D、’\0’-’0’标准答案:B知识点解析:’\0’,空值,其ASCII码值为O,所以B选项的值为1。字符’0’的ASCII码值为48,所以A、C、D选项的值均不为1。7、设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为()。A、课号,成绩B、学号,成绩C、学号,课号D、学号,姓名,成绩标准答案:C知识点解析:学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C。8、函数rewind(fp)的作用是()。A、使fp指定的文件的位置指针重新定位到文件的开始位置B、将fp指定的文件的位置指针指向文件中所要求的特定位置C、使fp指定的文件的位置指针向文件的末尾D、使fp指定的文件的位置指针自动移至下一个字符位置标准答案:A知识点解析:位置指针重返文件头指针rewind的调用形式为:rewind(fp):,rewind(fp)的功能是:使fp指定的文件的位置指针重返定位到文件的开始位置。9、有以下程序:#includemain(){intx=1,y=2,z=3;if(x>y)if(yA、1B、41C、2D、331标准答案:A知识点解析:else总是与离它最近的if配对,所以第一个if语句的判断条件不成立,不再执行第二个if语句和与第二个if语句配对的else语句,而是直接执行打印x++的操作,打印x的值1以后再加1。10、以下关于return语句的叙述中正确的是A、一个自定义函数中必须有一条return语句B、一个自定义函数中可以根据不同情况设置多条return语句C、定义成void类型的函数中可以有带返回值的return语句D、没有return语句的自定义函数在执行结束时不能返回到调用处标准答案:B知识点解析:return语句主要用于返回函数的值。在一个自定义函数中,可以根据不同的情况设置多条return语句返回函数的值。11、有两个关系R和T如下:则由关系R得到关系T的操作是A、选择B、投影C、交D、并标准答案:A知识点解析:由关系R和T所包含的元素可知,关系R经过选择操作就可以得到关系T。12、有以下程序:#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen("myfile.dat","w");fputs("abc",fp);felose(fp);fp=fopen("myfile.dat","a+");fprintf(fp,"%d",28);rewind(fp);fscanf(fp,"%s",str);puts(str);felose(fp);}程序的运行结果是()。A、abcB、28cC、ad9c28D、因类型不一致而出错标准答案:C知识点解析:本题考查文件操作函数:fprintf()函数。fprintf()函数向文件输出,将输出的内容输出到硬盘上的文件,或是相当于在文件的设备上执行两次fprintf后,文件中有abc28,所以C选项正确。13、有以下程序(字母A的ASCII代码为65)#includemain(){charc1=’A’,c2=’Y’;printf("%d,%d\n",c1,c2);}程序运行后的输出结果是()。A、65,89B、A,YC、65,90D、输出格式不合法,输出出错信息标准答案:A知识点解析:考查字符型数据。字符常量与其ASCII码值一一对应,在计算的时候,一般是字符数据对应的ASCII码参与运算,输出时会根据格式控制符输出对应的字符或者ASCII码。所以答案选A。14、有如下程序段:intx=12;doubley=3.141593;printf("%d%8.6f",x,y);其输出结果是()。A、123.141593B、123.141593C、12,3.141593D、123.1415930标准答案:A知识点解析:考查printf函数的格式输出。除了格式控制符外,其余均按照双引号内原样输出。变量x、y输出时中间没有其他字符,所以选项C)错误;"%8.6f"表示控制输出宽度为8(包括小数点),右对齐,小数点后保留位数为6,所以输出结果为选项A)。15、有以下程序#includemain(){inta=7;while(a--);printf("%d\n",a);}程序运行后的输出结果是A、0B、-1C、1D、7标准答案:B知识点解析:a--的含义是先用后减1,所以当a的值为0时,跳出循环,但是仍要执行a--,a的值变为-1。16、以下叙述中错误的是A、函数可以返回地址值B、改变函数形参的值,不会改变对应实参的值C、当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULLD、可以给指针变量赋一个整数作为地址值标准答案:D知识点解析:指针变量的值只能是存储单元地址,而不能是一个整数,选项D的描述是错误,为待选答案。函数可以返回内存空间的地址,同时函数形参和实参分别占用不同的内存单元,改变形参的值不会改变对应实参的值,在头文件stdio.h中,NuLL被定义为void型的指针。17、有以下程序main(){intij;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);printf("\n");}}A、1*1=11*2=21*3=32*1=22*2=43*1=3B、1*1=11*2=22*2=41*3=32*3=63*3:9C、1*1=11*2=21*3=32*2=42*3=63*3=9D、1*1=12*1=22*2=.43*1=33*2=63*3=9标准答案:C知识点解析:外层for循环的自变量i从1开始,每次循环后增1,直到i等于3结束。对于外层循环自变量i的每一个值,内层循环的自变量j每次从i开始,每次循环后增1,直到j等于3结束。所以在每次外循环开始后,内层循环在一行先打印i*j=两个乘数的积,然后回车换行,下次循环从下一行开始打印输出结果。18、若有以下程序typedefstructstu{charname[10],gender;intscore;)STU;voidf(char*P){strcpy(P,’’Qian’’);}main(){STUa={’’Zhao’’,’m’,290},b;b=a;f(b.name);b.gender=’f’;b.score=350;printf(’’%s,%c,%d,’’,a.name,a.gender,a.score);printf(’’%s,%c,%d\n’’,b.name,b.gender,b.score);}则程序的输出结果是A、Zhao,m,290,Zhao,m,290B、Qian,f,350,Qian,f’350C、Zhao,m,290,Qian,f,350D、Zhao,m,290,Zhao,C350标准答案:C知识点解析:主函数中结构体变量定义同时赋初值。执行b=a;语句后,b的数据和a的数据相同,调用函数f(b-name),形参指针p接收实参b.name的地址,此时p和b.name指向同一个存储空间,流程转到f执行,p指向的存储空间存放字符串’’oian’’,流程结束返回主函数。主函数中变量b的其他成员存放数据。因此a的数据{’’zhao’’,’m’,290},b的数据为{’’QJan’’,’f’,350}。注意本题结构体STU类型变量a和b中的name成员为数组,不是指针,它具有白己的存储空间。19、设有定义:structcomplex{intreal,unreal;}data1={1,8},data2;则以下赋值语句中错误的是A、data2=(2,6);B、data2=data1;C、data2.real=data1.real;D、data2.real=data1.unreal;标准答案:A知识点解析:本题主要考查结构体变量的定义与初始化。题目中定义了complex类型的结构体变量data1和data2,并对data1进行了初始化。可以用一个结构体变量对另一个结构体变量赋值,用一个结构体变量的成员对另一个结构体变量的成员赋值。20、以下叙述中正确的是A、函数的返回值不能是结构体类型B、函数的返回值不能是结构体指针类型C、在调用函数时,可以将结构体变量作为实参传给函数D、结构体数组不能作为参数传给函数标准答案:C知识点解析:和普通变量相似,结构体变量也可以作为函数实参或者形参,函数的返回值也可以是结构体类型。21、有以下程序#includemain(){FILE*pf;char*s1="China",*s2="Beijing";pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf);/*文件位置指针回到文件开头*/fwrite(s1,5,1,pf);fclose(pf);}以上程序执行后abc.dat文件的内容是()。A、ChinangB、ChinaC、ChinaBeijingD、BeijingChina标准答案:A知识点解析:语句"fwrite(s2,7,1,pf);"将指针s2指向的7个字节的数据写入到abc.dat文件中,而后将文件指针fp重定向指向文件首,再执行语句"fwrite(s1,5,1,pf);"时将s1指向的5个字符写入当前文件,原先写入的数据会被部分覆盖,最后文件中的内容为Chinang,答案选A。22、设有如下定义struct{intn;charc;}a[2],*p=a;则以下错误引用结构体成员n的是()。A、(*a)->nB、a[0].nC、p->nD、(*p).n标准答案:A知识点解析:结构体变量对其成员变量的引用用"."运算符,而结构体指针引用成员变量使用指向运算符"->",(*a)与a[0]等价,引用成员变量n应该使用"."运算符,所以答案选A。23、有以下程序#includemain(){inta[]={2,4,6,8,10},x,*p,y=1;p=&a[1];for(x=0;x<3;x++)y+=*(p+x);printf("%d\n",y);}程序的输出结果是A、13B、19C、11D、15标准答案:B知识点解析:本题通过语句"p=&a[1]"将指针变量p指向了存储单元a[1],即使得p[0]的值为4,y的初始值为1,然后通过3次for循环,使得y的值分别加上p[0]、p[1]和p[2],那么y=1+4+6+8,所以输出的y的值为19。24、有以下程序#includeintfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main(){printf("%d\n",fun(7));}执行后的输出结果是A、2B、3C、7D、0标准答案:A知识点解析:因为fun(intx)是一个递归函数,所以主函数中fun(7)经过3次递归调用,其过程可以描述为"fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-5=2",所以最后输出结果为2。因此A选项正确。25、设有定义:intx[2][3];则以下关于二维数组x的叙述错误的是A、元素x[0]可看作是由3个整型元素组成的一维数组B、数组x可以看作是由x[0]和x[1]两个元素组成的一维数组C、可以用x[0]=0;的形式为数组所有元素赋初值0D、x[0]和x[1]是数组名,分别代表一个地址常量标准答案:C知识点解析:x[0]可看作是由3个整型元素组成的一维数组,不可以用语句x[0]=0;为数组所有元素赋初值0。因此C选项正确。国家二级C语言机试(选择题)模拟试卷第5套一、选择题(本题共25题,每题1.0分,共25分。)1、在数据库系统的内部结构体系中,索引属于()。A、模式B、内模式C、外模式D、概念模式标准答案:B知识点解析:内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还未深入到设备级上(如磁盘及磁盘操作)。2、一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为()。A、219B、229C、230D、231标准答案:B知识点解析:二叉树中,度为0的结点数等于度为2的结点数加1,即n2=n0—1,叶子结点即为0,则n2=79,总结点数为n0+n1+n2=80+70+79=229。故B选项正确。3、一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为A、219B、229C、230D、231标准答案:B知识点解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个,故总结点数=叶子节点数+度为2的节点数+度为1的节点数=80+79+70=229。4、设二叉树共有500个结点,其中叶子结点有250个。则度为2的结点个数是A、0B、1C、249D、不可能有这样的二叉树标准答案:C知识点解析:二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2i-1个结点;深度为k的二叉树至多有2k-1个结点;对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。本题中,叶子结点有250个,度为2的结点数为n2=n0-1=250-1=249。5、以下各项中,不是C语言字符型或字符串常量的是()。A、″It′S″B、″0″C、′a=0′D、′\010′标准答案:C知识点解析:C选项是一个赋值表达式。A、B两项是字符串常量,D选项是字符型常量。6、关系的实体完整性要求关系中不能为空的属性是()。A、主键属性B、外键属性C、全部属性D、候选键属性标准答案:A知识点解析:关系模型中可以有3类完整性约束:实体完整性约束、参照完整性约束和用户定义的完整性约束。实体完整性约束是指若属性M是关系的主键,则属性M中的属性值不能为空值。7、下列叙述中,不属于软件需求规格说明书的作用的是()。A、便于用户,开发人员进行理解和交流B、反映出用户问题的结构,可以作为软件开发工作的基础和依据C、作为确认测试和验收的依据D、便于开发人员进行需求分析标准答案:D知识点解析:软件需求规格说明书有以下几个方面的作用:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。8、下面叙述中错误的是A、软件测试的目的是发现错误并改正错误B、对被调试的程序进行“错误定位”是程序调试的必要步骤C、程序调试通常也称为DebugD、软件测试应严格执行测试计划,排除测试的随意性标准答案:A知识点解析:软件测试是为了发现错误而执行程序的过程。软件测试要严格执行测试计划,排除测试的随意性。程序调试通常也称Debug,对被调试的程序进行“错误”定位是程序调试的必要步骤。9、下列描述中错误的是()。A、在数据库系统中,数据的物理结构必须与逻辑结构一致B、数据库技术的根本目标是要解决数据的共享问题C、数据库设计是指在已有数据库管理系统的基础上建立数据库D、数据库系统需要操作系统的支持标准答案:A知识点解析:在数据库系统中,物理独立性是指数据的物理结构(包括存储结构、存取方式等)的改变。如存储设备的更换、物理存储的更换、存取方式改变等都不影响数据库的逻辑结构,从而不致引起应用程序的变化。10、以下程序段完全正确的是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。11、软件测试的目的是A、发现程序中的错误B、修改程序中的错误C、避免程序中的错误D、发现和修改程序中的错误标准答案:A知识点解析:软件测试的目的是:发现一些可以通过测试避免的开发风险:实施测试来降低所发现的风险:确定测试何时可以结束;在开发项目的过程中将测试看作是一个标准项目。12、有以下程序:#includemain(){FILE*fp;inti,aE6]={1,2,3,4,5,6};fp=fopen(“d2.dat”,“W+”);for(i=0;i<6;i++)fprintf(fp,“%d\n”,a[i]);rewind(fp);for(i=0;i<6;i++)fscanf(fp,“%d”,&aE5一i]);fclose(fp);for(i=0;i<6;i++){prinff(“%d,”,a[i]);}prinff(“\n”);}程序运行后的输出结果是()。A、4,5,6,1,2,3,B、1,2,3,3,2,1,C、1,2,3

温馨提示

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

评论

0/150

提交评论