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

下载本文档

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

文档简介

国家二级C语言机试(选择题)模拟试卷3(共9套)(共270题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共25题,每题1.0分,共25分。)1、某完全二叉树按层次输出(同一层从左到右)的序列为ABCDEFGH。该完全二叉树的前序序列为()。A、ABCDEFGHB、ABDHECFGC、HDBEAFCGD、HDEBFGCA标准答案:B知识点解析:完全二叉树的特点是除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。根据这一特点,再根据题意输出序列为ABCDEFGH,可以得到该二叉树的结构如下:故此完全二叉树的前序序列为ABDHECFG。2、若主函数中有定义语句:inta[10],b[10],c;,在主函数前定义的fun函数首部为:voidfun(intx[]),则以下选项中错误的调用语句是()。A、fun(b);B、fun(&c);C、fun(&a[3]);D、fun(b[11]);标准答案:D知识点解析:fun函数的形式参数应为一个数组,而b[11]是一个整型元素,参数类型不一致,且b[11]已经溢出,所以D选项错误。3、线性表的链式存储结构与顺序存储结构相比,链式存储结构的优点有A、节省存储空间B、插入与删除运算效率高C、便于查找D、排序时减少元素的比较次数标准答案:B知识点解析:顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一);要求内存中可用存储单元的地址必须是连续的。优点是存储密度大(=1),存储空间利用率高;缺点是插入或删除元素时不方便。链式存储时,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针优点是插入或删除元素时很方便效率高,使用灵活。缺点是存储密度小(<1),存储空间利用率低,故选项B正确。4、语句strlen("abcdcfiog\0\hi")的结果是()。A、4B、6C、11D、12标准答案:B知识点解析:字符串的字符’\0’,它在C语言的字符串中具有特殊的意义,字符’\0’标志字符串的结束,计算串长时,只计算字符’\0’之前的字符数量,而不计算’\0’之后有什么字符。5、下列方法中,属于白盒法设计测试用例的方法的是()。A、错误推测B、因果图C、基本路径测试D、边界值分析标准答案:C知识点解析:白盒测试方法也称为结构测试或逻辑测试,主要方法有逻辑覆盖测试、基本路径测试等。6、下列叙述中错误的是()。A、C程序可以由一个或多个函数组成B、C程序可以由多个程序文件组成C、一个C语言程序只能实现一种算法D、一个C函数可以单独作为一个C程序文件存在标准答案:C知识点解析:一个C程序可以有一个或多个程序文件,也可以有一个或多个函数,所以一个C语言程序可以实现多种算法,答案选C。7、软件测试的目的是A、评估软件可靠性B、发现并改正程序中的错误C、改正程序中的错误D、发现程序中的错误标准答案:D知识点解析:软件测试的目的是为了发现程序中的错误,而软件调试是为了更正程序中的错误。8、设表的长度为20。则在最坏情况下,冒泡排序的比较次数为A、90B、20C、19D、190标准答案:D知识点解析:假设线性表的长度为n,则在最坏情况下,冒泡排序的比较次数为n(n-1)/2。本题中,n=20,所以20*19/2=190。所以选项D正确。9、有以下程序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,结束循环。10、数据库管理系统是A、操作系统的一部分B、在操作系统支持下的系统软件C、一种编译系统D、一种操作系统标准答案:B知识点解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。11、我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令。关于转换以下说法错误的是A、一条C语句可能会被转换成多条机器指令B、一条C语句对应转换成一条机器指令C、一条C语句可能会被转换成零条机器指令D、某种类型和格式的C语句被转换成机器指令的条数是固定的标准答案:B知识点解析:由C语言编写的程序,通过编译、链接转换成可以让机器识别的01二进制指令。这些二进制指令命令机器计算,这些就是机器指令,而C语言的语句条数和机器指令的条数不是一对一的关系。12、以下选项中正确的定义语句是()。A、doublea=7,b=7;B、doublea=b=7;C、doublea;b;D、double,a,b;标准答案:A知识点解析:选项B)错误,定义时不能连续赋值;选项C)错误,分号表明一句语句的结束,所以变量b没有正确定义;选项D)错误,在定义变量的时候,类型后面不能跟逗号。所以答案选A)。13、设有定义“char*c;”,以下选项中能够使c正确指向一个字符串的是()。A、charstr[]="string";c=str;B、scanf("%s",c);C、c=getchar();D、*c="string";标准答案:A知识点解析:选项A为正确用法,先将字符串存于字符数组中,然后将数组名赋给字符指针(数组名代表数组首地址,定义数组时为其分配确定的地址)。C选项错误,getchar()函数输入一个字符给字符型变量,而不是字符指针。B选项和D选项有类似的错误,两个选项并无语法错误,但运行时可能会出现问题。因为在B选项和D选项中,字符指针没有被赋值,是个不确定的值,指向一个不确定的内存区域,这个区域可能存放有用的指令或数据。在这个不确定的区域重新存放字符串,可能会发生无法预知的错误。14、下列关于二叉树的叙述中,正确的是()。A、叶子结点总是比度为2的结点少一个B、叶子结点总是比度为2的结点多一个C、叶子结点数是度为2的结点数的两倍D、度为2的结点数是度为1的结点数的两倍标准答案:B知识点解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个。所以选择B)。15、软件生命周期中的活动不包括()。A、市场调研B、需求分析C、软件测试D、软件维护标准答案:A知识点解析:软件生命周期可以分为软件定义、软件开发与软件运行维护三个阶段。主要活动阶段是:可行性研究与计划阶段,需求分析,软件设计,软件实现,软件测试,运行和维护,所以选择A)。16、若要求从键盘读入含有空格字符的字符串,应使用函数A、getc()B、gets()C、getchar()D、scanf()标准答案:B知识点解析:scanf()语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所以用scanf()函数不能输入空格;getchar()函数用于输入字符,其调用形式为:ch=getchar(),getchar()函数从终端读入一个字符作为函数值,把读入的一个字符赋给变量ch。在输入时,空格、回车符都将用于字符读入,而且只有在用户敲入Enter键时,读入才开始执行。gets()函数的调用形式为:gets(str_adr),其中str_adr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。gets()函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc()函数的调用形式为:ch=getc(pD其中pf是文件指针。函数的功能是从pf指定的文件中读入一个字符,并把它作为函数值返回。17、有以下程序#include<stdio.h>#include<stdio.h>intfun(intn){int*p;p=(int*)malloc(sizeof(int));*p=n;return*p;}main(){inta;a=fun(10);printf(’’%d\n’’.a+fun(10));}程序的运行结果是A、10B、20C、0D、出错标准答案:B知识点解析:函数fun(intn)的功能是在内存中每次动态的申请一个整型变量的存储空间,把整型变量n的值存入这个存储空间中。所以当在主函数中执行输出语句时,a+fun(10)的值等于20。18、在数据库管理系统提供的数据语言中,负责数据模式定义的是A、数据定义语言B、数据管理语言C、数据操纵语言D、数据控制语言标准答案:A知识点解析:数据库管理系统一般提供相应的数据语言,它们分别是:数据定义语言,负责数据的模式定义与数据的物理存取构建;数据操纵语言,负责数据的操纵,包括查询及增、删、改等操作;数据控制语言,负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。19、若有定义语句:inta=3,b=2,c=1;以下选项中错误的赋值表达式是A、a=b=c+1;B、a=(b=4)=3;C、a=(b=4)+c;D、a=1+(b=c=4);标准答案:B知识点解析:本题主要考查赋值表达式,对于赋值表达式来说,赋值号“=”的左边一定为变量名,右边为一个C语言合法的表达式。20、有以下程序#includemain(){inty=1,x,a[]={2,4,6,8,10},*p;p=&a[1];for(x=0;x<3;x++)y=y+*(p+x);printf("%d\n",y);}程序运行后的输出结果是A、17B、19C、18D、20标准答案:B知识点解析:本题通过语句"p=&a[1]将指针变量p指向了存储单元a[1],即使得p[0]的值为4。然后通过3次for循环,x=0时,*(p+x)=*p=a[1]=4所以y=1+4=5;x=1时,*(p+x)=*(p+1)=a[2]=6,所以y=5+6=11;x=2时,*(p+x)=*(p+2)=a[3]=8,所以y=11+8=19。因此B选项正确。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、若有以下程序段charstr[4][12]={"aa,bbb","ccccc","d"},*strp[4];inti;for(i=0;i<4;i++)strp[i]=str[i];不能正确引用字符串的选项是A、strpB、str[0]C、strp[3]D、*strp标准答案:A知识点解析:程序段中定义指针数组*strp,含有4个元素,for循环strp分别保存了二维数组str中的4个字符串的首地址,因此strp为二级地址,不能保存字符串的首地址,*strp或者strp[0]中存放了字符串"aa"的”首地址,所以不能正确引用字符串的为选项A。23、有以下函数intaaa(char*s){char*t=s;while(*t++);t--;return(t-s);}以下关于aaa函数功能叙述正确的是()。A、求字符串s的长度B、比较两个串的大小C、将串s复制到串tD、求字符串s所占字节数标准答案:A知识点解析:数组名代表该数组的首地址。而函数循环"while(*t++);"的结束条件为t到达了当前字符串的尾部,即*t==?\0?成立,之后执行语句"t++"。循环结束后继续执行语句"t--",此时指针*t==?\0?,所以t-s计算的是该字符串首尾(不连带字符串结束符)之间间隔了几个元素,即计算了s所指字符串的实际长度,答案选A。24、有以下程序:#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf("a=%d,b=%d\n",a,b);}程序的运行结果是()。A、a=2,b=2B、a=2,b=1C、a=1,b=1D、a=1,b=0标准答案:B知识点解析:case常量表达式只是起语句标号作用,并不是该处进行条件判断。在执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就从此case子句执行下去,不在进行判断,直到碰到break或函数结束为止。所以执行内层switch(y)时只执行了a++,此时a的值为1。然后执行外层case2语句的a++;b++;a为2,b为1。所以结果为B。25、下面结构体的定义语句中,错误的是()。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)选项structord{intx;inty;intz;}structorda;错误,不能在定义结构体的同时,又用结构体类型名定义变量。应该写成B)选项或者D)选项的格式。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共25题,每题1.0分,共25分。)1、下列叙述中正确的是()。A、能采用顺序存储的必定是线性结构B、所有的线性结构都可以采用顺序存储结构C、具有两个以上指针的链表必定是非线性结构D、循环队列是队列的链式存储结构标准答案:B知识点解析:所有的线性结构都可以用数组保存,即都可以采用顺序存储结构。而反过来不可以,完全二叉树也能用数组保存(按层次依次存放到数据元素中),但完全二叉树不属于非线性结构。双向链表具有两个以上的指针,但属于线性结构。循环队列是队列的顺序存储结构。2、下列叙述中正确的是A、算法就是程序B、设计算法时只需要考虑数据结构的设计C、设计算法时只需要考虑结果的可靠性D、设计算法时要考虑时间复杂度和空间复杂度标准答案:D知识点解析:算法复杂度,即算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。3、下列各组的排序方法中,最坏情况下比较次数相同的是A、冒泡排序与快速排序B、简单插入排序与希尔排序C、堆排序与希尔排序D、快速排序与希尔排序标准答案:A知识点解析:最坏情况下冒泡排序需要比较n(n-1)/2次,即序列逆序的情况。简单插入排序,无论是否最坏情况,都需要n(n-1)/2次。直接插入排序,最坏情况需要比较次n(n-1)/2次。堆排序,无论是否最坏都要比较O(nlog2n)次。快速排序,最坏情况退化为冒泡排序,需要比较n(n-1)/2次。在最坏情况下,希尔排序所需要的比较次数为O(n1.5)。4、在软件开发中,需求分析阶段产生的主要文档是()。A、可行性分析报告B、软件需求规格说明书C、概要设计说明书D、集成测试计划标准答案:B知识点解析:A选项错误,可行性分析阶段产生口J行性分析报告。C选项错误,概要设计说明书是总体设计阶段产生的文档。D选项错误,集成测试计划是在概要设计阶段编写的文档。B选项正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。5、对软件设计中应遵循的准则描述正确的是()。A、高耦合低内聚B、高内聚低耦合C、模块独立性仅与内聚度相关D、内聚与耦合无关标准答案:B知识点解析:软件设计应遵循的准则有抽象、逐步求精和模块化、信息隐蔽和局部化、模块独立性。模块的独立性程度是评价设计好坏的重要程度标准,有两个定性标准度量,即模块间的耦合性和模块内的内聚性。耦合性是模块间互相连接的紧密程度的度量。一个模块的耦合性越高则该模块的独立性越弱。内聚性是指一个模块内部各个元素间彼此结合的紧密程度。一个模块的内聚性越高则该模块的独立性越强。好的软件设计,应尽量做到高内聚、低耦合。6、下面不能作为软件设计工具的是()。A、PAD图B、程序流程图C、数据流程图(DFD图)D、总体结构图标准答案:C知识点解析:软件设计可以使用的工具有总体结构图、程序流程图、N-S图、PAD图、PDL。数据流程图(DFD图)是需求分析使用的工具。7、若有定义语句: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知识点解析:这道题目主要考察赋值表达式,对于赋值表达式来说,赋值号“=”的左边一定为变量名,右边为一个C语言合法的表达式。8、学校的数据库中有表示系和学生的关系:系(系编号,系名称,系主任,电话,地点),学生(学号,姓名,性别,入学日期,专业,系编号),则关系学生中的主键和外键分别是()。A、学号,B、学号,专业C、学号,姓名D、学号,系编号标准答案:D知识点解析:一个属性(即一列),在某张表中不是主键(主码),但在其他表中是主键(主码),则它是第一张表的外键(外码)。在“系”表中,“系编号”为主键;在“学生”表中,“学号”是主键,“系编号”不是主键,则“系编号”是表“学生”的外键。9、下面不属于软件工程的3个要素是A、工具B、过程C、方法D、环境标准答案:D知识点解析:软件工程的3个要素是工具、过程和方法。10、数据字典(DD)所定义的对象都包含于A、数据流图(DFD图)B、程序流程图C、软件结构图D、方框图标准答案:C知识点解析:本题考查数据流程图DFD的概念。对于面向数据流的结构化分析方法,按照DeMarco的定义,“结构化分析就是使用数据流图(DFD)、数据字典(DD)、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化规格说明的目标文档”。结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。数据流图(DFI)——DataFlowDiagram)是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。由此可得数据流程图是结构化方法的需求分析工具。11、在关系模型中,每一个二维表称为一个A、关系B、属性C、元组D、主码(键)标准答案:A知识点解析:每个二维表代表一个关系,由表框架及表的元组组成。12、有以下程序:#include<stdio.h>doublef(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。13、有以下程序#include<stdio.h>intflintx,inty){retum((y-x)*x);}main(){inta=3,b=4,c=5,d;d=flfla,b),f(a,c));printf(’’%d\n’’,d);}程序运行后的输出结果是A、10B、8C、9D、7标准答案:C知识点解析:本题考查函数的嵌套调用。首先计算f(a,b)与f(a,C,f(a,b)=(b—a)*a=3,f(a,C=(c.a)*a=6,然后计算f(3,6)=(6-3)*3=9。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、有以下程序#include#defineSUB(a)(a)-(a)main(){inta=2,b=3,c=5,d;d=SUB(a+b)*c;printf("%d\n",d);}程序运行后的输出结果是A、0B、-12C、-20D、10标准答案:C知识点解析:本题考查宏定义,宏定义只是做简单的替换,所以本题中SUB(a+b)*c=(a+b)-(a+b)*c=-20,所以答案为C选项。16、设有以下函数: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选项正确。17、若有以下程序段doublex=5.16894;printf("%f\n",(int)(x*1000+0.5)/(double)1000);则程序段的输出结果是A、5.175000B、5.169000C、5.170000D、5.168000标准答案:B知识点解析:(int)(x*1000+0.5)/(double)1000表达式功能,保存数据x的后三位小数,把第四位四舍五入。18、有以下程序yoidfun(char*S){chara[10];strcpy(a,’’STRING’’);S=a;}main(){char*p=’’PROGRAM’’;fun(P);printf(’’%s\n’’,p);)程序运行后的输出结果是(此处□代表空格)A、STRNG□□□□B、PROGRAMC、STRING□□□D、STRING标准答案:B知识点解析:函数fun的主要功能是把字符串’’STRING’’,存放到字符数组a中,s指向该字符串,函数调用结束以后,释放s和a指向的空间。主函数调用fun(p),并不能更改p的值,因此p的指向没有改变。19、有以下程序#include<stdio.h>intfun(int(*s)[4],intn,intk){intm,i;m=s[0][k];for(i=1;i<n;i++)if(s[i][k]>m)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。20、若有定义:inta[2][3];,以下选项中对a数组元素正确引用的是A、a[2][!1]B、a[2][3]C、a[0][3]D、a[1>2][!1]标准答案:D知识点解析:本题考查数组的使用,C语言中数组的下标从0开始。本题中a是一个二维数组,两个下标的范围分别是0-1和0-2。选项A中第一个下标越界,超出了范围:选项B中第一个和第二个下标都超出了范围;选项C中第二个下标超出范围;选项D中,1≥2的值为0.!1的值为0,因此选项D实际是访问a[0][0]。21、若有以下程序#include<stdio.h>int*f(int*s,int*t){int*k;if(*s<*t){k=s;s=t;t=k;}returns;}main(){inti=3,j=5,*p=&i,*q=&j,*r;r=f(p,q);printf("%d,%d,%d,%d,%d\n",i,j9*p,*q,*r);}则程序的输出结果是A、3,5,5,3,5B、5,3,5,3,5C、5,3,3,5,5D、3,5,3,5,5标准答案:D知识点解析:本题考查了返回值为指针的函数,函数f的主要功能为第一个参数小于第二个参数,那么交换指针的指向,这对于实参指向的数据时没有影响的。最后返回比较大的元素的地址。主函数中p指向i,q指向j,调用r=f(p,q)。返回q的地址,因此*p=3,*q=5,*r=5。22、下列关于栈叙述正确的是()。A、栈顶元素最先能被删除B、栈顶元素最后才能被删除C、栈底元素永远不能被删除D、栈底元素最先被删除标准答案:A知识点解析:栈是先进后出的数据结构,所以栈顶元素最后入栈却最先被删除。栈底元素最先入栈却最后被删除。所以选择A)。23、定义无符号整数类为UInt,下面可以作为类UInt实例化值的是()。A、-369B、369C、0.369D、整数集合{1,2,3,4,5}标准答案:B知识点解析:只有B)选项369可以用无符号整数来表示和存储。A)选项-369有负号,选项C)0.369是小数都不能用无符号整数类存储。选项D)是一个整数集合得用数组来存储。24、若变量已正确定义,以下选项中非法的表达式是A、a!=4||’b’B、’a’=1/2*(x=y=20,x*3)C、’a’%4D、’A’+32标准答案:B知识点解析:A选项中’a’即表示a为字符常量,再给’a’赋值1/2*(x=y=20,x*3),是不正确的。因此B选项正确。25、有以下程序:#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf("a=%d,b=%d\n",a,b);}程序的运行结果是()。A、a=2,b=2B、a=2,b=1C、a=1,b=1D、a=1,b=0标准答案:B知识点解析:case常量表达式只是起语句标号作用,并不是该处进行条件判断。在执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就从此case子句执行下去,不在进行判断,直到碰到break或函数结束为止。所以执行内层switch(y)时只执行了a++,此时a的值为1。然后执行外层case2语句的a++;b++;a为2,b为1。所以结果为B。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共40题,每题1.0分,共40分。)1、以下叙述中错误的是A、算法正确的程序最终一定会结束B、算法正确的程序可以有零个输入C、算法正确的程序可以有零个输出D、算法正确的程序对于相同的输入一定有相同的结果标准答案:C知识点解析:算法是指为解决某个特定问题而采取的确定且有限的步骤。一个算法应该具有以下5个特征:①有穷性。一.爪算法包含的操作步骤应该是有限的。也就是说,在执行若T个操作步骤之后,算法将结束,而且每一步都在合理的时间内完成。②确定性。算法中的每一条指令必须有确切的含义,不能有二义性,对于相同的输入必能得出相同的执行结果。③可行性。算法中指定的操作,都可以通过已经验证过可以实现的基本运算执行有限次后实现。④有零个或多个输入。在计算机上实现的算法是用来处理数据对象的,在大多数情况下这些对象需要通过输入来得到。⑤有一个或多个输出。算法的目的是为了求”解”,这些”解”只有通过输出才能得到。2、下面叙述中正确的是A、线性表是线性结构B、栈与队列是非线性结构C、线性链表是非线性结构D、二叉树是线性结构标准答案:A知识点解析:线性表是最简单的、最常用的一种线性结构。所谓线性链表指的是采用链式存储结构的线性表。栈和队列其实是一种特殊的线性表。树是一种简单的非线性结构,二叉树是树的一种。3、下列与队列结构有关联的是A、函数的递归调用B、数组元素的引用C、多重循环的执行D、先到先服务的作业调度标准答案:D知识点解析:队列中最先插入的元素将最先被删除,最后插入的元素将最后被删除。4、下列叙述中正确的是A、循环队列是队列的一种链式存储结构B、循环队列是队列的一种顺序存储结构C、循环队列是非线性结构D、循环队列是一种逻辑结构标准答案:B知识点解析:本题主要考查循环队列的概念.循环队列作为队列的一种也应该是线性结构。队列是一种逻辑结构,而循环队列是一种顺序存储结构的队列。5、阅读以下程序#includetma,in(){intcase:floatprintF;printf("请输入2个数:"):scanf("%d%f",&case,&printF);printf("%d%t5n",case,printF);}该程序在编译时产生错误,其出错原因是A、定义语句出错,printF能用作用户自定义标识符B、定义语句出错,case是关键字,不能用作用户自定义标识符C、定义语句无错,scanf不能作为输入函数使用D、定义语句无错,printf能输出case的值标准答案:B知识点解析:case是C语言中的一个关键字,小能用作用户标识符米使用,所以这段程序代码在编译时就会处错。6、在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是()。A、逻辑设计B、需求分析C、详细设计D、物理设计标准答案:B知识点解析:软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中,需求分析阶段常用的工具是数据流图和数据字典。7、下列叙述中错误的是()。A、C程序可以由多个程序文件组成B、一个C语言程序只能实现一种算法C、C程序可以由一个或多个函数组成D、一个C函数可以单独作为一个C程序文件存在标准答案:B知识点解析:在一个C语言程序中可以进行多种算法的实现,对算法的个数没有规定,所以B选项错误。8、数据库系统的数据独立性是指()。A、不会因为存储策略的变化而影响存储结构B、不会因为数据的变化而影响应用程序C、不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序D、不会因为某些存储结构的变化而影响其他的存储结构标准答案:C知识点解析:数据库系统的数据独立性,是指数据库中数据独立于应用程序且不依赖于应用程序,即数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据独立性一般分为物理独立性和逻辑独立性两级。9、数据模型的三个要素是()。A、外模式、概念模式、内模式B、实体完整性、参照完整性、用户自定义完整性C、数据增加、数据修改、数据查询D、数据结构、数据操作、数据约束标准答案:D知识点解析:数据模型是数据特征的抽象,所描述的内容有三个部分:数据结构、数据操作、数据约束。数据结构主要描述数据的类型、内容、性质以及数据间的联系等。数据操作主要描述在相应数据结构上的操作类型与操作方式。数据约束主要描述数据结构内数据间的语法、语义联系,它们之间的制约与依存关系,以及数据动态变化的规则,以保证数据的正确、有效与相容。10、数据流图中带有箭头的线段表示的是A、控制流B、事件驱动C、模块调用D、数据流标准答案:D知识点解析:数据流图是从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。其中带箭头的线段表示数据流,沿箭头方向传递数据的通道,一般在旁边标注数据流名。11、设有如下语句:typedefstructDate{intyear;intmonth;intday;}DATE;则以下叙述中错误的是()。A、DATE是用户说明的新结构体类型名B、structDate是用户定义的结构体类型C、DATE是用户定义的结构体变量D、struct是结构体类型的关键字标准答案:C知识点解析:该定义语句把结构体structDate命名为一个新的类型名“DATE”,DATE相当于“structDate”,是结构体类型名,选项C描述错误,答案选C。12、软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于A、定义阶段B、开发阶段C、维护阶段D、上述三个阶段标准答案:B知识点解析:本题考查软件生命周期的相关概念。通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。还可以将软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。13、有以下程序:#includemain(){ima,b;for(a=0;a<3;a++){seanf(“%d”,&b);switch(b){default:prinff(“%d”,++b);case1.:prinff(“%d”,++b);case2(“%deasepnnu”,++b);}}}执行时输入:123<回车>,则输出结果是()。A、233456B、234C、223444D、234344标准答案:A知识点解析:这是一个循环结构嵌套选择结构,按照外层循环,内层选择一步一步处理即可。本题重点注意,switch语句中并没有出现break语句,所以内层循环是不会跳出的。14、在黑盒测试方法中,设计测试用例的主要根据是A、程序内部逻辑B、程序外部功能C、程序数据结构D、稃序流程图标准答案:B知识点解析:黑盒测试法指的是根据程序的外部功能,把程序本身看成一个黑盒子,设计测试用例来验证程序外部功能的正确性。15、若有以下程序#includemain(){intb=10,a=-11;a%=b%=4;printf("%d%d\n",a,b);}则程序的输出结果是A、12B、-1-2C、-12D、1-2标准答案:C知识点解析:对于表达式a%=b%=4为复合的赋值运算,结合性自右至左,相当于先计算b.b%4,a=a%b;结果的符号和第一个操作数的符号相同,因此b为2,a的结果为.1。16、数据结构中,与所使用的计算机无关的是数据的()。A、存储结构B、物理结构C、逻辑结构D、线性结构标准答案:C知识点解析:数据的逻辑结构反映的是数据元素之间的逻辑关系,与使用的计算机无关。17、某系统结构图如下图所示,该系统结构图的最大扇出数是A、nB、1C、3D、4标准答案:A知识点解析:扇出指的是由一个模块直接调用的其它模块数。题干中“某系统”为一个模块,其扇出数目为n(n>3),功能1与功能n模块扇出数均为2,故选项A正确。18、下列程序段中完全正确的是()。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选项正确。19、有以下程序#includemain(){intk=5;while(--k)printf("%d",k-=3);printf("\n");}执行后的输出结果是A、1B、2C、4D、死循环标准答案:A知识点解析:--k先自减在使用,所以第一次判断条件即为while(4),条件为真执行打印k的值k=4-3,结果为1,第二次判断条件即为while(0),条件为假,结束循环,打印回车换行符。所以选择A选项。20、若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是A、形参只是形式上的存在,不占用具体存储单元B、函数的形参和实参分别占用不同的存储单元C、同名的实参和形参占同一存储单元D、函数的实参和其对应的形参共占同一存储单元标准答案:B知识点解析:在C语言中,函数的实参单元与形参单元在内存中分配不同的存储单元。在调用函数时,给形参分配临时存储单元,并将实参对应的值传递给形参,在被调用函数中对形参存储单元中的值进行运算,最后通过return语句把函数值返回调用函数。当调用结束后,形参单元被释放,实参单元仍保留并维持原值。21、下列关于C语言文件的叙述中正确的是()。A、当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失B、打开一个已存在的文件并进行写操作后,原有文件中的全部数据必定被覆盖C、在一个程序中对文件进行写操作后,必须先关闭该文件然后再打开才能读到第一个数据D、C语言中的文件是流式文件,因此只能顺序存取数据标准答案:A知识点解析:B选项中打开一个已存在的文件并进行写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。C选项中在一个程序中对文件进行写操作后,不是先关闭该文件然后再打开才能读到第一个数据,用fseek()函数进行重新定位即可。D选项中,C语言中的文件可以进行随机读写。22、以下选项中关于C语言常量的叙述错误的是A、经常被使用的变量可以定义成常量B、常量分为整型常量、实型常量、字符常量和字符串常量C、常量可分为数值型常量和非数值型常量D、所谓常量,是指在程序运行过程中,其值不能被改变的量标准答案:A知识点解析:C语言中,常量是指在程序运行过程中其值不能被改变的量,变量是指运行过程中其值可以改变的量,二者不能混淆,所以A选项错误。23、以下叙述中正确的是A、C程序书写格式严格,要求一行内只能写一个语句B、C程序书写格式自由,一个语句可以写在多行上C、C程序中的注释只能出现在程序的开始位置和语句的后面D、用C语言编写的程序只能放在一个程序文件中标准答案:B知识点解析:本题主要考查的是C语言结构中的源程序书写格式这个知识点,在C浯言中注释部分对程序的运行结果不产生任何影响,它可以出现在任意位置:C语言书写自由,一行内可以写多个语句,一个语句可以写在多行上;由于C语言编写的程序有很好的移植性,可以放在多个程序文件中。24、以下C语言用户标识符中,不合法的是A、_1B、AaBcC、a_bD、a--b标准答案:D知识点解析:本题考查用户标识符,C语言中,用户标识符只能由字母、下划线和数组组成,且必须以字母或者下划线开始。选项A)、B)和C)都是正确的,选项D)中的case是C语言关键字,不能作为用户标识符,是错误的。25、设有定义语句: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’’地址。26、以下叙述中正确的是A、语句inta[]={0};是不合法的,遗漏了数组的大小B、语句chara[2]={"A","B"};是合法的,定义了一个包含两个字符的数组C、语句inta[8]={0};是合法的D、语句chara[3];a="AB":是合法的,因为数组有三个字符空间的容量,可以保存两个字符标准答案:C知识点解析:当系统为所定义的数组在内存中开辟一串连续的存储单元时.这些存储单元中并没有确定的值,可以在定义语句中为所定义数组的各个元素赋初值。数组初始化赋值是指在数组定义时给数组元素赋予初值。初始化赋值的一般形式为:类型说明符数组名[常量表达式]={值,值,…,};。需要注意的是当所赋初值多于所定义数组的元素个数时,在编译时将给出出错信息,在指定初值时,第一个初值必定赋给下标为0的元素,然后按这些数值的排列顺序赋初值,只能给元素逐个赋值,不能给数组整体赋值。如果给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。27、关于typedef的叙述中错误的是()。A、用typedef可以说明一种新的类型名B、typedef说明的新类型名必须使用大写字母,否则会出编译错误C、可以用typedef说明的新类型名来定义变量D、typedef的作用是用一个新的标识符来代表已存在的类型名标准答案:B知识点解析:C语言规定typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原来类型名依然有效。为了便于识别,一般习惯将新的类型名用大写字母表示,但也可以是小写。28、有以下程序#incluclevoidfun(char*c,intd){*c=*c+1;d=d+1;printf("%c,%c,",*c,d);}main(){charb=’a’,a=’A’;fun(&b,a);printf("%c,%c\n",b,a);}程序运行后的输出结果是A、b,B,b,AB、b,B,B,AC、a,B,B,aD、a,B,a,B标准答案:A知识点解析:本题中fun函数的参数传递方式,形参c是传地址,形参d是传值,所以在主函数中,执行fun时,把变量b的地址传给了c,把a的值传递给了d,经过运算,输出的值为b,B。在主函数的输出语句中,输出变量b的值为b,变量a的值为A。29、在数据库中,数据模型包括数据结构、数据操作和A、查询B、数据类型C、关系运算D、数据约束标准答案:D知识点解析:在数据库系统中的数据模型有三个要素:数据结构、数据操作和数据的约束条件。其中数据的约束条件包括三种:实体完整性约束条件、参照完整性约束条件和用户定义的完整性约束条件。因此选项D正确。30、以下程序段中的变量已正确定义for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf("*");程序段的输出结果是A、********B、****C、**D、*标准答案:D知识点解析:本题考查循环语句,题中第二个(内层)for循环之后有一个分号,意思是每次循环中的操作为空,不执行任何操作。再循环结束后执行printf语句,即只打出一个*。31、下列叙述中正确的是A、C程序中所有函数之间都可以相互调用B、在C程序中main函数的位置是固定的C、在C程序的函数中不能定义另一个函数D、每个C程序文件中都必须要有一个main函数标准答案:C知识点解析:C程序中主函数不能被其他函数调用,所以A选项错误,main函数可以放在程序开始,也可以放在中间,也可以放在最后,位置不固定,但程序执行时必须从main函数开始,所以B选项错误,在C程序的函数中不能定义另一个函数,可以声明或调用另一个函数,所以C选项正确?每个C程序中必须包含一个main函数,但不一定是每个C程序文件中必须有,用户单独编写的某个函数也可以存储为一个C程序文件,所以D选项错误。32、以下与函数fseek(fp,OL,SEEK_SET)有相同作用的是A、feof(fp)B、ftell(fp)C、fgetc(fp)D、rewind(fp)标准答案:D知识点解析:本题主要考查文件系IO函数的使用,fseek函数用于设置文件指针的位置,feof函数用于判断是否已经到了文件结束,ftell函数返回文件指针的当前位置,fgetc从文件读取一个字符,rewind函数将文件指针重新指向文件开始。题目当中fseek(fp,OL,SEEK_SET)表示把文件指针移动到文件的开始位置0,和rcwind函数功能一致。33、以下叙述中正确的是A、打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖B、在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据C、C语言中的文件是流式文件,因此只能顺序存取数据D、当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失标准答案:D知识点解析:在C语言中,有两种对文件的存取方式;顺序存取和直接存取;如果以“a”的方式对一个已打开的文件进行写操作后,则原有文件中内容将保存,新的数据写在原有内容之后。如果以“a+”的方式为读和写而打开一个文件,则既可以对文件进行读,也可以对文件进行写,而且在读和写操作之间不必关闭文件,可以从头开始读。当对文件的读(写)操作完成之后,必须将它关闭。34、有以下程序#include<string.h>main(){charp[20]={’a’,’b’,’c’,’d’},q[]="abc",r[]="abcde";strcat(p,r);strcpy(p+strlen(q),q);printf("%d\n",strlen(p));}程序运行后的输出结果是A、9B、11C、6D、7标准答案:C知识点解析:字符串连接函数strcat(p,r)的功能是把字符数组p[]和r[]连接起来,此时字符数组p[]的有效字符长度为9,再执行strcpy(p+strlen(q),q)字符串复制函数,把字符数组q[]复制到字符数组p[]从p[3]开始到p[5]数组位置中,由于字符数组q[]中的内容为字符串“abc”复制时把字符串结束标志’\null’也复制到字符数组p[]中,这时字符函数strlen(p)返回字符数组p[]的有效字符长度为6。35、有以下程序#includevoidfun(char*p,intn){charb[6]="abcde";inti;for(i=0,p=b;i<n;i++)p[i]=b[i];}main(){chara[6]="ABCDE";fun(a,5);printf("%s\n",a);}程序运行后的输出结果是A、abcdeB、ABCDEC、edcbaD、EDCBA标准答案:B知识点解析:本题考查数组名作为函数参数,执行f函数时,传进去的a指针被重新指向了b,所以原本a数组的地址内容不变,所以输出结果为ABCDE,答案为B选项。36、若要求从键盘读入含有空格字符的字符串,应使用函数A、getc()B、gets()C、getchar()D、scanf()标准答案:B知识点解析:scanf()语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所以用scanf()函数不能输入空格;getchar()函数用于输入字符,其调用形式为:ch=getchar(),getchar()函数从终端读入一个字符作为函数值,把读入的一个字符赋给变量ch。在输入时,空格、回车符都将用于字符读入,而且只有在用户敲入Enter键时,读入才开始执行。gets()函数的调用形式为:gets(stradr),其中str_adr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。gcts()函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc()函数的调用形式为:ch=getc(pf)其中pf是文件指针。函数的功能是从pf指定的文件中读入一个字符,并把它作为函数值返回。37、有定义语句:intyear=2009,*p=&year;以下不能使变量year中的值增至2010的语句是A、(*p)++;B、++(*p);C、*p++;D、*p+=1;标准答案:C知识点解析:由于自加运算符++的运算级高于间接运算*的运算级,所以选项A)的表达式*p++不能使变量year中的值增至2010。38、下面关于“EOF”的叙述,正确的是A、EOF的值等于0B、文本文件和二进制文件都可以用EOF作为文件结束标志C、EOF是在库函数文件中定义的符号常量D、对于文本文件,fgetc函数读入最后一个字符时,返回值是EOF标准答案:C知识点解析:EOF是在stdio.h库函数文件中定义的符号常量,其值等于-1。EOF用作文件结束标志,在二进制或者文本文件内部有一个位置指针,用以指示文件内部的当前读写位置。使用fgetc函数,每读写一次,该指针均向后移动,39、对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为A、9B、10C、45D、90标准答案:C知识点解析:冒泡法是在扫描过程中逐次比较相邻两个元素的大小,最坏的情况是每次比较都要将相邻的两个元素互换,需要互换的次数为9+8+7+6+5+4+3+2+1=45,选C。40、若有定义语句:doublea,*p=&a;以下叙述中错误的是()。A、定义语句中的*号是一个间址运算符B、定义语句中的*号是一个说明符C、定义语句中的p只能存放double类型变量的地址D、定义语句中,*p=&a把变量a的地址作为初值赋给指针变量p标准答案:A知识点解析:在变量定义doublea,*p=&a;中,*号是一个指针运算符,而非间址运算符,所以A错误。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共25题,每题1.0分,共25分。)1、下面叙述中正确的是A、线性表是线性结构B、栈与队列是非线性结构C、线性链表是非线性结构D、二叉树是线性结构标准答案:A知识点解析:线性表是最简单的、最常用的一种线性结构。所谓线性链表指的是采用链式存储结构的线性表。栈和队列其实是一种特殊的线性表。树是一种简单的非线性结构,二叉树是树的一种。2、下列数据结构中,能够按照“先进后出”原则存取数据的是A、循环队列B、栈C、队列D、二叉树标准答案:B知识点解析:栈按照“先进后出”(FILO)或“后进先出”(LIFO)组织数据;队列是“先进先出”(FIFO)或“后进后出”(LILO)的线性表。3、下列各项中,对对象概念描述正确的是()。A、对象间的通信靠消息传递B、对象是名字和方法的封装体C、任何对象必须有继承性D、对象的多态性是指一个对象有多个操作标准答案:A知识点解析:对象之间进行通信的构造叫作消息,选项A正确。封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作,选项B错误。对象不一定必须有继承性,选项C错误。多态性是指同一个操作可以是不同对象的行为,选项D错误。4、以下选项中非法的C语言字符常量是A、’\b’B、’\007’C、’aa’D、’\xaa’标准答案:C知识点解析:一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来作为字符常量。5、若有以下定义,则对数组元素的正确引用是()。inta[5],*p=a;A、*&a[5]B、(*a)+2C、*p+4D、*(a+2)标准答案:D知识点解析:本题考查通过指针引用数组元素。选项A、C没有这种引用形式;选项B,(*a)+2与*a+2相同,表示第一个元素的值加2;选项D,*(a+2)引用数组的第3个元素。6、下面不属于软件设计阶段任务的是A、软件总体设计B、算法设计C、制定软件确认测试计划D、数据库设计标准答案:C知识点解析:软件设计阶段总体分为两部分:概要设计和详细设计,此阶段的主要任务就是将需求规格说明文档转换为软件设计文档,将需求阶段提出的问题,一一解释,形成详细设计文档,并根据功能要求,定制相应数据结构、各种流程图等,为下一步编码做准备。7、某二叉树中度为2的结点有10个,则该二叉树中有()个叶子结点。A、9B、10C、11D、12标准答案:C知识点解析:根据二叉树的性质3:对任何一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个。8、以下选项中与if(a=1)a:b;elsea++;语句功能不同的switch语句是A、switch(a=1){case0:a=b;break;case1:a++;}B、switch(a){case1:a=b;break;default:a++;)C、switch(a){default:a++;break;case1:a=b;}D、switch(a=1){case1:a=b;break;case0:a++;)标准答案:A知识点解析:jfelse语句的含义是,如果变量a的值等于1,则把变量b的值赋给变量a,否则,变量a的值加1。在本题的4个选项中,与其含义不同的是选项A,表示如果变量a的值等于1,则把变量a的值加1,否则,把变量b的值赋给变量a。9、有以下程序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。10、一个教师讲授多门课程,一门课程由多个教师讲授。则实体教师和课程间的联系是A、1:1联系B、1:m联系C、m:1联系D、m:n联系标准答案:D知识点解析:一个教师可讲授多门课程,一门课程可由多个教师讲授,则实体教师和课程的联系是多对多的联系。11、关于C语言的符号常量,以下叙述中正确的是A、符号常量的符号名是标识符,但必须大写B、符号常量在整个程序中其值都不能再被重新定义C、符号常量是指在程序中通过宏定义朋一个符号名来代表一个常量D、符号常量的符号名必须是常量标准答案:C知识点解析:在C语言程序中,用一个符号名来代表一个常量,称为符号常量。注意:这个符号名必须在程序中进行特别的“指定”,并符合标识符的命名规则。一般在程序中都是利用宏定义来定义符号常量的,在代码中可以利用undef来结束符号常量的定义,然后进行重新定义,符号常量的大小写并没有特别的规定,一般时候为了和变量区分利用大写。12、表达式:(int)((double)9/2)-9%2的值是A、0B、4C、3D、5标准答案:C知识点解析:这个表达式的计算过程为,首先求出9除以2的商等于4,再把其强制转化为实型数据为4.0,然后再强制转4,减去9对2求余数1,得到其结果等于3。13、若有以下程序#includemain(){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。14、设有定义语句intx[61={2,4,6,8,5,7),*p=x,i;要求依次输出x数组6个元素中的值不能完成此操作的语句是A、for(i=0;i<6;i++)printf("%2d",*(p++));B、for(i=0;i<6;i++)printf("%2d",*(p+i));C、for(i=0;i<6;i++)printf("%2d",*p++);D、for(i=0;i<6;i++)pfintf("%2d",(*p)++);标准答案:D知识点解析:指针p指向数组x,因此可以使用p来输出数组x的值。选项A)中,*(p++)表示先取出p指向的元素的值,然后p++指向下一个元素,满足要求;选项B)中*(p+i)每次i的值发生变化,(p+i)指向x数组的x[i]元素,因此*(p+i)是取出数组x的x[i]元素的值,满足要求;选项C)和选项A)相比,少了括号,由于*运算符的优先级比++要求,因此,因此*p++表示先取出p指向的元素的值,然后p再++指向下一个元素,满足要求;选项D)中(+p)++表示先取出p指向的元素的值,然后该值++,p没有增加,每次循环都*p取出的x[0]的值,不满足要求。15、下列选项中,能够满足“只要字符串s1等于字符串s2,则执行ST”要求的是A、if(s1==s2)ST;B、if(strcpy(s1,s2)==1)ST;C、if(strcmp(s2,s1)==0)ST;D、if(s1-s2==0)ST;标准答案:C知识点解析:在C语言中要对两个字符串的大小进行比较,就需要调用字符串比较函数strcmp(),如果这个函数的返回值等于0,说明两个字符串相等。16、若以下选项中变量全部为整型变量,且己正确定义并赋值,则语法正确的switch语句是A、switch(a+b){case1:case3:y=a+b;break;case0:case4:y=a-b;}B、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;}C、switch(a+9){casec1:y=a-b;casec2:y=a+b;}D、switcha*b{case10:x=a+b;default:y=a-b;}标准答案:B知识点解析:本题考查switch的使用。选项A)中的ca$e0和ca$e4没有break语句;选项B)正确;选项C)中的case后面不是常量,错误;选项D)中switch后面没有括号。17、若有定义语句:inta=3,b=2,c=1;以下选项中错误的赋值表达式是A、a=b=c+1;B、a=(b=4)=3;C、a=(b=4)+c;D、a=1+(b=c=4);标准答案:B知识点解析:本题主要考查赋值表达式,对于赋值表达式来说,赋值号“=”的左边一定为变量名,右边为一个C语言合法的表达式。18、有下列程序:#include#includetypedefstruct{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={"tQian",’f’,95.0,92.0),d;d=f(c);printf("%s,%c,%2.0f,%2.0f\n",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的各个成员的值。19、以下语句中存在语法错误的是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)为指针数组,对于指针变量可以保存常量字符串的地址。20、以下关于return语句的叙述中正确的是A、一个自定义函数中必须有一条return语句B、一个自定义函数中可以根据不同情况设置多条return语句C、定义成void类型的函数中可以有带返回值的return语句D、没有return语句的自定义函数在执行结束时不能返回到调用处标准答案:B知识点解析:return语句主要用于返回函数的值。在一个自定义函数中,可以根据不同的情况设置多条return语句返回函数的值。21、若有以下程序structstu{char*name,gender;intscore;};main(){structstua={NULL,’m’,290},b;a.name=(char*)malloc(10);strcpy(a.name,"Zhao");b=a;b.gender=’f’;b.score=350;strcpy(b.name,"Qian");printf("%s,%c,%d,",a.name,a.gender,a.score);printf("%s,%c,%d\n",b.A、Zhao,m,290,Qian,f,350B、Qian,f,350,Qian,f,350C、Zhao,m,290,Zhao,e350D、Qian,m,290,Qian,f,350标准答案:D知识点解析:主函数中定义结构体类型structstu,有三个成员,第一个成员为字符指针变量。主函数中为stu类型变量a赋值,首先为a.name成员分配存储空间,存入数据。b=a;语句执行完毕以后,a和b的各个成员值相同,需要注意的是b.name和a.name成员都保存了同一段内存的地址,因此当为变量b赋值的时候,同样更改了a的name成员,而其他成员由于有单独的存储空间而不会发生改变。22、下面选项中的程序段,没有编译错误的是A、char*sp,s[10];sp="Hello";B、char*sp,s[10];s="Hello";C、charstr1[10]="computer",str2[10];str2=str1;D、charmark[];mark="PROGRAM":标准答案:A知识点解析:选项B)中数组名为常量,不能赋值,选项C)字符数组之间无法完成赋值操作,选项D)和选项B)相同,无法对数组进行赋值。23、有以下程序#includemain(){inta=0,b=0;/*给a赋值a=10;b=20;给b赋值*/printf("a+b=%d\n",a+b);/*输出计算结果*/}程序运行后的输出结果是A、出错B、a+b=30C、a+b=10D、a+b=0标准答案:D知识点解析:注释语句可以在一行也可以在多行,用/*……*/或//表示,。它不参与程序的运行,所以a与b的值仍然为0,所以打印的结果为a+b=0。24、若有定义语句:char*s1="OK",*s2="ok";以下选项中,能够输出"OK"的语句是A、if(strcmp(s1,s2)!=0)puts(s2);B、if(strcmp(s1,s2)!=0)puts(s1);C、if(strcmp(s1,s2)==1)puts(s1);D、if(strcmp(s1,s2)==0)puts(s1);标准答案:B知识点解析:strcmp(s1,s2)是字符串比较函数,比较规则是两个字符串自左向右逐个字符相比(按照ASCII码值大小),以第一个不相同的字符的大小作为比较结果。因为’OK’<’ok’,所以strcmp(s1,s2)为负值,只有B选项正确。25、在线性表的

温馨提示

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

评论

0/150

提交评论