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

下载本文档

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

文档简介

国家二级C语言机试(选择题)模拟试卷12(共9套)(共270题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共25题,每题1.0分,共25分。)1、算法的空间复杂度是指A、算法在执行过程中所需要的计算机存储空间B、算法所处理的数据量C、算法程序中的语句或指令条数D、算法在执行过程中所需要的临时工作单元数标准答案:A知识点解析:算法的空间复杂度是指执行这个算法所需要的内存空间。这个内存空间包括算法程序所占的空间,输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。2、某带链的队列初始状态为front=rear=NULL。经过一系列正常的入队与退队操作后,front=10,rear=5。该队列中的元素个数为()。A、4B、5C、6D、不确定标准答案:D知识点解析:带链的队列使用了链表来表示队列,而链表中的元素存储在不连续的地址中,因此当front=10,rear=5时,不能确定队列中元素的个数。3、阅读以下程序#includemain(){intcase;floatprintF;printf("请输入2个数:");scanf("%d%f",&case,&printF);prin七f("%d%f\n",case,printF);}该程序在编译时产生错误,其出错原因是A、定义语句出错,printF不能用作用户自定义标识符B、定义语句出错,case是关键字,不能用作用户自定义标识符C、定义语句无错,scanf不能作为输入函数使用D、定义语句无错,printf不能输出case的值标准答案:B知识点解析:case是C语言中的一个关键字,不能用作用户标识符来使用,所以这段程序代码在编译时就会出错。4、有以下程序#include<stdio.h>main(){inta=3;printf(’’%d\n’’,(a+=a-=a*a));}程序运行后的输出结果是A、9B、0C、3D、-12标准答案:D知识点解析:对于表达式a+=a-=a*a相当于a=a.(a*a),然后计算a=a+a,a的初值为3,则表达式的值为-12。5、设有某函数的说明为:int*fune(inta[10],intn);则下列叙述中,正确的是()。A、形参a对应的实参只能是数组名B、说明中的a[10]写成a[]或*a效果完全一样C、func的函数体中不能对a进行移动指针(如a++)的操作D、只有指向10个整数内存单元的指针,才能作为实参传给a标准答案:B知识点解析:考查数组名作为函数参数。传递给形参的实参可以是数组名,还可以是指向该数组的指针变量,选项A错误;a[10]、a[]、*a做形参都是接受实参数组首地址,效果一样,选项B正确;数组名可以看作一个指针常量,对其进行自加自减运算相当于指针变量的自加自减,选项C错误;数组名作为函数参数时,只传递数组的首地址而不检查形参数组的长度,所以形参表中可以不给出形参数组的长度,形参数组和实参数组长度也可以不同,选项D错误。故答案选B。6、C语言中允许用外部说明来指定变量、函数和其他标识符的特征,这里所说的外部指的是()。A、冠以关键字externB、位置在函数体外部C、作用范围是全程的D、位置在函数的外部标准答案:D知识点解析:C语言中允许用位置在函数外部的说明来指定变量、函数和其他标识符的特征。7、有以下程序main(){intx=1,y=0;if(!x)y++;elseif(x==0)if(x)y+=2;elsey+=3;pfintf("%d\n",y);}程序运行后的输出结果是A、2B、0C、1D、3标准答案:B知识点解析:x=1,if和elseif的条件都不满足,故y值不改变输出。8、有两个关系R和T如下:则由关系R得到关系T的操作是A、选择B、投影C、交D、并标准答案:A知识点解析:由关系R和T所包含的元素可知,关系R经过选择操作就可以得到关系T。9、以下程序段的输出结果是()。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=30b=50c=10B、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。10、设有定义语句: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"地址。11、若有以下程序,则程序的输出结果是#includemain(){inta=0,b=0,c=0;c=(a-=++A),(a+=b,b+=4);printf("%d,%d,%d\n",a,b,c);}A、0,4,4B、1,4,1C、0,4,0D、1,4,4标准答案:C知识点解析:表达式c=(a-=++a),(a+=b,b+=4)相当于逗号表达式,首先计算c=(a-=++a),其中a-=++a)等价于a=a-(++a),得到a的值0,c的值为0,在计算(a+=b,b+=4)时,a和b的初值为0,计算以后,a为0,b为4。12、若有以下程序#includechar*a="you",b[]="welcome#you#to#China!";main(){inti,j=0;char*p;for(i=0;b[i]!=’\0’;i++){if(*a==b[i]){p=&b[i];for(j=0;a[j]!=’\0’;j++){if(a[j]!=*p)break;p++;}if(a[j]=’\0’)break;}}printf("%s\n",p);}则程序的输出结果是A、#you#to#China!B、me#you#to#China!C、#China!D、#to#China!标准答案:D知识点解析:程序中循环部分的主要功能是,在字符串b中寻找是否含有子串a,如果含有则退出,字符指针p指向该匹配子串后面的位置,利用printf函数输出则从该位置开始一直输出到字符串b的结尾。13、若有定义inta;floatb;doublec;程序运行时输入:345<回车>能把值3输入给变量a、4输入给变量b、5输入给变量c的语句是()。A、scanf("%d%f%lf",&a,&b,&c);B、scanf("%d%lf%lf",&a,&b,&c);C、scanf("%d%f%f",&a,&b,&c);D、scanf("%lf%lf%lf",&a,&b,&c);标准答案:A知识点解析:考查scanf的格式输入。scanf函数的一般形式为scanf("格式控制字符串",输入项1,输入项2,…),其中,"格式控制字符串"用于指定输入的格式,"%d"表示按照十进制整型输入,"%f"表示按照浮点型输入,"%lf"表示按照长精度浮点型输入,所以答案选A。14、以下关于typedef的叙述错误的是A、typedef只是将已存在的类型用一个新的名字来代表B、用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名C、用typedef可以增加新类型D、用typedef为类型说明一个新名,通常可以增加程序的可读性标准答案:C知识点解析:C语言允许用typedef说明一种新的类型名,其一般形式为:typedef类型名标识符;在此“类型名”必须是在此语句之前已有定义的类型标识符。“标识符”是一个用户定义标识符,用作新的类型名。Typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型.原来的类型名依然有效,这样可以增加程序的可读性。15、在关系表中,属性值必须是另一个表主键的有效值或空值,这样的属性是A、外键B、候选键C、主键D、主属性标准答案:A知识点解析:如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。为了保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。使两张表形成关联,外键只能引用外表中的列的值或使用空值。所以选项A正确。16、下列关系表达式中,结果为“假”的是A、(3<<4)==1B、(3+4)>6C、(3!=4)>2D、3<=4标准答案:C知识点解析:关系表达式和逻辑表达式的结果为非零或者0,其中0表示假,而非零表示真,由于3!=4的结果为1,而1>2的结果为假。17、有以下程序main(){inta=3;do{printf("%d,",a-=2);}while(!(--a));printf("\n");}程序运行后的输出结果是A、1,B、1,-2,C、3,0,D、1,0标准答案:B知识点解析:循环体执行两次。首先输出a=1,然后判断表达式!(--a),a为0,循环条件表达式值为1,执行第二次循环体,输出a=-2。判断循环条件表达式值为0,循环退出。18、有以下程序#include<stdio.h>voidmain(){chars[]="012xy\08s34f4w2";inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]>=’0’&&s[i]<=’9’)n++;printf("%d\n",n);}程序运行后的输出结果是A、0B、7C、3D、8标准答案:C知识点解析:在主函数中的for循环语句中,当s[i]的值不等于0~9之间的数字时,结束循环语句的执行。由字符数组s的初值可以得到for循环语句执行了三次,所以变量n的值等于3。19、有下列程序:#include<stdio.h>/*fun函数的功能是将a所指数组元素从大到小排序*/voidfun(int*a,intn){intt,i,j;for(i=0;i<n-1.j++)ford=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[i]=t;}}main(){intc[10]={1,2,3,4,5,6,7,8,9,0},i;fun(c+4,6);for(i=0;i<10;i++)printf("%d,",c[i]);printf("\n");}程序的运行结果是A、1.2,3,4,9,8,7,6,5,0,B、0.9,8,7,6,5,1,2,3,4,C、0.9,8,7,6,5,4,3,2,1,D、1,2,3,4,5,6,7,8,9,0,标准答案:A知识点解析:fun()函数的功能是对数组a[]的元素从大到小进行排序。所以在主函数执行fun(c+4,6)语句时,将从数组c的第5个元素开始的后6个元素进行从大到小排序。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。20、有以下程序#includemain(){intc[6]={10,20,30,40,50,60},*p,*s;p=c;s=&c[5];printf("%d\n",s-p);}程序运行后的输出结果是A、50B、6C、5D、60标准答案:C知识点解析:主函数中指针变量p指向数组c,s保存了数组最后一个元素的地址,那么s中为两个地址之间的元素差5。21、有以下程序#include<stdio.h>main()voidfun(char*c,intd){charb=’a’,a=’A’;{*c=*c+1;d=d+1;fun(&b,a);printf("%c,%c\n",b,a);printf("%c,%c,",*c,d);}}程序运行后的输出结果是A、b,B,b,AB、b,B,B,AC、a,B,B,aD、a,B,a,B标准答案:A知识点解析:本题中fun函数的参数传递方式,形参c是传地址,形参d是传值,所以在主函数中,执行胁时,把变量b的地址传给了c,把a的值传递给了d,经过运算,输出的值为b.B。在主函数的输出语句中,输出变量b的值为b,变量a的值为A。22、有以下程序voidfun(intx,inty,int*c,int*d){*c=x+y;*d=x-y;}main(){inta=4,b=3,c=0,d=0;fun(a,b,&c,&d);printf("%d%d\n",c,d);}程序的输出结果是A、43B、34C、71D、00标准答案:C知识点解析:函数fun有四个形参,功能是利用参数的地址传递来计算前两个参数的和与差。主函数中调用fun函数c计算4+3,d计算4.3值为1。23、有下列程序:main(){inta[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,k,t;for(i=0;i<3;i++)for(k=i+l;k<4;k++)if(a[i][i]<a[k][k]){t=a[i][i];a[i][i]=a[k][k];a[k][k]=t;}for(i=0;i<4;i++)printf("%d,",a[0][i]);}程序运行后的输出结果是A、6,2,1,1,B、1,1,2,6,C、2,3,4,6,D、6,4,3,2,标准答案:D知识点解析:利用二重for循环对二维数组a[4][4]的主对角线上的元素{1,6,2,1}实现按列从大到小排序,所以数组a[4][4]的值变为{{6,4,3,2,},{8,2,5,7},{3,7,1,5},{4,8,6,1}},最后输出数组a[4][4]第一行上的元素,所以输出结果为6,4,3,2。24、以下叙述中错误的是A、函数的返回值类型不能是结构体类型,只能是简单类型B、只要类型相同,结构体变量之间可以整体赋值C、可以通过指针变量来访问结构体变量的任何成员D、函数可以返回指向结构体变量的指针标准答案:A知识点解析:函数的返回值类型可以是结构体类型。结构体变量之间可以相互复制。25、以下关于typedef的叙述错误的是A、typedef只是将已存在的类型用一个新的名字来代表B、用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名C、用typedef可以增加新类型D、用typedef为类型说明一个新名,通常可以增加程序的可读性标准答案:C知识点解析:C语言允许用typedef说明一种新的类型名,其一般形式为:typedef类型名标识符;在此“类型名”必须是在此语句之前已有定义的类型标识符。“标识符”是一个用户定义标识符,用作新的类型名。Typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原来的类型名依然有效,这样可以增加程序的可读性。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共40题,每题1.0分,共40分。)1、以下叙述中正确的是A、每个后缀为.c的C语言源程序都应该包含一个main函数B、在C语言程序中,main函数必须放在其他函数的最前面C、每个后缀为.c的C语言源程序都可以单独进行编译D、在C语言程序中,只有main函数才可单独进行编译标准答案:C知识点解析:每一个C语言的文件或函数都可以单独编译,但只有main函数的才可以执行。2、下列叙述中正确的是A、在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B、在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C、在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D、上述三种说法都不对标准答案:C知识点解析:在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈跟队列不同,元素只能在栈顶压入或弹出,栈底指针不变,栈中元素随栈顶指针的变化而动态变化,遵循后进先出的规则。3、下面对软件特点描述正确的是()。A、软件具有明显的制作过程B、软件在使用中存在磨损、老化问题C、软件复制不涉及知识产权D、软件是一种逻辑实体,具有抽象性标准答案:D知识点解析:软件具有以下特点:软件是一种逻辑实体,而不是物理实体,具有抽象性;软件的生产与硬件不同,它没有明显的制作过程;软件在运行、使用期间不存在磨损、老化问题;软件的开发、运行对硬件和环境具有依赖性;软件复杂性高,成本昂贵;软件开发涉及诸多的社会因素(包括软件知识产权及法律等问题)。4、已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是A、c=(’A’+c)%26-’a’B、c=C+32C、c=C-’A’+’a’D、c=(C-’A’)%26+’a’标准答案:A知识点解析:由题意可知,小写字符a和大写字符A的ASCⅡ代码相差为32,所以选项C能将大写字符C的ASCII代码转换为小写字符c的ASCII代码;选项D和C)左侧的表达式都是大写字符C与大写字符A的差与’a’的ASCII代码的和就是小写字符c的ASCII代码。而选项A中应该是加上’a’,而不是减去’a’。5、结构化程序设计中,下面对goto语句使用描述正确的是()。A、禁止使用goto语句B、使用goto语句程序效率高C、应避免滥用goto语句D、以上说法都不对标准答案:C知识点解析:结构化程序设计中,应尽量避免使用GOTO语句,但不是禁止使用,所以选择C。6、面向对象方法中,继承是指A、一组对象所具有的相似性质B、一个对象具有另一个对象的性质C、各对象之间的共同性质D、类之间共享属性和操作的机制标准答案:D知识点解析:面向对象方法中,继承是使用已有的类定义作为基础建立新类的定义技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。7、下列定义变量的语句中错误的是()。A、int_int;B、doubleint;C、charFor;D、floatUS$;标准答案:D知识点解析:C语言规定,变量命名必须符合标识符的命名规则。D选项中包含了非法字符“$”,所以错误。标识符由字母、数字或下划线组成,且第一个字符必须是大小写英文字母或者下划线,而不能是数字。大写字符与小写字符被认为是两个不同的字符,所以For不是关键字for。8、某二叉树共有399个结点,其中有199个度为2的结点,则该二叉树中的叶子结点数为A、不存在这样的二叉树B、200C、198D、199标准答案:B知识点解析:在二叉树中,设叶子结点个数为n0,度为2的结点个数为n2,叶子结点的个数计算方法n0=n2+1=199+1=200,所以选项B正确。9、若a、b、c、d都是int型变量且都已经正确赋初值,则以下不正确的赋值语句是()。A、a+d:B、a++;C、a=b=c=d=100;D、a=(b=3)+(d=5);标准答案:A知识点解析:C语言规定,赋值号的右边可以是一个赋值表达式,因此选项C、选项D正确;在选项B中,a++是一个自加1的表达式,a被重新赋值,因此它是一个合法的赋值表达式;选项A中,a+d是一个算术表达式,虽然最后有一个分号,但这个表达式中没有赋值操作,因此它不是一条赋值语句。10、若有以下程序段:intr=8;printf(”%d\n”,r>>1);输出结果是()。A、16B、8C、4D、2标准答案:C知识点解析:本题考查位运算,属于基础知识。题目中的整型变量8,二进制表达为00001000,右移一位为00000100,即4,C选项正确。11、以下叙述中错误的是()。A、gets函数用于从终端读入字符串B、getchar函数用于从磁盘文件读人字符C、fputs函数用于把字符串输出到文件D、fwrite函数用于以二进制形式输出数据到文件标准答案:B知识点解析:本题考查字符处理函数和文件做操函数,属于基础知识。其中B选项的getehar函数用于从终端读入字符。12、在数据管理技术发展的三个阶段中,数据共享最好的是A、人工管理阶段B、文件系统阶段C、数据库系统阶段D、三个阶段相同标准答案:C知识点解析:数据管理技术的发展经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。人工管理阶段无共享,冗余度大;文件管理阶段共享性差,冗余度大;数据库系统管理阶段共享性大,冗余度小。13、若变量已正确定义,则语句s=32;s^=32;printf("%d",s);的输出结果是()。A、-1B、0C、1D、32标准答案:B知识点解析:本题考查逻辑异或运算。异或运算只有在两个比较的位不同时其结果为1,否则结果为0,题目中两个值相同,所以结果为0。14、子函数的功能是通过键盘输入给x所指的整型数组所有元素赋值。在下划线处应填写的是()。#include#defineN5voidfun(intx[N]){intm;for(m=N一1;m>=0;m一一)scanf(’’%d’’,__);}A、x+mB、x[++m]C、x+(m++)D、x[m+1]标准答案:A知识点解析:本题用for循环给数组赋值,与上题类似,选项B和选项D不是地址,错误。选项A和选项C是地址,但是选项C的m值会++自增,然后for循环里面又m一一自减,会导致死循环,不满足要求,选项A正确。15、数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是A、DB包含DBS和DBMSB、DBMS包含DB和DBSC、DBS包含DB和DBMSD、没有任何关系标准答案:C知识点解析:数据库系统(DatabaseSystem简称DBS)由下列几个部分组成:数据库(DB)、数据库管理系统(DBMS)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。这五个部分构成了一个以数据库为核心的完整的运行实体,称为数据库系统。其中:DB(DataBase)即数据库,是统一管理的相关数据的集合:DBMS(DatabaseManagementSystem)即数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法。16、以下选项中不合法的标识符是A、FORB、&aC、printD、_00标准答案:B知识点解析:合法的标识符要满足组成字符为a~z以及A~Z,数字字符0到9和下划线,其中数字不开头,不能是关键字。选项B)中,&不属于组成字符,是错误的。17、下面不属于黑盒测试方法的是A、边界值分析法B、基本路径测试C、等价类划分法D、错误推测法标准答案:B知识点解析:常用的黑盒测试方法和技术有:等价类划分法、边界值分析法、错误推测法和因果图等。白盒测试是把程序看成装在一只透明的白盒里,测试者完全了解程序的结构和处理过程。它根据程序的内部逻辑来设计测试用例,检查程序中的逻辑通路是否都按预定的要求正确地工作。白盒测试的主要技术有逻辑覆盖测试、基本路径测试等,故选择B选项。18、有以下程序intfun(intn){ifln=1)return1;elseretum(n+fun(n-1));}main(){intx;scanf(’’%d’’,&x);x=fun(x);printf(’’%d\n’’,x);}执行程序时,给变量x输入10,程序的输出结果是A、54B、65C、45D、55标准答案:D知识点解析:在C语言中函数可以递归调用,即直接或间接地自己调用自己。本题在函数intfun(intn)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量x时,递归调用的过程为:fun(10)=10+fun(9)=10+9+fun(8)=10+9++8+fun(7)=10+9++8+7+fun(6)=10+9++8+7+6+fun(6)=10+9++8+7+6+5+fun(4)=10+9++8+7+6+5+4+fun(3)=10+9++8+7+6+5+4+3+fun(2)=10+9++8+7+6+5+4+3+2+fun(1)=10+9++8+7+6+5+4+3+2+1=5519、关于变量的定义和说明的叙述中正确的是()。A、对于变量而言,“定义”和“说明”这两个词实际上是同一个意思B、在复合语句中不能定义变量C、全局变量的存储类别可以是静态类D、函数的形式参数不属于局部变量标准答案:C知识点解析:C语言的关键字static说明符说明全局变量时,此变量可称作静态全局变量。静态全局变量只限于本编译单位使用,不能被其他编译单位所引用。在一个函数内部定义的变量(包括形参)是局部变量,它只在本函数范围内有效。不同函数中可以使用相同名字的局部变量,它们代表不同的对象,互不影响。在函数内部复合语句中也可以定义变量,这些变量都是局部变量,只在本复合语句中有效。20、学院的每名教师只能属于一个系,则实体系和实体教师间的联系是A、一对多B、多对多C、多对一D、一对一标准答案:A知识点解析:一对多关系是关系数据库中两个表之问的一种关系,该关系中第一个表中的单个行可以与第二个表中的一个或多个行相关,但第二个表中的一个行只可以与第一个表中的一个行相关。本题中一个是体系有多个老师,但老师只能属于一个系,因此是一对多关系。21、已定义以下函数intfun(int*p){return*p;}fun函数返回值是A、一个整数B、不确定的值C、形参p中存放的值D、形参p的地址值标准答案:A知识点解析:返回值为指针变量指向的数据,该数据已被定义为整型。因此A选项正确。22、有以下程序:#include<stdio.h>#definePT3.5:#defineS(x)PT*x*x;main(){inta=1,b=2;prinff("%4.1f\n",S(a+b));}程序的运行结果是()。A、7.5B、31.5C、程序有错无输出结果D、14.0标准答案:C知识点解析:宏定义不是C语句,末尾不需要有分号,语句printf("%4.1f\n",s(a+b));展开后为printf("%4.1f\n",3.5;*a+b*a+b;);,所以程序会出现语法错误。23、23.以下程序的输出结果是()。main(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(’’%d,%d,%d,%d\n’’,m,n,*P,*q);}A、2,1,2,1B、1,2,2,1C、1,2,1,2D、2,1,1,2标准答案:B知识点解析:题目中在主函数定义了3个整数指针变量p,q,r,并且使p指向m,q指向n,再执行“r=p;p=q;q=r;”这三条语句,使q指向m,p指向n,再输出变量“m,n,*p,*q”时,它们值分别为1,2,2,1。24、有以下程序#include#defineSUB(a)(a)-(a)main(){inta=2,b=3,c=5,d;d=SUB(a+b)*c;printf("%d\n",d);}程序运行后的输出结果是A、-12B、0C、10D、-20标准答案:D知识点解析:本题主要考查的是宏替换,在程序中执行d=sub(a+b)*c这条语句时,首先要进行宏替换,依据宏SUB(a)的定义可知,上面这条语句替换为d=(a+b)-(a+b)*c,因为乘法的优先级比减法的优先级高,所以先进行乘法运算,即d=5-5*5=.20,.25、以下程序的输出结果是()。#includemain()#defineN4{intx[][N]={{1,2,3),{4),{5,6,7,8),{9,10}},voidfun(inta[][N],intb[])y[N],i;{inti;fun(x,y);for(i=0;i<N;i++)b[i]=a[i][i];for(i=0;i<N;i++)printf(’’%d,’’,y[i]);}printf(’’\n’’);}A、3,4,8,10,B、1,4,5,9,C、1,0,7,0,D、1,2,3,4,标准答案:C知识点解析:题目中函数fun(inta[][N],intb[])的功能是把矩阵a[N][N]主对角线上的元素赋给一维数组b[]。在主函数中由x[][N]的初始化可知,其主对角线上的元素是1,0,7,0。所以当执行完函数fun(x,v)后,一维数组y[]中的元素值为1,0,7,0,选项为C。26、以下能正确输出字符a的语句是()。A、printf("%s","a");B、printf("%s",’a’);C、printf("%c","a");D、printf("%d",’a’);标准答案:A知识点解析:输出函数printf()的一般形式为"printf("格式控制字符串",输出项1,输出项2,…)",输出项的形式要和格式控制字符串中的格式控制符保持一致,"%s"为输出字符串,"%c"为输出单个字符,"%d"为以十进制形式输出带符号整数,答案选A。27、在进行数据库逻辑设计时,可将E-R图中的属性表示为关系模式的A、属性B、键C、关系D、域标准答案:A知识点解析:在进行数据库逻辑设计时,可将E-R图中的属性表示为关系模式的属性。28、在数据库中,数据模型包括数据结构、数据操作和A、查询B、数据类型C、关系运算D、数据约束标准答案:D知识点解析:在数据库系统中的数据模型有三个要素:数据结构、数据操作和数据的约束条件。其中数据的约束条件包括三种:实体完整性约束条件、参照完整性约束条件和用户定义的完整性约束条件。因此选项D正确。29、若变量均已正确定义并赋值,以下合法的C语言赋值语句是A、x=n%2.5;B、x+n-i;C、x=5=4+1;D、x=y==5;标准答案:D知识点解析:选项D的含义是把关系表达式y=5的值赋给变量x。所以这是一条正确的赋值语句。因为赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量。因为求余运算符“%”两侧的运算对象都应当是整型数据。30、有以下程序#include<stdio.h>main(){inty=10;while(y--);printf("y=%d\n",y);}程序执行后的输出结果是A、y=0B、y=-1C、y=1D、while构成无限循环标准答案:B知识点解析:在while循环中每次变量y的值减1,直到其值等于0时退出循环,这时y的再减1变为-1。31、有以下程序main(){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、1,1,2,0C、编译有错D、0,1,2,0标准答案:D知识点解析:if语句的格式为:if(表达式)语句1else语句2if和else是C语言的关键字。"语句1"称为if子句,"语句2"称为else子句,这些子句只允许为一条语句,若需要多条语句时,则应该使用复合语句。因此题目if(a=1)b=1;c=2;elsed=3;if分支有两条语句,没构成复合语句。32、以下叙述中正确的是A、函数的返回值不能是结构体类型B、函数的返回值不能是结构体指针类型C、在调用函数时,可以将结构体变量作为实参传给函数D、结构体数组不能作为参数传给函数标准答案:C知识点解析:和普通变量相似,结构体变量也可以作为函数实参或者形参,函数的返回值也可以是结构体类型。33、若有以下程序#includeint*f(int*s,int*t){int*k;if(*s<*t){k=s;s=t;t=k;}returns;}main(){inti=3,j=5,*p=&i,*=&j,*r;r=f(p,q);printf("%d,%d,%d,%d,%d\n",i,j,*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。34、有以下程序main(){chara[5][10]={"one","two","three","four","five"};inti,j;chart;for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(a[i][0]>a[j][0]){t=a[i][0];a[i][0]=a[j][0];a[j][0]=t;}puts(a[1]);}程序运行后的输出结果是A、fwoB、owoC、twoD、fix标准答案:A知识点解析:这个程序的执行过程是当i=0时,j=1,a[0][0]=o<a[1][0]=t;不置换;当i=1时,j=2,a[1][0]=t=a[2][0]=t;不置换;当i=2时,j=3,a[2][0]=t>a[3][0]=f;置换a[2][0]=f,a[3][0]=t;此时,a[2][0]=f,a[1][0]=t,再置换a[2][0]=t,a[1][0]=f,;当i=3时,j=4,a[3][0]=f=a43][0]=f;不置换;所以a[1]的结果为fwo。35、若有以下程序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,f,350标准答案:C知识点解析:主函数中结构体变量定义同时赋初值。执行b=a;语句后,b的数据和a的数据相同,调用函数f(b.name),形参指针p接收实参b.name的地址,此时p和b.name指向同一个存储空间,流程转到f执行,p指向的存储空间仔放字符串"Qian",流程结束返同主函数。主函数中变量b的其他成员仔放数据。凶此a的数据{"Zhao",’m’,290},b的数据为{"Qian",’f’,350}。注意本题结构体STU类型变量a和b中的name成员为数组,不是指针,它具有自己的存储空间。36、下面描述中不属于数据库系统特点的是A、数据共享B、数据完整性C、数据冗余度高D、数据独立性高标准答案:C知识点解析:数据库系统的特点为高共享、低冗余、独立性高、具有完整性等,C错误。37、以下叙述中正确的是A、函数的形式参数不属于局部变量B、对于变量而言,"定义"和"说明"这两个词实际上是同一个意思C、在复合语句中不能定义变量D、全局变量的存储类别可以是静态类标准答案:D知识点解析:声明变量不分配空间,定义变量要分配空间,所以B选项错误。符合语句中可以定义变量,所以C选项错误。函数的形参属于局部变量,所以A选项错误。38、设有定义:charp[]={’1’,’2’,’3’},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是()。A、sizeof(p)B、sizeof(char)C、sizeof(*q)D、sizeof(p[0])标准答案:A知识点解析:根据题目中的定义可以知道sizeof(p),计算的是数组p中所有元素所占用的字节数,而不是char型数据所占字节数。39、有以下程序#includemain(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf("%d\n",m);}程序的运行结果是A、0B、1C、2D、3标准答案:B知识点解析:第一次执行外循环i的值为1,满足条件,判断第一次内循环,j的值为3,不满足条件,跳出内循环,第二次执行外循环i的值为2,同理也不满足内循环条件,跳出内循环,第三次执行外循环i的值为3,此时进入内循环判断条件时,条件成立,执行m=m%j,m的值为1,跳出内循环,跳出外循环打印m的值。40、设有定义:doublea,b,c;若要求通过输入分别给a、b、c输入1、2、3,输入形式如下(注:此处□代表一个空格)□□1.0□□2.0□□3.0<回车>则能进行正确输入的语句是A、scanf("%lf%lf%lf",a,b,c);B、scanf("%lf%lf%lf",&a,&b,&c);C、scanf("%f%f%f",&a,&b,&c);D、scanf("%5.1lf%5.1lf%5.1lf",&a,&b,&c);标准答案:B知识点解析:scanf函数的一般形式为scanf(格式控制,变量1地址,变量2地址,…),其中,格式字符串要与数据类型保持一致,所以格式字符串中应为%lf,后面应该为变量地址,所以需要加上符号"&",所以选择B。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共25题,每题1.0分,共25分。)1、下列叙述中正确的是A、算法就是程序B、设计算法时只需要考虑数据结构的设计C、设计算法时只需要考虑结果的可靠性D、以上三种说法都不对标准答案:D知识点解析:所谓算法是指解题方案的准确而完整的描述。是一组严谨地定义运算顺序的规则,并且每一个规则都是订效的,且是明确的,此顺序将在有限的次数下终止。算法不等于程序,也不等于计算方法。设汁算法时不仪要考虑对数据对象的运算和操作,还要考虑算法的控制结构。2、下列关于线性链表的叙述中正确的是()。A、各数据节点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B、各数据节点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续C、进行插入与删除时,不需要移动表中的元素D、以上说法均不正确标准答案:C知识点解析:一般来说,在线性表的链式存储结构中,各数据节点的存储序号是不连续的,并且各节点在存储空间中的位置关系与逻辑关系也不一致。线性链表中数据的插入和删除都不需要移动表中的元素,只需改变节点的指针域即可。3、下述程序的输出结果是()。#include<stdio.h>voidmain(){inta[5]={1,2,3,4,5};int*p=a,**q=&p;printf(’’%d’’,*(p++));printf(’’%d’’,**q);}A、22B、11C、34D、12标准答案:D知识点解析:。程序首先定义了一个指向一维数组a的指针p,一个指向指针变量p的指针变量q,输出*(p+)是先输出*p即a[0]的值,再将指针p指向数组的下一个元素a[1],输出**q是输出指针p所指向单元的内容,即a[1]的值。4、若有以下程序段:structst{intn;int*m;};inta=2,b=3,c=5;structsts[3]=({101,&a},{102,&c},{103,&b}};main(){structst*p;p=s;…}则以下表达式中值为5的是()。A、(p++)->mB、*(p++)->mC、(*p)-mD、*(H_p)->m标准答案:D知识点解析:本题考查如何通过指针引用数组元素。首先定义了一个结构体,然后定义了一个结构体变量s[3],并赋了初值。在主程序中,定义了一个指向结构体变量s的指针p,要使表达式的值为5,就应该引用s[1].m的值,使指针p指向s[1],++p可以实现将p指针加1,指向s[1]。5、设有表示学生选课的3张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为()。A、课号,成绩B、学号,成绩C、学号,课号D、学号,姓名,成绩标准答案:C知识点解析:学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C选项。6、有以下程序#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));}程序运行后的输出结果是()。A、12B、15C、16D、20标准答案:A知识点解析:此题考查的是编译预处理命令以及自加运算符。“F(a++,b++)”先取a和b的值,参加运算,再把a和b的值分别加1,所以“F(a++,b++)=F(3,4)=3*4=12”。7、下面描述中,不属于软件危机表现的是A、软件过程不规范B、软件开发生产率低C、软件质量难以控制D、软件成本不断提高标准答案:A知识点解析:软件危机主要表现在以下6个方面:①软件需求的增长得不到满足。②软件开发成本和进度无法控制。③软件质量难以保证。④软件不可维护或维护程度非常低。⑤软件的成本不断提高。⑥软件开发生产率的提高赶不上硬件的发展和应用需求增长。8、占构化程序设计的基本原则不包括A、多元性B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:结构化程序设计方法的主要原则可以概括为:自顶向下,逐步求精,模块化和限制使用GOTO语句,其中不包括多态性。9、以下程序段完全正确的是A、intk,*p=&k;scanf("%d",p):B、int*p;scanf("%d",p):C、int*p;scanf("%d",&p);D、intk,*p;*p=&k;scantf("%d",p);标准答案:A知识点解析:选项B)没有对指针进行初始化,无效指针。选项C)错在没有对指针进行初始化,无效指针,并且在scanf("%d",&p)中无需再进行取地址操作。选项D),语句*p=&k;的左端*p是指针所指内存空间的值,&k是地址,应为p=&k。10、下列关于数据库设计的叙述中,正确的是A、在需求分析阶段建立数据字典B、在概念设计阶段建立数据字典C、在逻辑设计阶段建立数据字典D、在物理设计阶段建立数据字典标准答案:A知识点解析:数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。11、合法的C语言数值常量是()。A、21.0Xa334.5e0B、018.5e-3-0xfC、.1344el.50abcD、0x8A10,0003.e5标准答案:A知识点解析:C语言常量数制中的八进制数其开头必须是数字“0”,其数字包括0~7,而在选项B中,018是错误的。浮点数据的指数形式表示常量中,C语言规定字母e或E之前必须要有数字,且e或E之后的指数必须为整,而选项C中4e1.5是错误的。在选项D中,整型数据10,000的表示形式是错误的。12、以下数组定义中错误的是A、intx[][3]={0};B、intx[2][3]={{1,2},{3,4},{5,6}};C、intx[][3]={{1,2,3},{4,5,6}};D、intx[2][3]={1,2,3,4,5,6};标准答案:B知识点解析:二维数组的初始化有以下几种形式:①分行进行初始化;②不分行的初始化;③部分数组元素初始化;④省略第一维的定义,不省略第一维的定义。在选项A)中赋值号左边定义了一个3行2列的二维数组,而右边用2行3列的数字进行赋初值。所以出现了边界的越界溢出而出错。13、下列选项中,不能用作标识符的是A、_1234B、_1_2C、int_2_D、2_int_标准答案:D知识点解析:C语言中标识符必须以字母或者下划线开始,选项D)中是以数字开始的不能作为标识符。14、若有以下程序段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。15、以下叙述中错误的是()。A、C程序在运行过程中所有计算都以二进制方式进行B、C程序在运行过程中所有计算都以十进制方式进行C、所有C程序都需要编译链接无误后才能运行D、C程序中字符变量存放的是字符的ASCII值标准答案:B知识点解析:C程序在运行过程中的所有计算都以二进制方式进行,所以B选项错误。16、设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为A、15B、16C、20D、0或35标准答案:D知识点解析:在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。在循环队列中进行出队、入队操作时,头尾指针仍要加1,朝前移动。只不过当头尾指针指向向量上界时,其加1操作的结果是指向向量的下界0。由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时,头尾指针均相等。答案为D选项。17、现有表示患者和医疗的关系如下:P(P#,Pn,Pg,By),其中P#为患者编号,Pn为患者姓名,Pg为性别,By为出生日期,Tr(P#,D#,Date,Rt),其中D#为医生编号,Date为就诊日期,Rt为诊断结果。检索在1号医生处就诊的病人姓名的表达式是A、πpn(πp#(σD#=(Tr))P)B、πp#(σD#=(Tr)C、πpn(P)D、πpn(TrP)标准答案:A知识点解析:检索在1号医生处就诊的病人姓名的表达式,首先对Tr(P#,D#,Date,Rt)关系在以就诊日期D#=1为条件作选择运算,得到在1号出诊的医生信息,然后再与患者P(P#,Pn,Pg,By)关系作自然连接运算,对运算结果在患者编号列作投影运算,再在患者姓名列作一次投影运算,得到在1号医生处就诊的病人姓名。所以选项A正确。18、若有定义:inta,b;通过语句scanf("%d;%d",&a,&b);能把整数3赋给变量a,5赋给变量b的输入数据是A、3,5B、35C、3;5D、35标准答案:C知识点解析:在采用scanf这个函数输入数据时,要严格遵守其输入的规则定义。本题此函数定义的规则是,在两个整数之间加分号输入。19、以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是A、if((a>b)‖(b>c))k=1;elsek=0;B、if(a<=b)k=0;elseif(b<=c)k=1;C、if((a>b)&&(b>c))k=1;elsek=0;D、iffa>b)k=1;elseif(b>c)k=1;elsek=0;标准答案:C知识点解析:题干中的表达式的功能是当a>b并且b>c时,变量k的值等于1,其余情况下,变量k的值都是等于0。20、设有如下函数定义intfun(intk){if(k<1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是A、2B、4C、3D、5标准答案:C知识点解析:这道题目考查了函数的递归调用,当执行调用语句n=fun(3)时,返回n=fun(2)+1,再执行fun(2),返回n=fun(1)+1+1,而fun(1)等于1,所以最后n的值等于3。而函数fun总共被调用了3次。即fun(3),fun(2),fun(1)。21、下列选项中,能够满足“只要字符串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,说明两个字符串相等。22、若有定义语句: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的第10个元素位于第二行的第四个位置,即a[1][3]。23、下面属于黑盒测试方法的是A、语句覆盖B、逻辑覆盖C、边界值分析D、路径覆盖标准答案:C知识点解析:黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。在使用黑盒测试法时,手头只需要有程序功能说明就可以了。黑盒测试法分等价类划分法、边界值分析法和错误推测法,答案为C。而A、B、D均为白盒测试方法。24、若有以下程序段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。25、以下选项中,值为1的表达式是A、1-’0’B、1-’\0’C、’1’-0D、’\0’-’0’标准答案:B知识点解析:\0,空值,其ASCII码值为0,所以B选项的值为1。字符0的ASCII码值为048,所以A,C,D的值均不为1。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共25题,每题1.0分,共25分。)1、下列关于二叉树的叙述中,正确的是()。A、叶子节点总是比度为2的节点少一个B、叶子节点总是比度为2的节点多一个C、叶子节点数是度为2的节点数的两倍D、度为2的节点数是度为1的节点数的两倍标准答案:B知识点解析:由二叉树的性质可以知道,在二叉树中叶子节点总是比度为2的节点多一个。2、设非空二叉树的所有子树中,其左子树上的节点值均小于根节点值,而右子树上的节点值均不小于根-节点值,则称该二叉树为排序二叉树。对排序二叉树的遍历结果为有序序列的是()。A、前序序列B、中序序列C、后序序列D、前序序列或后序序列标准答案:B知识点解析:中序遍历的次序是先遍历左子树,再遍历根节点,最后遍历右子树。而在排序二叉树中,左子树节点值<根节点值≤右子树节点值,要使对排序二叉树的遍历结果为有序序列,只能采用中序遍历。3、以下叙述错误的是()。A、C语言区分大小写B、C程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需要随时修改C、整数和实数都能用C语言准确无误地表示出来D、在C程序中,正整数可以用十进制、八进制和十六进制的形式来表示标准答案:C知识点解析:本题涉及C语言最基本的3个概念:①C语言是区分大小写的,q和Q是两个不同的变量;②变量的实质就是在内存中占据一定的存储单元,存储单元里存放的是该变量的值,变量的值可以根据需要进行修改;③整数在允许的范围内可以准确的表示出来,但不可能表示无限度的实数。正整数可用二进制、十进制、八进制和十六进制表示。4、有以下程序#include<stdio.h>voidmain(){inta=1,b=0;printf*(’’%d,’’,b=(a++)+(a++));printf(’’%d\n’’,a+b);}程序运行后的输出结果是()。A、4,6B、2,5C、3,5D、2,6标准答案:B知识点解析:在主函数中定义了两个整型变量a和b,并把它们的初值分别设置为1和0;在第二条语句中,首先计算b=a+a,然后a自增两次,因此第二句结束时,b=2,a=3,然后第三句,a+b=5。5、以下程序段给数组所有元素输入数据()。main(){intt[10],j=0;while(j<10)scanf("%d",);}A、&t[j+1];B、t+(j++);C、&t[++j];D、t+j;标准答案:B知识点解析:本题利用while循环给数组t的所有元素赋值,横线处应该填写数组元素的地址。选项A)能给t[1]赋值;选项D)只能给t[0]赋值;选项C)可以给下标为1~10的数组元素赋值,但没给a[0]赋值,还使元素的下标越界,因此都不正确。只有选项B)是正确的,在什(j++)中,a代表数组的首地址,当j为0时,输入项是t[0]的地址,第二次循环时,输入项是t[1]的地址,依次类推,直到最后一项t[9]的地址,j为10时退出循环。6、有以下程序#includemain(){inta=3;printf("%d\n",(a+=a-=a*a));)程序运行后的输出结果是A、9B、0C、3D、-12标准答案:D知识点解析:对于表达式a+=a-=a*a梢当于a=a-(a*a),然后计算a=a+a,a的初值为3,则表达式的值为-12。7、下列不属于软件工程3个要素的是,()。A、工具B、过程C、方法D、环境标准答案:D知识点解析:软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。8、设有定义:intk=0;,以下选项的4个表达式中与其他3个表达式的值不相同的是()。A、++kB、k+=1C、k++D、k+1标准答案:C知识点解析:++k,先使得k的值自增1后再使用,k++是先取得k的值再将k的值自增1,所以C选项中表达式的值为0,而其他3个表达式的值均为1,所以选择C选项。9、表达式3.6—5/2+1.2+5%2的值是()。A、1.8B、2.8C、3.8D、3.3标准答案:C知识点解析:表达式的计算过程为:3.6—5/2+1.2+5%2=3.6—2+1.2+1=3.8。此题要注意整数相除会丢掉小数位,5/2的结果是2,而不2.5,因为除法运算符两边的数值类型均为整型,故运算结果的数值类型也被认定为整型。10、下面不属于结构化程序设计原则的是A、模块化B、自顶向下C、可继承性D、逐步求精标准答案:C知识点解析:结构化程序设计(structuredprogramming)是进行以模块功能和处理过程设计为主的详细设计的基本原则。结构化程序设计是过程式程序设计的一个子集,它对写入的程序使用逻辑结构,使得理解和修改更有效更容易。结构化程序设计原则是:自项向下、逐步求精、模块化和结构化编码。11、若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是()。A、a[p-a]B、*(&a[i])C、p[i]D、a[10]标准答案:D知识点解析:此题考查对一维数组的引用。对于已定义的数组a[M],数组元素的正确引用必须满足下标小于M且为正整数。选项D)中下标值出现溢出。12、有以下程序#includeintflintx,inty){return((y-x)*x);}main()finta=3,b=4,c=5,d;d=f(f(a,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。13、有以下程序:#include<stdio.h>intf(intx,inty){return((y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf(’’%d\n’’,d);}程序的运行结果是()。A、7B、10C、8D、9标准答案:D知识点解析:调用f(a,b)函数返回3,调用f(a,c)函数返回6,所以外层调用f(f(a,1)),f(a,c));即调用f(3,6)函数返回9。14、C语言主要是借助以下哪种手段来实现程序模块化A、定义常量和外部变量B、使用丰富的数据类型C、使用三种基本结构语句D、定义函数标准答案:D知识点解析:C语言用函数实现软件的模块化设计。15、下面描述中错误的是()。A、系统总体结构图支持软件系统的详细设计B、软件设计是将软件需求转换为软件表示的过程C、数据结构与数据库设计是软件设计的任务之一D、PAD图是软件详细设计的表示工具标准答案:A知识点解析:详细设计的任务是为软件结构图中而非总体结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节,所以A)错误。16、数字字符0的ASCII值为48,若有以下程序,程序运行后的输出结果是main(){chara=’1’,b=’2’;printf("%c,",b++);printf("%d\n",b-a);}A、3,2B、50,2C、2,2D、2,50标准答案:C知识点解析:本题主要考查ASCII码和自加运算。第一个printf语句中,是以字符形式输出b++的值,++放在变量的后面是先使用然后自增,因此第一个primf输出值是2,然后b的值变成’3’。在第二个printf语句中,b的值为’3’,a的值为’1’,所以b-a的值为2。17、在16位编译系统上,若有定义“inta[]={10,20,30},*p=a;”,当执行“p++;”后,下列说法错误的是A、P向高地址移了一个字节B、P向高地址移了一个存储单元C、P向高地址移了两个字节D、P与a+1等价标准答案:B知识点解析:本题考查数组和数组指针。a是一个整型数组,p指针指向a数组,即p指向a数组的首元素的地址,因此p++之后,p往高地址移动,指向首元素后面一个元素的地址。18、有以下程序voidfun(intn,int*s){intf;if(n==1)*s=n+1;else{fun(n-1,&f);}s=f;}}main(){intx=0;fun(4,&x);printf("%d\n",x);}程序运行后的输出结果是A、1B、3C、4D、2标准答案:D知识点解析:函数fun为递归调用函数,如果n的值为1,那么后面形参指向的空间存放n+1,否则继续计算fun(n-1)的值。调用分析过程:fun(4,&x)-→fun(3,&x)-→fun(2,&x)-→fun(1,&x)在回归的过程中,对于x内的数据并没有改动。19、有以下程序#includemain(){intk=4,m=1,p;fun(inta,intb){intstaticm=0,i=2;p=fun(k,m);i=i+m+1;printf("%d,",p);m=i+a+b;p=fun(k,m);returnm;}printf("%d\n",p);}程序运行后的输出结果是A、8,17B、7,16C、8,8D、7,17标准答案:A知识点解析:本题考查了静态变量以及局部变量的同名问题。主函数中调用fun函数两次,第一次调用fun(4,1),形参a和b接收以后,i值为3,m的值为8,调用结束返回8存放到p中并且输出p的值为8,除了静态变量m和i,变量a,b撤销。第二次调用fun(4,1),接收实参值以后,i为3+8+1,而m为12+4+1,即输出函数值17。20、下列选项中,能正确定义数组的语句是A、intnum[];B、intN=2008;intnum[N];C、intnum[0..2008];D、#defineN2008inthum[N];标准答案:D知识点解析:在定义一维数组时,数组的下标应该是一个确定的整数值。要注意的是在定义二维数组时,其第一维下标可以省略,但第二维下标不能省略。21、设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为A、’\0’B、0C、NULLD、非0值标准答案:D知识点解析:ANSIC提供的feof函数的功能是判断fp所指的文件的位置是否已达到文件尾,如果达到文件尾,则feof函数的值为1,否则为0,表不文件尚末结束。22、一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()。A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:因为一间宿舍可以住多个学生即多个学生住在一个宿舍中,但一个学生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系。23、假定已建立以下链表结构,且指针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正确。24、在软件开发中,需求分析阶段产生的主要文档是A、软件集成测试计划B、软件详细设计说明书C、用户手册D、软件需求规格说明书标准答案:D知识点解析:需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面。所以选择D。25、有以下定义和语句:structworkers{intnum;charname[20];charc;struct{intday;intmonth;intyear;}s;};structworkersw,*pw;pw=&w;能给w中year成员赋1980的语句是()。A、pw->year=1980;B、w.year=1980;C、w.s.year=1980;D、*pw.year=1980;标准答案:C知识点解析:本题考查结构体变量的引用。题目中定义了一个结构体,结构体中的成员又是一个结构体,w为结构体workers的变量。如果给内层结构体成员赋值,先要得到内层结构体变量,即“w.s”。若要给year赋值,表示为“w.s.year”即可。故本题答案为C选项。国家二级C语言机试(选择题)模拟试卷第5套一、选择题(本题共25题,每题1.0分,共25分。)1、算法的有穷性是指A、算法程序的运行时间是有限的B、算法程序所处理的数据量是有限的C、算法程序的长度是有限的D、算法只能被有限的用户使用标准答案:A知识点解析:算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。2、C语言源程序名的后缀是A、.exeB、.objC、.cD、.cp标准答案:C知识点解析:由C语言构成的指令序列称为C源程序,源程序文件的后缀为“.c”。源程序经过c编译程序编译生成后缀为“.obi”的

温馨提示

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

评论

0/150

提交评论