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

下载本文档

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

文档简介

国家二级C语言机试(选择题)模拟试卷14(共9套)(共270题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共25题,每题1.0分,共25分。)1、下列描述中正确的是A、线性链表是线性表的链式存储结构B、栈与队列是非线性结构C、双向链表是非线性结构D、只有根结点的二叉树是线性结构标准答案:A知识点解析:线性表的链式存储结构称为线性链表。线性表链式存储结构的基本单位称为存储结点,每个存储结点包括数据域和指针域两个组成部分。各数据元素之间的前后件关系是由各结点的指针域来指示的,指向线性表中第一结点的指针HEAD称为头指针,当HEAD=NULL时称为空表。栈、队列和双向链表是线性结构,树是一种简单的非线性结构。在树这种数据结构中,所有数据元素的关系具有明显的层次特征。二叉树是非线性结构。线性结构和非线性结构是从数据的逻辑结构角度来讲的,与该数据结构中有多少个元素没有关系,即使是空的二叉树也是非线性结构。2、以下程序的输出结果是()。#include<stdio.h>main(){inta=1,b=3;if((++a<0)&&!(b--<=0))printf(’’%d,%d\n",a,b);elseprintf(’’%d,%d\n’’,b,a);}A、2,2B、1,3C、3,2D、3,1标准答案:C知识点解析:解答本题的关键在于if语句条件中的表达式。初始时“a=l,b=3”,所以“++a=2>0”,因此“++a<0”为假:因为是进行逻辑与(&&)运算,在&&的一个运算对象为假的前提下不用判断第二个运算对象的真假。就可以直接得出整个表达式的值为逻辑0,所以执行else语句。3、下列与队列结构有关联的是A、函数的递归调用B、数组元素的引用C、多重循环的执行D、先到先服务的作业调度标准答案:D知识点解析:队列中最先插入的元素将最先被删除,最后插入的元素将最后被删除。4、下列关于二叉树的叙述中,正确的是A、叶子结点总是比度为2的结点少一个B、叶子结点总是比度为2的结点多一个C、叶子结点数是度为2的结点数的两倍D、度为2的结点数是度为1的结点数的两倍标准答案:B知识点解析:由二叉树的性质可以知道在二叉树中叶子结点总是比度为2的结点多一个。5、C语言程序中,若函数无返回值,则应该对函数说明的类型是()。A、intB、doubleC、charD、void标准答案:D知识点解析:int表示返回值是整型,double表示返回值是双精度型,char表示返回值是字符型,voicl表示无返回值。6、有2个关系R、S如下:由关系R通过运算得到关系S,则所使用的运算为()。A、选择B、投影C、插入D、连接标准答案:B知识点解析:投影运算是指对于关系内的域指定可引入新的运算。本题中s是在原有关系R的内部进行的,是由R中原有的那些域的列所组成的关系,所以选择B选项。7、若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x—y)?(x++):(y++)中的条件表达式(x—y)等价的是A、(x—y<0)B、(x-y>0)C、(x-y<0‖y—y>0)D、(x-y==0)标准答案:D知识点解析:条件表达式的形式如下:表达式1?表达式2:表达式3。其含义为当“表达式1”的值为非零时,求出“表达式2”的值,此时“表达式2”的值就是整个条件表达式的值:当“表达式1”的值为零时.则求“表达式3”的值,这时“表达式3”的值就是整个表达式的值。本题条件表达式的执行顺序是先求解表达式“x-y”的值,若其值为非0(可以是正数,也可以是负数).则再求表达式“x++”的值,其值就是条件表达式的值;若表达式“x.y”的值为0,则再求表达式“y++”的值,其值就是条件表达式的值。8、通常软件测试实施的步骤是()。A、集成测试、单元测试、确认测试B、单元测试、集成测试、确认测试C、确认测试、集成测试、单元测试D、单元测试、确认测试、集成测试标准答案:B知识点解析:软件测试过程一般按4个步骤进行,即单元测试、集成测试、验收测试(确认测试)和系统测试。在本题中,答案应该选B。9、设二叉树共有375个结点,其中度为2的结点有187个。则度为1的结点个数是A、0B、1C、188D、不可能有这样的二叉树标准答案:A知识点解析:二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2i-1个结点;深度为k的二叉树至多有2k-1个结点;对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。本题中,度为2的结点有187个,叶子结点应该有187+1=188个,度为1的结点个数=375-187-188=0。10、下面描述中不属于数据库系统特点的是A、数据共享B、数据完整性C、数据冗余度高D、数据独立性高标准答案:C知识点解析:数据系统的基本特点有数据的集成性、数据的高共享性与低冗余性、数据的独立性、数据统一管理与控制。11、在黑盒测试方法中,设计测试用例的主要根据是A、程序内部逻辑B、程序外部功能C、程序数据结构D、程序流程图标准答案:B知识点解析:黑盒测试法指的是根据程序的外部功能,把程序本身看成一个黑盒子,设计测试用例来验证程序外部功能的正确性。12、我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令。关于转换以下说法错误的是A、一条C语句可能会被转换成多条机器指令B、一条C语句对应转换成一条机器指令C、一条C语句可能会被转换成零条机器指令D、某种类型和格式的C语句被转换成机器指令的条数是固定的标准答案:B知识点解析:由C语言编写的程序,通过编译、链接转换成可以让机器识别的01二进制指令。这些二进制指令命令机器计算,这些就是机器指令,而C语言的语句条数和机器指令的条数不是一对一的关系。13、若以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的switch语句是()。A、switch(a+9){easec1:y=a—b;casec2:y=a+b;}B、switcha*b{case10:x=a+b;default:y=a—b;}C、switch(a+b){case1.case3:y=a+b;breakcasecase3DreaK;case0:case4:y=a—b;}D、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a—b;break;}标准答案:D知识点解析:选项A,当c1和c2相等时,不成立;选项B,a*b要用括号括起来;选项C,case与后面的数字用空格隔开。14、以下选项中不属于C语言程序运算符的是A、sizeofB、()C、D、&&标准答案:C知识点解析:sizeof为测试内存的运算符,()为算术运算符,&&为逻辑运算符。而<>不是C语言的运算符,C语言中!=表示不等于。15、以下叙述中正确的是()。A、在赋值表达式中,赋值号的右边可以是变量,也可以是任意表达式B、a是实型变量,a=10在C语言中是允许的,因此可以说:实型变量中可以存放整型数C、若有inta=4,b=9;执行了a=b后,a的值已由原值改变为b的值,b的值变为0D、若有inta=4,b=9;执行了a=b;b=a;之后,a的值为9,b的值为4标准答案:A知识点解析:实型变量只能存放实型数据,把一个整型数据赋值给实型变量会将该整型转成实型,选项B)错误;赋值语句"a=b"是把b的值赋值给a,而b的值不会发生改变,选项C)错误;赋值语句"a=b;b=a;"先把b的值指给a,此时a=9,b=9,然后把a的值赋值给b,a、b为9,选项D)错误;赋值运算符的左侧必须为变量,右侧可以是变量或者任意的表达式,所以答案选A)。16、下面对“对象”概念描述错误的是A、对象不具有封装性B、对象是属性和方法的封装体C、对象间的通信是靠消息传递D、一个对象是其对应类的实例标准答案:A知识点解析:面向对象的基本概念:①对象:对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件;②对象的状态和行为:对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中;③类:具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。因此选项A正确。17、有以下程序:#include<stdio.h>main(){FILE*pf;char*s1=’’China’’,*s2=’’Beijing’’;pf=fopen(’’abe.dat’’,’’wb+’’);fwrite(s2,7,1,pf);rewind(pf);/*文件位置指针回到文件开头木/fwrite(s1,5,1,pf);fclose(pf);}程序执行后,abc.dat文件的内容是()。A、ChinaB、ChinangC、ChinaBeijingD、BeijingChina标准答案:B知识点解析:本题考查文件操作函数:fwrite和rewind函数。题目中先是将s2字符串写入adc.dat中,然后将写指针回到文件开头,然后写入s1字符串,那么s1字符串就将前5个字符覆盖,所以最终结果为Chihang,B选项正确。18、以下叙述中正确的是A、在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上B、在使用scanf函数输入整数或实数时,输入数据之间只能用空格来分隔C、在printf函数中,各个输出项只能是变量D、使用printf函数无法输出百分号%标准答案:A知识点解析:scanf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,因此若想在屏幕上输出提示信息,应该首先使用prinff函数输出,选项A)正确;在使用scanf函数输入整数或实数时,输入数据之间可以用空格、跳格、回车来分隔,选项B)错误;printf输出项不但可以为变量,还可以表达式或者常量,选项C)错误:如果要输出“%”,可以在格式控制中用“%%”表示,将输出一个“%”,选项D)错误。19、有以下程序#includemain(){inta,b;for(a=0;a<3;a++){scanf("%d",&b);switch(b){case1:printf("%d,",b++);case2:printf("%d,",b++);default:printf("%d,",b++);}}printf("\n");}执行时输入:123<回车>,则输出结果是()。A、1,2,3,2,3,3,B、1,2,3,C、2,3,4,3,4,4,D、1,1,1,2,2,3标准答案:A知识点解析:考查switch语句的执行过程。switch语句执行过程中,default语句块最后判定,case或者default只是作为一个入口,如果执行完某一个case或者default语句块之后没有遇到break,则继续往下执行。3次输入的b值分别为1、2、3。对应执行的printf语句的条数分别为3、2、1条。每次输出b自加1前的值,所以答案选A。20、以下叙述中错误的是A、可以用typedef将已存在的类型用一个新的名字来代表B、可以通过typedef增加新的类型C、用typedef定义新的类型名后,原有类型名仍有效D、用typedef可以为各种类型起别名,但不能为变量起别名标准答案:B知识点解析:C语言允许用typedef说明一种新类型名。typedef类型名标识符:其中“类型名”必须是在此语句之前已定义的类型标识符;“标识符”是一个用户定义标识符,用作新的类型名:typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。21、若变量已正确定义,则以下语句的输出结果是s=32;s^=32;printf("%d",s);A、-1B、1C、32D、0标准答案:D知识点解析:“按位异或”运算的规则是:参与运算的两个运算数中相对应的二制位上,若数相同,则该位的结果为0;若数不同,则该位的结果为1。因为语句“s=32;s^=32;”相当于s与自身做按位异或运算,所以其结果等于0。22、有以下程序#include<stdioh>voidmain(){Inta□={2,3,5,4),i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;case1:a[i]--;}break;case1:a[i]=0;]for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");}程序运行后的输出结果是A、2050B、3344C、3040D、0304标准答案:C知识点解析:在主函数的for循环语句中,当循环变量i的值等于0,2时,执行switch中的case0语句,分别对数组元素a[0]和a[2]加1和减1,所以a[0]的值等于3,a[2]等于4。当循环变量i的值等于1,3时,执行switch中的case1语句,把数组元素a[1]和a[3]的值赋为0。所以输出数组a的元素,其结果为3040。23、以下语句中存在语法错误的是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)为指针数组,对于指针变量可以保存常量字符串的地址。24、若有以下程序main(){inta=6,b=0,c=0;for(;a&&(b==0);){b+=a;a-=c++;}printf("%d,%d,%d\n",a,b,c);}则程序的输出结果是A、6,0,0B、5,6,0C、6,6,1D、5,6,1标准答案:C知识点解析:循环条件a&&(b==0),a非零同时b==0则执行循环体,否则退出。循环体执行一次,此时b=6,a=6,c=1。25、有以下程序,程序运行后的输出结果是voidfun(int*p1,int*p2,int*s){s=(int*)malloc(sizeof(int));*s=*p1+*(p2++);}main(){inta[2]={1,2},b[2]={10,20},*s=a;fun(a,b,s);printf("%d\n",*s);}A、10B、11C、2D、1标准答案:D知识点解析:主函数中定义指针s指向数组a,调用fun函数,首先是实参传绘形参,因此p1指向a,p2指向b,s指向a,即*s的值为1。流程到调用函数fun执行,首先更改s的指向为新分空间的首地址,表达式*s=*p1+*(p2++),取p1指向数据位1,加上p2指向数据10,p2后移,存放到s指向的空间中11,流程结束,形参s和p1,p2撤销,存入s指向空间的数据丢失,主函数输出s指向数据仍然是1。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共25题,每题1.0分,共25分。)1、设数据结构B=(D,R),其中D={a,b,c,d,e,f}R={(f,a),(d,b),(e,d),(e,e),(a,c)}该数据结构为()。A、线性结构B、循环队列C、循环链表D、非线性结构标准答案:A知识点解析:数据的逻辑结构有两个要素:一是数据元素的集合,通常记为D;二是D上的关系,它反映了D中各数据元素之间的前后件关系,通常记为R。即一个数据结构可以表示成B=(D,R)。其中B表示数据结构。为了反映D中各数据元素之间的前后件关系,一般用二元组来表示。例如,假设a与b是D中的两个数据,则二元组(a,b)表示a是b的前件,b是a的后件。本题中R中的根节点为f,元素顺序为f→a→c→e→d→b,满足线性结构的条件。2、以下选项中关于程序模块化的叙述错误的是A、把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块B、可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序C、把程序分成若干相对独立的模块,可便于编码和调试D、可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序标准答案:B知识点解析:如果应用结构化程序设计方法设计程序,那么可采用自项向下,逐步细化的设计方法把若干独立模块组装成所要求的程序。3、设栈的顺序存储空间为S(1:m),初始状态为top=0。现经过一系列正常的入栈与退栈操作后,top=m+1,则栈中的元素个数为()。A、0B、mC、不可能D、m+1标准答案:C知识点解析:栈为空时,栈顶指针top=0,经过入栈和退栈运算,指针始终指向栈顶元素。初始状态为top=0,当栈满top=m,无法继续入栈,top值不可能为m+1。4、某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)A、3B、4C、6D、7标准答案:D知识点解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二叉树为7层,每层只有一个结点。5、以下叙述中正确的是()。A、C程序中注释部分可以出现在程序中任何合适的地方B、花括号“{”和“)”只能作为函数体的定界符C、构成C程序的基本单位是函数,所有函数名都可以由用户命名D、分号是C程序语句之间的分隔符,不是语句的一部分标准答案:A知识点解析:C程序中的注释可以出现在程序的任何地方,既可以独占一行或几行,也可以出现在某条语句的开始或末尾。选项B)的错误之处在于花括号不仅能作为函数体的定界符,也可以作为复合语句的定界符,还可以作为变量、数组、结构、联合、枚举等初始化数据的定界符;选项C)的错误是明显的,除了main函数之外的其他函数才能由用户自由命名;选项D)也是不正确的,分号是C语句的一部分,而不是用作语句之间的分隔符。6、有以下程序:#include<stdio.h>voidmain(){unsignedchara=8,c;c=a>>3:printf(″%d\n″,c);}程序运行后的输出结果是()。A.32B.16C.1D.0A、32B、16C、1D、0标准答案:C知识点解析:字符常量与其ASCⅡ码值一一对应,在计算的时候,可以使用该字符的ASCⅡ码参与运算,输出时会根据格式控制符输出对应的字符或者ASCⅡ码。右移运算符“>>”的运算规则是把左边运算数的各二进制位全部右移n位,n取决于“>>”右边的数值。字符a的ASCⅡ码值为8,对应二进制为1000,所以a>>3=1,输出的字符c的ASCⅡ码值为1,答案选C。7、以下选项中不能用作C程序合法常量的是A、’\123’B、1,234C、123D、’\x7D’’标准答案:B知识点解析:选项B中的1,234在两侧加双引号才是C程序的合法字符串常量。8、以下选项中可用作C程序合法实数的是A、3.0e0.2B、E9C、.1e0D、9.12E标准答案:C知识点解析:C程序的合法实数有两种表示形式,一种是小数形式,另一种是指数形式,对,用指数形式表示的实数米说,需要注意的赴字母e或E之前必须要有数字,且字母e或E后面的指数必须为整数。9、设有定义:intk=0;,下列选项的4个表达式中与其他3个表达式的值不相同的是()。A、k++B、k+=1C、++kD、k+1标准答案:A知识点解析:因为题中有语句“intk=0;”,所以选项B)、C)、D)都是对k的值加1,选项A)的语句k++表示先利用k的值后进行运算,然后k的值才加1。10、以下标识符不是关键字的是()。A、breakB、charC、SwitchD、return标准答案:C知识点解析:此题考查标识符和关键字的概念。需要注意的是C语言是区分大小写的,“switch”是关键字,但“Switch”不是关键字。11、下列描述中正确的是A、数据库系统是一个独立的系统,不需要操作系统的支持B、数据库技术的根本目标是要解决数据的共享问题C、数据库管理系统就是数据库系统D、以上三种说法都不对标准答案:B知识点解析:数据库系统由如下几个部分组成:数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。这五个部分构成了一个以数据库为核心的完整的运行实体,称为数据库系统。数据库技术的根本目的是要解决数据的共享问题。数据库中的数据具有“集成”、“共享”之特点,亦即数据库集中了各种应用的数据,进行统一地构造与存储,而使它们可被不同应用程序所使用。数据库管理系统(DatabaseManagementSystem,简称DBMS),是一种系统软件,负责数据库中的数据组织、数据操作、数据维护、控制及保护和数据服务等。它是数据库系统的核心。12、若变量已正确定义,在if(W)printf("%d\n",k);中,以下不可替代w的是A、ch=getchar()B、a==b+cC、a<>b+cD、a++标准答案:C知识点解析:在if()语句的括号是一个合法的C语言表达式即可,如果表达式的值为0,则不执行if语句,否则执行if语句,而在选项C)中,符号<>不是C语言的合法运算符,如果要表达a大于或小于b+c可用a!=b+c或(a>b+c)‖(ab+c。所以它不是一个合法的C语言表达式。13、以下不能输出字符A的语句是(注:字符A的ASCII码值为65,字符a的ASCII码值为97)()。A、printf(’’%c\n’’,’a’-32);B、printf(’’%d\n’’,’A’);C、printf(’’%c\n’’,65);D、printf(’’%c\n’’,’B’-1);标准答案:B知识点解析:B选项输出的格式为%d,即为整型格式,所以输出字符A的ASCII码值65,而不是字符A。由于大写字母比和其对应的小写字母的ASCII码值小32,所以A选项正确。字符A的ASCII码值就是65,所以以%c格式输出可以输出字符A,所以C选项正确。由于字符A的ASCII码值比字符B的小1,所以D选项正确。14、C语言源程序名的后缀是A、.exeB、.objC、.cD、.cp标准答案:C知识点解析:由C语言构成的指令序列称为C源程序,源程序文件的后缀为“.c”。源程序经过C编译程序编译生成后缀为“.obj”的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件把目标文件与C语言提供的各种库函数连接起来,生成后缀为“.exe”的可执行文件。15、下列选项中不属于结构化程序设计原则的是A、可封装B、自顶向下C、模块化D、逐步求精标准答案:B知识点解析:结构化程序的基本结构有:顺序结构、选择结构和循环结构,没有GOTO跳转结构。16、设有课程关系模式如下:R(C#,Cn,T,TA)(其中C#为课程号,Cn为课程名,T为教师名,Ta为教师地址)并且假定不同课程号可以有相同的课程名,每个课程号下只有一位任课教师,但每位教师可以有多门课程。该关系模式可进一步规范化为A、R1(C#,Cn,T),R2(T,TA)B、R1(C#,Cn),R2(T,TA)C、R1(C#,Cn,TA),R2(T,TA)D、R1(C#,T),R2(T,TA)标准答案:A知识点解析:关系模式R中,课程号和教师名为主关键字,他们不能拆开。教师地址可以拆开、并将教师名作为主关键字。因此可以形成关系模式R2(T,Ta),课程号、课程名和教师名可拆为一个关系模式R1(C#,Cn,T)。因此关系模式R可进一步规范化为两个关系模式R1(C#,Cn,T)和R2(T,TA)。17、有以下程序,程序的输出结果是main(){charc1=’A’,c2=’Y’;printf("%d,%d\n",c1,c2);}A、输出格式不合法,输出出错信息B、65,90C、65,89D、A,Y标准答案:C知识点解析:C语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。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、有以下程序段intj;floaty;charname[50];scanf("%2d%f%s",&j,&y,name);当执行上述程序段,从键盘上输入555667777abc后,y的值为A、55566.0B、7777.0C、566.0D、566777.0标准答案:C知识点解析:因为在输入格式控制符中指定变量j的输入格式控制符为“%2d”,即变量j所占的宽度为2,所以变量i只接收输入数据的前两位,从第三位开始直到空格之间的输入整数都会被保存到变量y中,因为y为浮点型数据,所以输出结果为选项C)。20、若有以下程序#ineludemain(){inta=1,b=2,c=3,d=4,r=0;if(a!=1);elser=1;if(b==2)r+=2;else;if(c!=3)r+=3;else;if(d==4)r+=4;printf("%d\n",r);}则程序的输出结果是A、10B、6C、7D、3标准答案:C知识点解析:程序代码中有四条并列的if语句,第一条if表达式a!=1不成立,执行else分支,r=1;第二条if表达式b==2成立,执行r+=2,r=3;第三条if语句c!=3不成立,执行else分支,分支为空语句;第四条if分支d==4成立,执行该if分支语句,r+=4,r=7。21、有以下程序段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。22、若有以下程序#include<stdio.h>main(){inta=-11,b=10;a/=b/=-4;printf("%d%d\n",a,b);}则程序的输出结果是A、-1-2B、5-2C、4-3D、5-3标准答案:B知识点解析:对于语句a/=b/=-4;相当于a=a/(b=b/-4);a初值为-11,b的初值为10,则运算以后10/-4值为-2,-11/-2值为5。23、若有定义语句:inta[3][6];,按在内存中的存放顺序,a数组的第10个元素是A、a[0][4]B、a[1][3]C、a[0][3]D、a[1][4]标准答案:B知识点解析:本题考查多维数组的定义和使用。a是一个二维数组,有3行6列,即每行6个元素,a的第lO个元素位于第二行的第四个位置,即a[1][3]。24、有以下程序main(){inta=1,b=2,c=3,x;x=(a^b)&c;printf("%d\n",x);}程序的运行结果是A、1B、2C、3D、0标准答案:C知识点解析:1、2、3的二:进制形式分别为00000001、00000010、00000011。首先计算1与2的或运算,即1^2=(00000001)^(00000010)=00000011,再将其与3进行“与”运算,结果为(00000011)&(00000011)=00000011,即十进制数3。25、对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是()。A、快速排序B、冒泡排序C、直接插入排序D、堆排序标准答案:D知识点解析:除了堆排序算法的比较次数是Onlog2n,其他的都是n(n-1)/2。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共25题,每题1.0分,共25分。)1、下列叙述中正确的是A、算法就是程序B、设计算法时只需要考虑数据结构的设计C、设计算法时只需要考虑结果的可靠性D、以上三种说法都不对标准答案:D知识点解析:所谓算法是指解题方案的准确而完整的描述。是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。算法不等于程序,也不等于计算方法。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。2、表示关系式x≤y≤z的C语言表达式的是A、(x<=y)‖(y<=x)B、(x<=y<=z)C、(x<=y)&&(y<=x)D、(x<=y)!(y<=x)标准答案:C知识点解析:表示三个变量的关系,要利用逻辑表达式,用逻辑与连接。3、有两个关系R和S如下:则由关系R得到关系S的操作是()。A、自然连接B、并C、选择D、投影标准答案:C知识点解析:关系S是由关系R中的一行元组组成,应通过选择运算得到。4、有三个关系R、S和T如下。则由关系R和S得到关系T的操作是A、选择B、差C、交D、并标准答案:B知识点解析:由关系T中的数据可以看出,其数据由属于关系R但是不属于关系S的数据组成。所以关系T是由关系R和S通过差运算得到的。5、设intn1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是()。A、*p=*q;B、p=*q;C、*p=n1;D、p=q;标准答案:A知识点解析:本题考查指针的使用。指针p和q分别指向变量n2和n1,所以可以用*p代替n2,*q代替n1。6、有以下程序:#includemain(){intilia[3][3]={{2},{4},{6}},i,*P=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*P+1;else++P;printf(“%d”,*P);}printf(“\n”);}程序运行后的输出结果是()。A、26B、23C、43D、46标准答案:B知识点解析:本题主要考查指针与数组。观察题目,可以发现,*p=&aa[0][0]语句实际是将数组aa的首地址赋给指针变量p,将i的值带入for循环中,i=0时,aa[0][1]=3,*p=2,*p输出地是指针所指向的数组值,此时p所指向地是aa[0][0],输出2,而i=1时执行了++p操作,使指针向后移动指向aa[0][1],所以在输出*p时应为3。故B选项正确。7、关于switch语句的叙述中正确的是()。A、break语句必须与switch语句中的case配对使用B、在switch语句中必须使用defaultC、在switch语句中,不一定使用break语句D、break语句只能用于switch语句标准答案:C知识点解析:C语言中的break语句的功能是跳出正式执行的条件语句或循环语句。它可以出现在switch语句中,也可以出现在循环语句中。default是关键字,起标号的作用,在switch语句中代表所有case标号之外的那些标号。default标号可以出现在语句体中任何标号位置上。8、有以下程序:#include<stdio.h>intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i];returnsum;}main(){inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);prinff("%d\n",s);}程序的运行结果是()。A、55B、50C、45D、60标准答案:D知识点解析:内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。fun(a,5)的值是15,再次调用后sum=15,所以fun(b,4)=45,s=45+15=60,因此D选项正确。9、生产每种产品需要多种零件,则实体产品和零件间的联系是A、多对多B、一对多C、多对一D、一对一标准答案:A知识点解析:多对多关系是关系数据库中两个表之间的一种关系,该关系中第一个表中的一个行可以与第二个表中的一个或多个行相关。第二个表中的一个行也可以与第一个表中的一个或多个行相关。本题中,每种产品需要多种零件,这些零件能组成多种产品,因此,本题是多对多关系。10、下列结构体类型说明和变量定义中正确的是()。A、structREC;{intn;charC;};RECt1,t2;B、typedefstruct{intn;charc;}REC;RECt1,t2;C、typedefstructREC;{intn=0;charc=’A’;}t1,12;D、struct{intn;charc:}REC;RECt1,t2;标准答案:B知识点解析:本题考查结构体的相关知识。选项A中structREC后面不能有分号,C选项中typedefstructREC的后面也不能有分号,选项D中REC已经是结构体变量,不能当作结构体类型来使用。11、下面对“对象”概念描述错误的是A、对象不具有封装性B、对象是属性和方法的封装体C、对象间的通信是靠消息传递D、一个对象是其对应类的实例标准答案:A知识点解析:面向对象的基本概念:①对象:对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件;②对象的状态和行为:对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中;③类:具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。因此选项A正确。12、设有定义:struetcomplex{intreal,unreal;}data1={1,8},data2;则下列赋值语句中错误的是()。A、data2=(2,6);B、data2=datal;C、data2.real=datal.real;D、data2.real=data1.unreal;标准答案:A知识点解析:A选项中可以在声明变量的同时为data2赋值,但是data2=(2,6);应写作data2={2,6};,所以选择A选项。13、以下叙述中正确的是A、C程序中的每一行只能写一条语句B、简单C语句必须以分号结束C、C语言程序中的注释必须与语句写在同一行D、C语句必须在一行内写完标准答案:B知识点解析:C语言的书写格式自由,一行可写多条语句,一条语句也可写在不同行上。C语言注释是比较自由的,可以写在一行或者多行。C语言规定每条语句和数据定义的最后必须有一个分号,分号是C语句的必要组成部分。14、若有定义语句:inta=3,b=2,c=1;以下选项中错误的赋值表达式是()。A、a=(b=4)=3;B、a=b=c+1;C、a=(b=4)+c;D、a=1+(b=c=4);标准答案:A知识点解析:不能将变量或常量赋给一个表达式,所以A选项中(b=4)=3是错误的。15、在数据库的三级模式中,可以有任意多个A、外模式(用户模式)B、模式C、内模式(物理模式)D、外模式和内模式标准答案:A知识点解析:数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称为子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,所以应选A。16、在数据库中存储的是A、数据的操作B、数据模型C、操作信息D、数据以及数据之间的联系标准答案:D知识点解析:数据库里存放的是一些元数据的东西,比如很多表,表中有数据字段,表与表之间有关系,最终表存放到表空间中,而表空间存放在操作系统的文件系统中。所以选项D正确。17、有以下程序main(){inti=1;i=i^i;printf("%d\n",i);}程序运行后的输出结果是A、-1B、0C、1D、7标准答案:B知识点解析:按位异或(^)的运算规则是:参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结果为0;若数不同,该位的结果为1。本题中表达式i^i的值必为0,因为i的各个位置的二进制值相同。18、若程序中有宏定义行:#defineN100则以下叙述中正确的是A、宏定义行中定义了标识符N的值为整数100B、上述宏定义行实现将100赋给标示符NC、在运行时用100替换标识符ND、在编译程序对C源程序进行预处理时用100替换标识符N标准答案:D知识点解析:在C语言中,凡是以“#”号开头的行,都称为“编译预处理”。其含义是在C编译程序对C源程序进行编译前,由编译预处理程序对这些编译预处理命令进行处理的过程。由#define定义的宏就是编译预处理命令。C程序在进行编译之前,都要先对程序中所有出现的“宏名”,都用宏定义中的替换文本进行替换。19、有以下程序#include<stdio.h>#include<string.h>voidfun(chars[][10],intn){chart;inti,j;for(i=0;i<n-1;i++)for(j=i+lj<n;j++)if(s[i][0]>s[j][0]){t=s[i][0];s[i][0]=s[j][0];s[j][0]=t;}}main(){charss[5][10]={"bcc","bbcc","xy","aaaacc","aabcc"};fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);}程序的运行结果是A、aaaacc,xyB、bcc,aabccC、xy,aaaaccD、aabcc,bcc标准答案:C知识点解析:函数fun(chars[][10],intn)通过两重for循环语句,比较二维字符数组s[][10]的每个字符串的首字符大小,如果前一个字符串首字符大于后一个字符串的首字符,则交换这两个字符串的首字符。在主函数中,语句fun(ss,5)的作用是对二维字符数组ss[5][10]的5个字符串的首字符进行从小到大的排序,不影响各个字符串另外的字符。所以排序结束后,5个字符串的第一个字符依次变为a、a、b、b和x;最后输出第1个和第4个字符串。20、若有以下程序段intr==8;printf("%d\n",r>>1);输出结果是A、8B、4C、16D、2标准答案:B知识点解析:定义了整型变量r,其值等于8,在输出语句中,把变量r的值向右移动一位,在C语言中把变量向右移动一位,相当于其值除以2,所以在题中把变量r的值8除2,得到其值等于4。21、以下叙述中正确的是A、a是实型变量,a=10在C语言中是允许的,因此可以说:实型变量中可以存放整型数B、在赋值表达式中,赋值号的右边可以是变量,也可以是任意表达式C、若有inta=4,b=9;执行了a=b后,a的值已由原值改变为b的值,b的值变为0D、若有inta=4,b=9;执行了a=b;b=a;之后,a的值为9,b的值为4标准答案:B知识点解析:B选项中a是实型变量,a=10在C语言中是允许的,但是实型变量中不可以存放整型数,C选项中执行a=b后,a的值变为b的值,为9,b的值不变,仍为9,D选项中执行a=b后,a的值为9,b的值为9,执行b=a后,a的值为9,b的值也为9,所以选择B。22、有以下结构体说明、变量定义和赋值语句structSTD{charname[10];intage;charsex;}s[5],*ps;ps=&s[0];则以下scanf函数调用语句有错误的是A、scanf("%d",&s[0].age);B、scanf("%c",&(ps->sex));C、scanf("%s",s[0].name);D、scanf("%d",ps->age);标准答案:D知识点解析:程序段定义了结构体变量数组s[5]和指针变量ps,然后ps指向数组s[5]中的第一个元素,因而ps->age引用s[0].age。因为在输入scanf()函数中,第2个参数应该表示为地址变量,而选项A表示的值,而不是一个地址值。23、下面关于“EOF”的叙述,正确的是A、EOF的值等于0B、文本文件和二进制文件都可以用EOF作为文件结束标志C、EOF是在库函数文件中定义的符号常量D、对于文本文件,fgetc函数读入最后一个字符时,返回值是EOF标准答案:C知识点解析:EOF是在stdio.h库函数文件中定义的符号常量,其值等于-1。EOF用作文件结束标志,在二进制或者文本文件内部有一个位置指针,用以指示文件内部的当前读写位置。使用fgetc函数,每读写一次,该指针均向后移动,24、若有定义语句:chara=’\82’;则变量aA、说明不合法B、包含1个字符C、包含2个字符D、包含3个字符标准答案:A知识点解析:定义语句:chara=’\82’;定义字符变量a,但是赋初值时却给赋值字符常量,因此A选项正确。25、以下关于return语句的叙述中正确的是A、一个自定义函数中必须有一条return语句B、一个自定义函数中可以根据不同情况设置多条return语句C、定义成void类型的函数中可以有带返回值的return语句D、没有return语句的自定义函数在执行结束时不能返回到调用处标准答案:B知识点解析:在函数中允许有多个return语句,但每次调用只能有一个return语句被执行,因此只能返回一个函数值,A选项描述错误。定义成void类型的函数,不允许从该函数取得返回值,也不允许使用return语句,C选项描述错误。没有return语句的函数在执行到函数的最后一条语句后会自动返回到调用处,D选项描述错误。因此B选项正确。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共25题,每题1.0分,共25分。)1、下列叙述中正确的是A、算法就是程序B、设计算法时只需要考虑数据结构的设计C、设计算法时只需要考虑结果的可靠性D、以上三种说法都不对标准答案:D知识点解析:所谓算法是指解题方案的准确而完整的描述。是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。算法不等于程序,也不等于计算方法。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。2、下列与队列结构有关联的是A、函数的递归调用B、数组元素的引用C、多重循环的执行D、先到先服务的作业调度标准答案:D知识点解析:队列中最先插入的元素将最先被删除,最后插入的元素将最后被删除。3、下面对软件特点描述正确的是()。A、软件具有明显的制作过程B、软件在使用中存在磨损、老化问题C、软件复制不涉及知识产权D、软件是一种逻辑实体,具有抽象性标准答案:D知识点解析:软件具有以下特点:软件是一种逻辑实体,而不是物理实体,具有抽象性;软件的生产与硬件不同,它没有明显的制作过程;软件在运行、使用期间不存在磨损、老化问题;软件的开发、运行对硬件和环境具有依赖性;软件复杂性高,成本昂贵;软件开发涉及诸多的社会因素(包括软件知识产权及法律等问题)。4、在数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是()。A、文件系统阶段B、人工管理阶段C、文件系统阶段和数据库阶段D、人工管理阶段和文件系统阶段标准答案:B知识点解析:数据库管理技术的三个阶段是人工管理阶段、文件系统阶段和数据库系统阶段。人工管理阶段没有专门的软件对数据进行管理。5、以下叙述中正确的是()。A、计算机只接收由0和1代码组成的二进制指令或数据B、计算机只接收由0和1代码组成的十进制指令或数据C、计算机可直接接收并运行C源程序D、计算机可直接接收并运行任意高级语言编写的源程序标准答案:A知识点解析:二进制数中只有两个字符0和1,表示具有两个不同稳定状态的元器件。例如,电路中有无电流,有电流用1表示,无电流用0表示。类似的还比如电路中电压的高低,晶体管的导通和截止等。二进制数运算简单,大大简化了计算中运算部件的结构,故选项A正确。6、有以下程序:main(){chars口={’a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’\0’};intp,q;p=sizeof(s);q=strlen(s);printf("%d%d\b",p,q);}程序的运行结果是()。A、9,8B、1,8C、8,9D、9,9标准答案:A知识点解析:本题统计字符串a所占存储单元的个数和长度。s所占存储单元的个数为9,但长度为8,不包含’\0’。7、有以下定义:unionA{charst[4];inti;long1;};structB{intc;unionAb;}b;变量b所占内存字节数是()。A、4B、5C、6D、8标准答案:C知识点解析:结构变量所占的内存字节数等于其中各个成员所占的字节数的总和,而联合变量所占的内存字节数是其中最长的成员所需要的字节数。本题中结构变量b有两个成员,一个是整型变量c,它占2字节内存,另一个是联合变量a,它自己也含有三个成员,其中占用内存空间最长的成员的变量1,占4字节内存,因此,联合变量a所占内存字节数为4,结构变量b所占总的内存字节数为变量c与变量a所占字节数之和,即2+4=6。8、数据库应用系统中的核心问题是A、数据库设计B、数据库系统设计C、数据库维护D、数据库管理员培训标准答案:A知识点解析:在数据库应用系统中的一个核心问题就是设计一个能满足用户要求,性能良好的数据库,这就是数据库设计。所以数据库设计是数据库应用的核心。9、以下不合法的字符常量是()。A、’\\’B、’\"’C、’\018’D、’\xcc’标准答案:C知识点解析:转义字符中,八进制的表示形式为\ddd,但是八进制中不能包含数字8,所以C选项不合法。10、以下叙述中正确的是A、赋值语句是一种执行语句,必须放在函数的可执行部分B、scanf和printf是C语言提供的输入和输出语句C、由printf输出的数据都隐含左对齐D、由printf输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的标准答案:A知识点解析:C语言本身没有提供输入输出语句,但是可以通过调用标准库函数中提供的输入和输出函数来实现输入平I]输出,选项B错误;采用州ntf输出数据,输出数据都默认为右对齐,若要左对齐,可以在格式控制中的“%”和宽度之间加一一个“.”号来实现,选项C错误;printf的输出精度由变量的类型决定,与域宽无关,选项D错误。11、若有定义语句:intyear=2009,*p=&year;,以下不能使变量year中的值增至2010的语句是()。A、(*p)++;B、*p++;C、++(*p);D、*p+=1;标准答案:B知识点解析:由于自加运算符++的运算级别高于间接运算*的运算级别,所以B选项的表达式*p++不能使变量year中的值增至2010,因此选择B选项。12、若各选项中所用变量已正确定义,函数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知识点解析:C语言规定,函数必须先定义,后调用(雨数的返回值类型为int或char时除外)。在选项A)中,调用的子函数在调用后面定义,所以不正确。在选项B)、C)中,被调用函数在主函数之前定义,再在主函数中调用,所以是正确的;在选项D)中,存主函数中先对子函数floatfun(inti,intj)进行了声明,然后进行调用。13、以下关于C语言的叙述中正确的是()。A、预处理命令通常位于函数体外面,但也可以位于函数体中间B、C语言中的变量定义须在其他语句之前C、在C语言程序的书写中,一个语句必须单占一行D、一个C语言源程序可以由一个或多个源文件组成,每个源文件可由自己的main函数标准答案:A知识点解析:源程序中可以有预处理命令(include命令仅为其中的一种)。C语言中的变量可以在使用之前的任何位置进行定义。C语言程序的书写中,多个语句可以位于一行,但为了增强可读性,一般每行只有一条语句。一个C语言源程序可以由一个或多个源文件组成,但仅可以有一个main函数。14、以下叙述中错误的是A、函数调用可以作为一个独立的语句存在B、函数形参的值也可以传回给对应的实参C、若函数有返回值,必须通过return语句返回D、C程序必须由一个或一个以上的函数组成标准答案:B知识点解析:一个C程序中可以包含任意多个不同名的函数,但只能有一个主函数。一个C程序总是从主函数开始执行。函数的值通过return语句返回,return语句中的表达式的值就是所求的函数值。在C语言中,数据只能从实参单向传递给形参,称为“按值”传递。也即是说,当简单变量作为实参时,用户不可能在函数中改变对应实参的值。15、有以下程序:#include<stdio.h>main(){charch[]="uvwxyz",*pc;pc=ch;printf("%c\n",*(pc+5));}程序的运行结果是()。A、zB、0C、元素ch[5]的地址D、字符y的地址标准答案:A知识点解析:语句pc=ch;使得指针变量指向字符数组ch的首地址,即指向字符’u’,则pc+5指向的是字符向后移动5位,指向字符’z’,所以输出的*pc+5的值即为’z’,因此A选项正确。16、以下选项中合法的标识符是()。A、_11B、1-1C、1_1D、1__标准答案:A知识点解析:C语言规定,标识符由字母(A~Z,a~z)、数字(0~9)或者下划线(_)组成,并且第一个字符必须为字母或者下划线,答案选A。17、有以下程序#includeintfun(int(*s)[4],intn,intk){intm,i;m=s[0][k];for(i=1;im)m=s[i][k];returnm;}main(){inta[4][4]={{1,2,3,4),{11,12,13,14},{21,22,23,24},{31,32,33,34}};printf("%d\n",fun(a,4,0));}程序的运行结果是A、31B、34C、4D、32标准答案:A知识点解析:函数fun(int(*s)[4],intn,intk)的功能是返回二维数组第k列的最大元素。在主函数中由于二维数组a[4][4]已经初始化,所以fun(a,4,0)的值是二维数组a[][]第1列中的最大元素31。18、十进制整数设为整数类I,则下面属于类I的实例的是A、-518B、0.518C、518E-2D、.518标准答案:A知识点解析:整数的全体构成整数集,整数集是一个数环。在整数系中,零和正整数统称为自然数。-1、-2、-3、…、-n、…(n为非零自然数)为负整数。则正整数、零与负整数构成整数系。整数不包括小数、分数。本题中,选项A是正确的,选项B是小数,选项C是科学计数,也是小数,选项D是小数。19、有以下程序#includemain(){FILE*fp;inti,a[6]={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",&a[5-i]);fclose(fp);for(i=0;i<6;i++)printf("%d,",a[i]);}程序运行后输出结果是A、1,2,3,4,5,6,B、6,5,4,3,2,1,C、4,5,6,1,2,3,D、1,2,3,3,2,1,标准答案:B知识点解析:本题考查文件操作函数,fprintf和rewind函数,rewind函数将文件内部的位置指针重新指向一个流(数据流/文件)的开头,程序首先是将数组a的六个数写入d2文件中,然后又将a数组从后往前覆盖到d2中的内容,所以结果为6,5,4,3,2,1,选项B正确。20、设有以下语句typedefstructTT{charc;inta[4];}CIN;则下面叙述中正确的是A、TT是struct类型的变量B、可以用TT定义结构体变量C、CIN是structTT类型的变量D、可以用CIN定义结构体变量标准答案:D知识点解析:C语言允许用typedef说明一种新的类型名,说明新类型名的语句为一般形式为:typedef。类型名标识符在此,“类型名”必须是此语句之前已有定义的类型标识符。“标识符”是一个用户定义标识符,用作新的类型名。typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。在本题中用typedef定义CIN为TT的一种新的类型名.因而可以用它定义一个结构体变量。21、有以下程序段structst{intx;int*y;)*pt;inta[]={1,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;以下选项中表达式的值为11的是A、pt->xB、*pt->yC、++pt->xD、(pt++)->x标准答案:C知识点解析:由题目的已知条件可知,pt指向结构体数组c[2]的第一元素c[0],所以pt->x=10,执行自加运算后为11。22、有以下程序yoidfun(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、9标准答案:B知识点解析:函数fun的主要功能是交换p和q指向的地址空间的数据,然后更改p的指向的地址空间数据,使之和q指向的数据相同。主函数调用fun后,p指向a,q指向b,因此a和b的数据全部为9。23、有以下程序#includeintfun(intx,inty){if(x!=y)return((x+y)/2);elsereturn(x);}main(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));}程序运行后的输出结果是()。A、6B、3C、8D、12标准答案:A知识点解析:考查函数的调用。输出结果为fun(2*a,fun(b,c))=fun(8,5)=6,答案选A。24、若要使用C数学库中的sin函数,需要在源程序的头部加上#include关于引用数学库,以下叙述正确的是()。A、通过引用math.h文件,说明sin函数的参数个数和类型,以及函数返回值类型B、将数学库中sin函数链接到编译生成的可执行文件中,以便能正确运行C、将数学库中sin函数的源程序插入到引用处,以便进行编译链接D、实际上,不引用math.h文件也能正确调用sin函数标准答案:A知识点解析:考查文件包含处理。文件包含命令的功能是把指定的文件添加到预处理部分,从而把指定的文件和当前的源程序文件连接起来,该文件则包含了程序要调用的函数的声明。由此,选项B)、C)、D)表述错误。答案选A)。25、有以下程序#include<stdio.h>main(){intn,*p=NULL;*p=&n;printf("Inputn:");scanf("%d",&p);printf("outputn:");printf("%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输出地址信息。国家二级C语言机试(选择题)模拟试卷第5套一、选择题(本题共25题,每题1.0分,共25分。)1、度为3的一棵树共有30个结点,其中度为3,1的结点个数分别为3,4。则该树中的叶子结点数为()。A、14B、15C、16D、不可能有这样的树标准答案:B知识点解析:设叶子结点数为n,则度为2的结点数为30-3-4-n=23-n,根据树中的结点数=树中所有结点的度之和+1,得3×3+2×(23-n)+1×4+0×n+1=30,则n=15。2、下面结构体的定义语句中,错误的是()。A、structord{intx;inty;intz;}structorda:B、structord{intx;inty;intz;};structorda;C、structord{intx;inty;intz;}a;D、struct{intx;inty;intz;}a;标准答案:A知识点解析:分号代表该结构体定义语句的结束,选项A的结构体没有定义完全就用该结构体另外定义变量,用法有误,所以答案选A。3、设栈的顺序存储空间为S(1:50),初始状态为top=0。现经过一系列入栈与退栈运算后,top=20,则当前栈中的元素个数为()。A、30B、29C、20D、19标准答案:C知识点解析:在栈中,top位置直接反映栈中元素的个数,top=20,则说明当前栈中的元素个数为20。4、设树T的深度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1。则T中的叶子结点数为A、8B、7C、6D、5标准答案:B知识点解析:深度为m二叉树其总结点数为2m-1=24-1=15。总结点数减去度为1,2,3,4的结点个数就是叶子结点数。15-4-2-1-1=7。5、在快速排序法中,每经过一次数据交换(或移动)后A、能消除多个逆序B、只能消除一个逆序C、不会产生新的逆序D、消除的逆序个数一定比新产生的逆序个数多标准答案:A知识点解析:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。6、学校的数据库中有表示系和学生的关系:系(系编号,系名称,系主任,电话,地点),学生(学号,姓名,性别,入学日期,专业,系编号),则关系学生中的主键和外键分别是()。A、学号,无B、学号,专业C、学号,姓名D、学号,系编号标准答案:D知识点解析:一个属性(即一列),在某张表中不是主键(主码),但在其他表中是主键(主码),则它是第一张表的外键(外码)。在“系”表中,“系编号”为主键;在“学生”表中,“学号”是主键,“系编号”不是主键,则“系编号”是表“学生”的外键。7、有三个关系R、S和T如下:则由关系R和关系S得到关系T的操作是()。A、选择B、差C、交D、并标准答案:B知识点解析:关系R和关系S经过差运算后得到的关系由属于关系R而且不属于关系S的元组构成,记为R-S。观察题干可知,关系T中的行属于关系R,但不属于关系S,故为差运算。8、下列程序的输出结果是()。main(){intarray[5]={2,4,6,8,10},*p,**PP;p=array;pp=&p;printf("%d",*(p++));printf("%d",**pp);}A、22B、24C、44D、46标准答案:B知识点解析:本题中指针p指向一维数组a的一级指针,指针pp是指向一级指针p的二级指针,p中存放的是数组array的首地址,所以在第一个printf()中,*(p++)表示先取p的值,然后加1,这时p中存放的是array[1]的值,pp中存放的是p的地址,**pp表示取p所指的对象的值,即array[1]的值。9、负责数据库中查询操作的数据库语言是A、数据定义语言B、数据管理语言C、数据操纵语言D、数据控制语言标准答案:C知识点解析:负责数据库中查询操作的数据库语言是数据操纵语言。10、有以下程序:#include<stdio.h>intsum(intm){staticintn=1;returnn+=m;}main(){inti;for(i=1;i<=1;i++)printf(″%d,″,sum(i));printf(″\n″);}程序运行后的输出结果是()。A、2,B、1,C、4,D、3,标准答案:A知识点解析:在输出函数中,调用sun函数,sun函数的作用是定义一个常数n=1,对n进行叠加主函数传递的m值,随后将和返回给主函数,因此输出为2,11、关于字符数组的定义中有语法错误的是()。A、charstr[3][10];str[1]=’’guest’’;B、charstr[][10]={’’guest’’};C、char*str[3];str[1]=’’guest’’;D、char*str[]={’’guest’’};标准答案:A知识点解析:本题考查字符数组的定义和使用。选项A定义了一个二维字符数组,第二句是直接给字符数组赋值,错误。C语言中不能直接给字符数组赋值;选项,B、C和D都是正确的。12、假定已建立以下链表结构,且指针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正确。13、以下选项中不能作为C语言合法常量的是A、’cd’B、0.1e+6C、\aD、’\011’标准答案:A知识点解析:常量指的是在程序的运行过程中,其值不能被改变的量。在C语言中,包括整型常量、实型常量、字符常量和字符串常量等类型。选项B0.1e+6是用指数形式表示的实型常量。在C语言中,用以“e”或“E”后一个整数来表示以10为底的幂数。以用这种形式表示实型常量时要注意C语言的语法规定,

温馨提示

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

评论

0/150

提交评论