版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级(C语言)机试模拟试卷11(共9套)(共383题)国家二级(C语言)机试模拟试卷第1套一、选择题(本题共39题,每题1.0分,共39分。)1、有以下程序:#include<stdio.h>voidfun(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n—1—i];a[n一1一i]=t;}}main(){intk[10]={1,2,3,4,5,6,7,8,9,10},i;fun(k,5);for(i=2;i<8;i++)printf("%d",k[i]);printf("\n");}程序运行的结果是()。A、3456787B、876543C、1098765D、321678标准答案:D知识点解析:由于数组名本身是一个地址,所以在用数组名作为实参传递时,对应的形参相当于一个指针变量,在函数中可以通过指针变量来引用数组元素,从而改变元素的值。本题中函数fun的作用是将数组A的前n个元素进行逆转,fun(k,5)的结果是数组k的前五个元素1、2、3、4、5变为5、4、3、2、1。逆转后,输出数组中第3个至第8个元素。2、有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为()。A、并B、自然连接C、笛卡尔积D、交标准答案:D知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以B错误。笛卡尔积是用R集合中元素为第一元素,s集合中元素为第二元素构成的有序对,所以C错误。根据关系T可以很明显地看出是从关系R与关系s中取得相同的关系组所以取得是交运算,选择D。3、以下选项中与if(a=1)a++;elsea=b;语句功能不同的语句是()。A、switch(a){case0:a=b;break;default:a++;}B、switch(a==1){case0:a++;default:a=b;}C、switch(a){default:a=b;break;casel:a++;}D、a=(a=1)?(a++);b标准答案:B知识点解析:ifelse语句的含义是,如果变量a的值等于1,变量a的值加1,否则,则把变量b的值赋给变量a。在本题的4个选项中,与其含义不同的是选项B,因为没有break语句,当a=1的时候,会顺序执行两条语句,最终结果是将b的值赋给a。4、下列有关数据库的描述,正确的是()。A、数据库设计是指设计数据库管理系统B、数据库技术的根本目标是要解决数据共享的问题C、数据库是一个独立的系统,不需要操作系统的支持D、数据库系统中,数据的物理结构必须与逻辑结构一致标准答案:B知识点解析:数据库设计的目的实质上是设计出满足实际应用需求的实际关系模型。数据库技术的主要目的是有效地管理和存取大量的数据资源,包括:提高数据的共享性,使多个用户能够同时访问数据库中的数据;减小数据的冗余,以提高数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开发和维护代价。5、有以下函数定义:intfun(doublea,doubleb){returna*b;}若以下选项中所用变量都已正确定义并赋值,错误的函数调用是()。A、if(fun(x,y)){……}B、z=fun(fun(x,y),fun(x,y));C、Z=fun(fun(x,y)x,y);D、fun(x,y);标准答案:C知识点解析:本题考查函数调用时的参数传递。选项C)中第一个参数的表达式不正确,因此不能得到正确的结果。6、有以下程序:#inc1udeintfun(intx,inty){if(x!=y)return(y);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));}程序运行后的输出结果是()。A、3B、6C、8D、12标准答案:B知识点解析:fun(b,c)即fun(5,6),5!—6,所以返回6;fun(2*a,6)即fun(8,6),8!—6,所以返回6。7、以下程序的输出结果是()。#include<stdio.h>main(){inta[3][3]={0,1,2,0,1,2,0,1,2},i,j,s=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)s+=a[i][a][j][j];printf(’’%d\n’’,s);}A、3B、4C、1D、9标准答案:B知识点解析:当外层循环为i时,内层循环j只能取j=i,所以s+=a[i]a[j]],其实就是s+=a[i][a[i][i]],当i=0时,s=s+a[0][a[0][0]]=s+a[0][0]=1,当i=1时s=s+a[1][a[1][1]]=s+a[1][1]=1+l=2,当i=2时,s=s+a[2][a[2][2]]=s+a[2][2]=2+2=4。8、有以下程序#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf(’’%dha’’,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”。9、有两个关系R、S如下:由关系R通过运算得到关系S,则所使用的运算为()。A、选择B、投影C、插入D、连接标准答案:B知识点解析:投影运算是指对于关系内的域指定可引入新的运算。本题中S是在原有关系R的内部进行的,是由R中原有的那些域的列所组成的关系。所以选择B。10、在C语言程序中,以下说法正确的是()。A、函数的定义和函数的调用均不可以嵌套B、函数的定义不可嵌套,但函数的调用可以嵌套C、函数的定义可以嵌套,但函数的调用不可以嵌套D、函数的定义和函数的调用均可以嵌套标准答案:B知识点解析:本题考查函数调用的基本概念。冈为函数的结果是一个未知量,而函数定义时不能使用未知量,所以函数定义不可以嵌套,但是函数调用可以嵌套。11、关于地址和指针,以下说法正确的是()。A、通过强制类型转换可以将一种类型的指针变量赋值给另一种类型的指针变量B、可以取一个常数的地址赋值给同类型的指针变量C、可以取一个表达式的地址赋值给同类型的指针变量D、可以取一个指针变量的地址赋值给基类型相同的指针变量标准答案:A知识点解析:常数的地址存储在内存的常量区,常量区存储的都是常量,值都是不可修改的,所以直接取常量的地址赋给指针变量没有任何意义,C语言也不允许这样做,编译会出错,B项错误;表达式的值存储在临时变量中,内存中存在专门用来存储临时变量的区域,对这块地址进行操作也是没有意义的,C语言不允许这样做,编译会出错,C项错误;可以取一个指针变量的地址,但是指针变量的地址属于指针,只能赋值给指针类型的指针变量,D项错误。12、有以下程序:#include<stdio.h>main(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序执行后的输出结果是()。A、20B、25C、45D、36标准答案:B知识点解析:统计1~9九个数中的奇数和,此题考察指向数组的指针。C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个元素。程序运行的结果是1+3+5+7+9=25。13、算法的时间复杂度是指()。A、算法的长度B、执行算法所需要的时间C、算法中的指令条数D、算法执行过程中所需要的基本运算次数标准答案:D知识点解析:算法的时间复杂度,是指执行算法所需要的工作量,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。14、下面结构体的定义语句中,错误的是()。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)。15、有以下程序:#includemain(){inta=5,b=1,t;t=(a<<2)|b;printf("%d\n",t);}程序运行后的输出结果是()。A、21B、11C、6D、1标准答案:A知识点解析:5的二进制是101,计算5<<2,即将101左移2位后为10100,然后和00001进行逐位或运算等于10101,其十进制为21。16、下列字符数组初始化语句中,不正确的是()。A、charc[]=’goodmorning’;B、charc[20]="goodmorning";C、charc[]={’a’,’b’,’c’,’d’};D、charc[]={"goodmorning");标准答案:A知识点解析:本题考查两个概念。①用单引号括起来的一个字符常量只能存放一个字符;②C语言中没有字符串变量,只能用字符数组来存储字符串。选项A)中一个单引号内存放了若干个字符,是错误的;选项B)和选项D)中将一个字符串赋值给一个字符数组是允许的。17、以下选项中,不合法的C语言用户标识符是()。A、a_bB、AaBcC、a--bD、_1标准答案:C知识点解析:C讲言规定,变艟命名必须符合标示符的命名规则,C选项中包含了非法字符“-”,所以错误。标识符由字母、数字或下划线组成,且第一个字符必须是大小写英文字母或者下划线,而不能是数字。18、下列叙述中正确的是()。A、循环队列是队列的一种链式存储结构B、循环队列是队列的一种顺序存储结构C、循环队列是非线性结构D、循环队列是一种逻辑结构标准答案:B知识点解析:在实际应用中,队列的顺序存储结构一般采用循环队列的形式。19、以下叙述中正确的是()。A、用C语言编写的程序只能放在一个程序文件中B、C程序书写格式严格,要求一行内只能写一个语句C、C程序中的注释只能出现在程序的开始位置和语句的后面D、C程序书写格式自由,一个语句可以写在多行上标准答案:D知识点解析:C语言编写的程序可以放置于多个程序文件中,所以A错误。C程序中的一行可以有多条语句,所以B错误。C语言中的注释语句可以与原语句放在一行也可以不放在一行,所以C错误。20、软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是()。A、学生成绩管理系统B、C语言编译程序C、UNIX操作系统D、数据库管理系统标准答案:A知识点解析:软件按功能可以分为:应用软件、系统软件、支撑软件。操作系统、编译程序、汇编程序、网络软件、数据库管理系统都属于系统软件。所以B)、C)、D)都是系统软件,只有A)是应用软件。21、有以下程序:#inelude<stdio.h>intfun(inta,intB){if(b==0)returna;elsereturn(fun(--a,--b));}main(){printf("%d\n",fun(4,2));}程序运行后的输出结果是()。A、1B、2C、3D、4标准答案:B知识点解析:本题重点考察函数的递归调用;题目中给出的fun()函数直接调用了自身,所以是一个递归函数。其功能是:当参数b为0时,返回参数a的值,否则返回fun(--a,--b)的值。从这里可以看出,当b不断递减时,a也不断递减,直到b为0时返回a的值。那么a递减的总值就是b原来的值。所以整个递归函数的作用就是返回a-b的值。因此B选项正确。22、以下不合法的字符常量是A、’\\’B、’\"’C、’\018’D、’\xcc’标准答案:C知识点解析:转义字符中,八进制的表示形式为\ddd,但是八进制中不能包含数字8,所以C选项不合法。23、有以下程序#include<stdio.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;}printf("%d,%d\n",a,b);}程序运行后的输出结果是A、9,18B、8,11C、7,11D、10,14标准答案:D知识点解析:第一次循环a的值为1,满足条件,执行b+=a,与a+=2,则b的值变为3,a的值变为3,执行a++,a的值为4,满足条件进入第二次循环,执行完循环体后b的值为7,a的值为6,执行a++,a的值为7,满足条件进入第三次循环,执行完循环体后b的值为14,a的值为9,执行a++,a的值变为10,所以选择D选项。24、在面向对象方法中,不属于"对象"基本特点的是()。A、一致性B、分类性C、多态性D、标识唯一性标准答案:A知识点解析:对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。所以选择A)。25、有表示公司和职员及工作的三张表,职员可在多家公司兼职。其中公司C(公司号,公司名,地址,注册资本,法人代表,员工数),职员S(职员号,姓名,性别,年龄,学历),工作W(公司号,职员号,工资),则表W的键(码)为A、公司号,职员号B、职员号,工资C、职员号D、公司号,职员号,工资标准答案:A知识点解析:由于职员可以再多加公司兼职,表W的键(码)应为公司关系和职员关系的主码,即公司号和职员号。26、下列关系表达式中,结果为"假"的是A、3<=4B、(3<4)==1C、(3+4)>6D、(3!=4)>2标准答案:D知识点解析:B选项中,关系表达式(3<4)==1即1==1,结果为真;C选项中,(3+4)>6即7>6,结果为真;A选项中,3<=4结果为真。D选项中,(3!=4)>2即1>2,结果为假。因此D选项正确。27、有以下程序#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},k;fp=fopen("data.dat","w+");fprintf(fp,"%d\n",a[0]);for(i=1;i<6;i++){fseek(fp,0L,0);fscanf(fp,"%d",&k);fseek(fp,0L,0);fprintf(fp,"%d\n",a[i]+k);}rewind(fp);fscanf(fp,"%d",&k);fclose(fp);printf("%d\n",k);}程序的运行结果是A、21B、6C、123456D、11标准答案:A知识点解析:fopen函数以一定方式打开指定文件,返回一个指向文件的文件指针,如果不能实现打开指定文件的操作,则返回一个空指针NULL。fscanf函数从文本文件中按格式输入。fprintf函数按照格式向文本文件中输出数据。文件定位函数fseek,将指针由文件开头0、当前位置1、末尾2移动指定字节。rewind函数功能使文件的位置指针返回到文件头。程序执行过程为:以读/写方式建立一个新的文本文件data.dat,将1写入文件;执行for循环,将文件指针移到文件开头,将文件第一个数值1赋给k,再将指针移动到开头,向文件内输入a[i]+k=3。for循环实现将a数组中元素累加,结果21存放在文件中。调用rewind将文件指针移动到开头,调用fscanf函数从文件中读出数值赋予k=21,调用fclose函数关闭文件,打印k值,A选项正确。28、有以下程序#include<stdio.h>inta=2;intf(){staticintn;intm;m=n=0;n++;a++;m++;returnn+m+a;}main(){intk;for(k=0;k<3;k++)printf("%d,",f());printf("\n");}程序的运行结果是A、5,6,7,B、5,7,9,C、5,8,11,D、5,5,5,标准答案:A知识点解析:static变量又称为静态变量,编译时,将其分配在内存的静态存储区中,在整个程序运行期间都不释放这些存储单元,即使退出函数,下次再进入该函数时,静态局部变量仍使用原来的存储单元,值是上一次函数调用结束时的值。若定义时未赋初值,在编译时,系统自动赋初值为0;若定义时赋初值,则仅在编译时赋初值一次,程序运行后不再给变量赋初值。程序执行过程为:k=0,a=2,n=0,m=0;n=1,a=3,m=1,返回5;k=1,a=3,n=0,m=0;n=1,a=4,m=1,返回6;k=2,a=4,n=0,m=0;n=1,a=5,m=1,返回7;k=3退出循环。A选项正确。29、以下程序拟读取一个学生结构体中的人名,查找其年龄并输出:#include#include#includestructstu{charname[10];intage;};structstuteam[6]={’’zhangli’’,18,’’wangtao’’,20,’’limei’’,19,’’zhaodong’’,18,,’’liuxiu’’,19},*P;main(){inti,flag=0;p=(structstu*)malloc(sizeof(structstu));gets(&p->name);for(i=0;i<6;i++)if((strcmp(p->name,team[i].name)==0)){pfintf(’’%d\n’’,team[i].age);flag=1;}if(flag==0)printf(’’Nofind!\n’’);}程序有语法错误,出错的是()。A、pfintf(’’%d\n’’,team[i].age)B、p=(structstu*)malloc(sizeof(structstu))C、if((strcmp(p->name,team[i].name)==0))D、gets(&p->name);标准答案:D知识点解析:gets的参数应该是成员变量name数组的首地址,而&p一>name是首先获取数组name的首地址,然后再对首地址取地址符,所以这是错误的,正确参数应该是:gets(p一>name)。30、若有以下定义和语句structst{intn;structst*next;};structsta[3]={5,&a[0],6,&a[1],7,&a[2]},*p;p=&a[0];则值为6的表达式是(提示:运算符->的优先级高于++)A、(*p).n++B、p++->nC、p->n++D、(++p)->n标准答案:D知识点解析:定义指向结构体变量的指针p,并将结构体数组首地址赋给p。(++p)->n,p指针自加一指向数组第二个元素,其成员n=6,D选项正确。p++->n,p指向结构体数组第一个元素,其成员n=5。p->n++,p指向结构体数组第一个元素,其成员n=5,由于++是后缀,先取值,所以表达式为5,之后再自加一。(*p).n++,*p为结构体数组第一个元素,其成员n=5,先取值,表达式为5。31、下列选项中不属于软件生命周期开发阶段任务的是()。A、软件测试B、概要设计C、软件维护D、详细设计标准答案:C知识点解析:软件生命周期分为软件定义、软件开发及软件运行维护三个阶段,其中开发阶段包括概要设计、详细设计、实现和测试。32、关于程序中的注释,以下叙述正确的是A、注释的内容必须放在一对/*和*/之间B、注释必须置于所说明的语句前或语句后C、注释中间可以嵌套另一个注释D、注释内容错误会导致编译出错标准答案:A知识点解析:程序中,注释可以出现在程序的任何位置,B选项错误;注释中间不能嵌套另一个注释,C选项错误;注释内容不影响程序编译,D选项错误,答案为A选项。33、存储在计算机内有结构的数据集合是A、数据库B、数据库系统C、数据库管理系统D、数据结构标准答案:A知识点解析:数据库是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库系统是由数据库及其管理软件组成的系统,是应用软件。数据库管理系统是数据库系统的核心,它位于用户与操作系统之间,属于系统软件。数据结构是计算机存储、组织数据的方式。故本题选A选项34、以下程序拟实现计算sum=1+1/2+1/3+…+1/50。#include<stdio.h>main(){inti;doublesum;sum=1.0;i=1;do{i++;sum+=1/i;}while(i<50);printf("sum=%lf\n",sum);}程序运行后,不能得到正确结果,出现问题的语句是A、sum+=1/i;B、while(i<50);C、sum=1.0;D、i++;标准答案:A知识点解析:选项A,sum+=1/i;i为整型,因此1/i是整型类型,当1/i有小数时,会被截断。因此1/i结果始终为0,导致结果出错。,应该改为sum+=1.0/i。因此答案为A选项35、数据库系统的数据独立性是指A、不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序B、不会因为数据的变化而影响应用程序C、不会因为存储策略的变化而影响存储结构D、不会因为某些存储结构的变化而影响其他的存储结构标准答案:A知识点解析:数据库系统的数据独立性,是指数据库中数据独立于应用程序且不依赖于应用程序,即数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。故选A选项。36、有以下程序#include<stdio.h>main(){intm,n;scanf("%d%d",&m,&n);while(m!=n){while(m>n){m=m-n;}while(n>m){n=n-m;}}printf("%d\n",m);}该程序的功能是A、计算m和n的最小公倍数B、计算m和n的最大公约数C、计算m和n的差值D、找出m和n中的较大值标准答案:B知识点解析:题目使用更相减损术求最大公约数,其思想:1、任意给定两个正整数,判断它们是否都是偶数。若是,则用2约简,若不是则执行第二步。第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。则第一步中约掉的若干个2与第二步中等数的乘积就是所求的最大公约数。因此。故答案为B选项37、有以下程序#include<stdio.h>#include<string.h>typedefstructstu{charname[10];chargender;intscore;}STU;voidf(charname[10],chargender,intscore){strcpy(name,"Sun");gender=’m’;score=370;}main(){STUb={"Zhao",’m’,290},a={"Qian",’f’,350};b=a;printf("%s,%c,%d,",,b.gender,b.score);f(,b.gender,b.score);printf("%s,%c,%d\n",,b.gender,b.score);}程序运行后的输出结果是A、Qian,f,350,Sun,f,350B、Qian,f,350,Qian,f,350C、Qian,f,350,Sun,m,370D、Zhao,m,290,Sun,m,370标准答案:A知识点解析:C语言函数参数传递大致分为:1、值传递过程中,被调函数的形参作为被调函数的局部变量处理,即在内存的堆栈中开辟空间以存放由主调函数放进来的实参的值,从而成为了实参的一个拷贝。值传递的特点是被调函数对形参的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。2、地址传递过程中,被调函数的形参虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。结构体中name是数组,做实参传递,会退化为指针,因此调用f(),发生修改,其他的成员,传递的是拷贝,不会被修改。因此输出Sun,f,350。故答案为A选项。38、下列序列中不满足堆条件的是A、(98,95,93,96,89,85,76,64,55,49)B、(98,95,93,94,89,85,76,64,55,49)C、(98,95,93,94,89,90,76,64,55,49)D、(98,95,93,94,89,90,76,80,55,49)标准答案:A知识点解析:若有n个元素的序列,将元素按顺序组成一棵完全二叉树,当且仅当满足下列条件时称为堆:大根堆,所有结点的值大于或等于其左右子结点的值;小根堆,所有结点的值小于或等于其左右子结点的值。B、C、D选项属于大根堆,A选项由于98>95,判断属于大根堆,但95<96,不满足条件,不是堆,故选择A选项39、若有定义:inta;floatb;doublec;,程序运行时输入:l23<回车>,能把1输入给变量a、把2输入给变量b、把3输入给变量c的输入语句是()。A、scanf("%d%f%1f",&a,&b,&c);B、scanf("%d%f%lf",&a,&b,&c);C、scanf("%d%If%If",&a,&b,&c);D、scanf("%d%f%f",&a,&b,&c);标准答案:A知识点解析:在scanf()函数中,a变量为整数用%({格式字符串,a变量为单精度数用%f格式字符串,a变量为双精度数用%1f格式字符串,只有A选项正确。二、程序填空题(本题共1题,每题1.0分,共1分。)40、给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。例如,有10个正数:4630324061745154826,平均值为:30.500000移动后的输出为:3061715264632404548请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include<stdlib.h>#include<stidio.h>#defineN10doublefun(double*x){inti,j;doubleav,y[N];av=0;/**********found**********/for(i=0;i<N;i++)av+=___1___;for(i=j=0;i<N;i++)if(x[i]<aV){/**********found**********/y[j]=x[i];x[i]=-1;___2___;}2=0;while(i<N){if(x[i]!=-1)y[j++]=x[i];/**********found**********/___3___;}for(i=0;i<N;i++)x[i]=y[i];Eeturnav;}main(){inti;doublex[N];for(i=0;i<N;i++){x[i]=rand()%50;printf("%4.0f",x[i]);}printf("\n");printf("\nTheaverageis:%f\n",fun(x));printf("\nTheresult:\n",fun(x));for(i=0;i<N;i++)printf("%5.0f",x[i]);printf("\n");}标准答案:(1)x[i]/N(2)j++或j=j+1(3)i++或i=i+1知识点解析:本题中函数fun的功能是计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至x所指数组的后部。在fun函数中,首先求平均值,然后拿平均值逐个和数组元素比较,如果元素值小于平均值则保存在数组y中,再把大于等于平均值的元素放在数组y后面,最后把v数组内的元素拷贝到x所指的数组中。第一空:“for(i=0;i<N;i++)av+=___1___;”在该循环的下一个循环内是逐个比较元素x[i]是否小于aV,即该循环的功能是求出平均值。由“av=(x[0]+x[1]+…x[N-1])/N=x[0]/N+x[1]/N+…+x[N-1]/N”可知,第一空处应为“x[i]/N”。第二空:“if(x[i]<av){y[j]=x[i]=x[i]=-1;___2___;”如果x[i]小于平均值则将x[i]存储在y数组中,变量i是循环变量,变量j记录数组y的下标变化,下一次执行if内部语句时,y数组的下标应为下一个位置,故第二空处应为j加1,即第二空出为“j++”或“j=j+1”。第三空:i为while循环的循环变量,第一次进入while的时候i为0,判断第一个元素x[0]是否是-1,第二次进入的时候判断第二个元素x[1]是否是-1,依此类推直到i=N退出循环,故第三处是变量i自增,即第三空处为“i++”或“i==i+1”。三、程序修改题(本题共1题,每题1.0分,共1分。)41、给定程序MODI1.C中函数fun的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如,若输入8名学生的成绩:80.5607290.59851.58864则低于平均分的学生人数为:4(平均分为:75.5625)。请改正程序中的错误,使它能统计出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!1#include<stdio.h>2#defineN203intfun(float*s,intn,float*aver)4{floatave,t=0.0;5intcount=0,k,i;6for(k=0;k<n;k++)7/**********found**********/8t=s[k];9ave=t/n;10for(i=0;i<n;i++)11if(s[i]<ave)count++;12/**********found**********/13*aver=Ave;14returncount;15}16main()17{floats[30],aver;18intm,i;19printf(’’\nPleaseenterm:’’);scanf(’’%d’’,&m);20printf(’’\nPleaseenter%dmark:\n’’,m);21for(i=0;i<m;i++)scanf(’’%f’’,s+i);22printf(’’\nThenumberofstudents:%d\n’’,fun(s,m,&aver));23printf(’’Ave=%f\n’’,aver);24}标准答案:(1)t+:s[k];(2)*aver=ave;知识点解析:程序功能是统计出低于平均分的学生人数。(1)根据题目要求求出平均分,首先要求总分,要把所有学生成绩相加再求平均分,因此第一个标识下面的“t=s[k];”应改为“t+=s[k];”。(2)根据题目可知,比较的结果中低于平均分的分数ave放入指针aver所指的地址单元中,而变量Ave没有定义,因此第二标识下应将“*aver=Ave;”改为“*aver=ave;”。四、程序设计题(本题共1题,每题1.0分,共1分。)42、请编写函数fun,该函数的功能是:将s所指字符串中ASCII码值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。例如,若s所指字符串中的内容为“ABCDEFGL2345”,其中字符B的ASCII码值为偶数,字符2的ASCII码值为偶数,都应当删除,其他依此类推。最后t所指的数组中的内容应是“ACEGl35”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include<stdlib.h>#include<stclio.h>#include<string.h>#include<conio.h>voidfun(char*s,chart[]){)voidmain(){chars[100],t[100];system("CLS");printf("\nPleaseenterstringS:");scanf("%s",s),fun(s,t);printf("\nTheresultis:%s\n",t);}标准答案:voidfun(char*s,chart[]){inti=0;for(;*s!=’\0’;s++)/*找出ASC工工值为奇数的字符依次存入数组t中*/if(*s%2==1)t[i++]=*s;t[i]=’\0’;/*在字符串的末尾加上串结束符*/}知识点解析:本题要求将s所指字符串中ASCII码值为偶数的字符删除,因此本题要求采用一个for循环来找出ASCII码值为奇数的字符依次存入数组t中,并使用if条件句来判断s所指字符串中ASCII码值是否为奇数。用‘\0’加在字符串的末尾来表示字符串的结束。要删除ASCII码值为偶数的字符,也就是要留下,ASCII码值为奇数的字符。由于最终是要求出剩余字符(即ASCII码值为奇数)形成的新串,所以本题程序的算法是对原字符串从头到尾扫描,并找出ASCII码值为奇数的字符并将其依次存入数组t中。此外,还要注意数组t的下标变化和下标的初值(初值必须为0,即i=0),t[i++]的作用是先使用t[i],然后再使i自增1。国家二级(C语言)机试模拟试卷第2套一、选择题(本题共40题,每题1.0分,共40分。)1、设有定义:inta=1,b=2,C=3;,以下语句中执行效果与其他三个不同的是()。A、if(a>b)c=a,a=b,b=c;B、if(a>b){c=a,a=b,b=c}C、if(a>b)c=a;a=b;bc;D、if(a>b){c=a;a=b.b=c}标准答案:C知识点解析:C语言中if语句后面只跟一条语句时,可以省略大括号。即if语句仅作用于紧随其后的那条语句或者是复合语句的内容,所以A项执行三条语句组成的复合语句;BD两项执行大括号中的三条语句;而C项只执行c=a;。2、若有定义:inta=0,b=0,c=0,d=0;,有C语言表达式(a++&&b++)?c++:d++,以下关于其执行顺序的叙述中正确是()。A、先执行a++,表达式a++的值为0,由此即可确定(a++&&b++)值为0,因此执行d++B、先执行a++,表达式a++的值为0;再执行b++,表达式b++的值为0,由此可确定(a++&&b++)值为0,因此执行d++C、先执行a++,表达式a++的值为1;再执行b++,表达式b++的值为1,由此可确定(a++&&b++)值为1,因此执行c++D、先执行b++,表达式b++的值为1;再执行a++,表达式a++的值为1,由此可确定(a++&&b++)值为1,因此执行c++标准答案:A知识点解析:把握前置运算和后置运算的基本运算规则。3、以下关于return语句的叙述中不正确的是()。A、一个自定义函数中必须有一条return语句B、一个自定义函数中可以根据不同情况设置多条return语句C、如果一个函数有多个return语句,那么不论运行到哪一个return语句,该函数将结束D、没有return语句的自定义函数在执行完最后一条语句时返回到调用处标准答案:A知识点解析:return语句主要用于返回函数的值。在一个自定义函数中,可以根据不同的情况设置多条return语句返回函数的值,也可以不包含return语句。4、有以下程序:#include<stdio.h>unsignedfun(unsignednum){unsignedk=1;do{k*=num%10;num/=10;}while(num);returnk;}main(){unsignedn=26;printf("%d\n",fun(n));}程序运行后的输出结果是()。A、12B、10C、16D、8标准答案:A知识点解析:程序首先执行main函数,执行printf("%d\n",fun(n));即输出表达式fun(6)的值,为了计算该表达式,需要调用函数func。此时main将n中的26作为实参传递给fun的num,即num值为26,接着执行do—while语句。第1次循环,执行k*=num%10,即k=k*(num%10)=1*(26%10)=6;执行num/=10,即num=num/10=26/10=2;while后面循环条件为num,此时num为2,是非0值,即表示循环条件成立,继续执行循环体。此时k为6,num为2,执行do—while中的语句后,k为12,num为0。由于while后面循环条件为num,此时num为0,表示循环条件不成立,结束循环,执行returnk,即返回至main函数中的被调用处,执行main函数,执行printf语句,输出结果为12。5、在面向对象方法中,不属于"对象"基本特点的是()。A、一致性B、分类性C、多态性D、标识唯一性标准答案:A知识点解析:对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。所以选择A)。6、在数据管理技术发展的三个阶段中,数据共享最好的是()。A、人工管理阶段B、文件系统阶段C、数据库系统阶段D、三个阶段相同标准答案:C知识点解析:数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C。7、软件设计中划分模块的一个准则是()。A、低内聚、低耦合B、高内聚、低耦合C、低内聚、高耦合D、高内聚、高耦合标准答案:B知识点解析:一般较优秀的软件设计应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,因此本题答案为B。8、以下选项中,能用作数据常量的是()。A、o18B、o11C、0.8e2.5D、25L标准答案:D知识点解析:本题考查常量定义。数据常量可有10进制、8进制、16进制、指数法等,8进制数字为0-7,第一个字符为0,而不是0,因此选项A)和B)错误。为指数法时,指数部分须为整形,因此选项C)错误,选项D)中数字后加入L是说明此变量为长整型。9、下列程序的输出结果是()。#includevoidmain(){inta=0,b=1,c=2;if(++a>0||++b>0)++C;printf("%d,%d,%(1",a,b,c);}A、0,1,2B、1,2,3C、1,1,3D、1,2,2标准答案:C知识点解析:本题考查if语句。先判断if语句的条件是否成立,因为++a=1>0,所以条件成立,又因为是进行逻辑或运算,在已知其中一个运算对象为真的情况下,不必判断另外一个运算对象的真假,即不进行++b操作,就可以直接得出整个表达式的值为逻辑1,执行下面的++c。10、有以下程序:main(){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、ChinaB、ChinangC、ChinaBeijingD、BeijingChina标准答案:B知识点解析:本题考查函数fwrite的使用。函数fwrite的调用形式为:intfwrite(char*pt,unsignedn,FILE*fp);其功能是把pt所指向的n*size个字节输出到fp所指文件中,第二次调用该函数时,从文件的第一个位置开始写入,之前已有的会被覆盖掉,如果第二次写入的长度没有第一次的长,则后面短出的部分保留原样。11、开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做()。A、软件矛盾B、软件危机C、软件藕合D、软件产生标准答案:B知识点解析:随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了入们难以控制软件发展的局面,即所谓的“软件危机”。12、以下叙述中不正确的是()。A、在不同的函数中可以使用相同的名字的变量B、函数中的形式参数是局部变量C、在一个函数内定义的变量只在本函数范围内有效D、在一个函数内的复合语句中定义的变量在本函数范围内有效标准答案:D知识点解析:此题考查的是变量的作用范围。选项D)中,在一个函数的复合语句中定义的变量是局部变量,只在定义此变量的复合语句内有效,并不是在整个函数体内都有效。13、有以下程序:#includemain(){inta=3;printf("%d\n",(a+=a-=a*a);}程序运行后的输出结果是()。A、3B、9C、0D、-12标准答案:D知识点解析:本题考查目的是运算符的结合性和优先级,首先计算a*a,结果为9,然后执行a=a-9,即3-9,结果为-6,然后执行a=(-6)+(-6),即a=的值为-12。所以选择D。14、执行下列程序时输入“456<空格>789<空格>123<回车>”,输出结果是()。#include<stdio.h>main(){charm[80];intc,i;scanf(’’%c’’,&c);scanf(’’%d’’,&i);scanf(’’%s’’,&m);printf(’’%c,%d,%s\n’’,c,i,m);}A、456,789,123B、4,789,123C、4,56,789,123D、4,56,789标准答案:D知识点解析:scanf函数中的“%c”表示通过键盘只读入一个字符型的数据,“&c”表示将该数据赋值给c,所以c=4。另外,以“%d”格式读入数据时,只有遇到空格或者换行等间隔时符才停止读入,所以i=56,m=789。15、下列一维数组说明中,不正确的是()。A、intN;scanf(’’%d’’,&N);intb[N];B、floata[]={1,6,6,0,2};C、#defineS10inta[S];D、#defineS10inta[S+5];标准答案:A知识点解析:本题考查一维数组的赋值。一维数组的一般定义格式为:类型说明符数组名[常量表达式]。其中,“[]”中的内容可以是整型常量,也可以是整型表达式。选项A中的N是一个变量,所以错误。16、如果需要打开一个已经存在的非空文件"FILE’’并进行修改,正确的语句是()。A、fp=fopen(’’FILE","r");B、fp=fopen(’’FILE","a+’’);C、fp=fopen(’’FILE","w+’’);D、fp=fopen(’’FILE","r+’’);标准答案:D知识点解析:本题考查打开文件函数fopen(),打开文件函数fopen()的调用形式为:fp=fopen(文件名,文件使用方式)。“文件使用方式”说明:方式“r”为以输入方式打开一个文本文件;方式“a+”为以读/写方式打开一个文本文件,保留文件中原有的数据;方式“w+”为以读/写方式建立一个新的文本文件;方式“r+”为以读/写方式打开一个文本文件。17、下列选项中,不属于模块间耦合的是()。A、内容耦合B、异构耦合C、控制耦合D、数据耦合标准答案:B知识点解析:耦合可以分为下列几种,它们之间的耦合度由高到低排列:内容耦合一一若一个模块直接访问另一模块的内容,则这两个模块称为内容耦合。公共耦合一一若一组模块都访问同一全局数据结构,则称为公共耦合。外部耦合一一若一组模块都访问同一全局数据项,则称为外部耦合。控制耦合——若一模块明显地把开关量、名字等信息送入另一模块,控制另一模块的功能,则称为控制耦合。标记耦合一一若两个以上的模块都需要其余某一数据结构的子结构时,不使用其余全局变量的方式而全使用记录传递的方式,这样的耦合称为标记耦合。数据耦合——若一个模块访问另一个模块,被访问模块的输入和输出都是数据项参数,则这两个模块为数据耦合。非直接耦合——若两个模块没有直接关系,它们之间的联系完全是通过程序的控制和调用来实现的,则称这两个模块为非直接耦合,这样的耦合独立性最强。18、以下关于C语言的叙述中正确的是()。A、预处理命令通常位于函数体外面,但也可以位于函数体中间B、C语言中的变量定义须在其他语句之前C、在C语言程序的书写中,一个语句必须单占一行D、一个C语言源程序可以由一个或多个源文件组成,每个源文件可由自己的main函数标准答案:A知识点解析:源程序中可以有预处理命令(include命令仅为其中的一种)。C语言中的变量可以在使用之前的任何位置进行定义。C语言程序的书写中,多个语句可以位于一行,但为了增强可读性,一般每行只有一条语句。一个C语言源程序可以由一个或多个源文件组成,但仅可以有一个main函数。19、设一棵满二叉树共有15个结点,则在该满二叉树中的叶子结点数为()。A、7B、8C、9D、10标准答案:B知识点解析:在具有n个结点的满二叉树,其非叶子结点数为int(n/2),而叶子结点数等于总结点数减去非叶子结点数。本题n=15,故非叶子结点数等于int(15/2)=7,叶子结点数等于15-7=8。20、设变量x和变量y都是int类型,且x=1,y=2,则printI!("%d%dt",x,y,(x,y))的输出结果是()。A、12B、122C、1,2D、输出值不确定标准答案:A知识点解析:本题考查printf函数的格式和逗号表达式。printf函数在输出时,是根据格式说明符的个数输出的,如果函数中有多余的项将不予输出;如果有输出项少于格式说明符,则出错,不能输出正确的结果。本题中逗号表达式(x,y)只返回y的值。此时格式说明的个数是2,而输出项的个数是3,因此printf函数只输出前两项。21、当变量c的值不为2、4、6时,值也为”真”的表达式是()。A、(c>=2&&c<=6)&&(c%21=1)B、(c:=2)||(c==4)||(c==6)C、(c>=2&&c<=6)&&!(c%2)D、(c>=2&&c<=6)||(c!=3)||(c!=5)标准答案:D知识点解析:逻辑或运算符中只要有一个运算量为真结果就是真,当c>=2&&c<=6条件不成立时c的值肯定不是2、3、4、5、6,所以c!=3,与c!=5均成立。所以D选项的结果一定为真。22、有以下程序:#includemain(){inti=5;do{if(i%3==1)if(i%5==2){printf("*%d",i);break;}i++:}while(i!=0);printf("\n");}程序运行的结果是()。A、*7B、*3*5C、*5D、*2*6标准答案:A知识点解析:在dowhile循环中,总是先执行循环体后判断循环条件,所以循环体至少会被执行一次。在循环中,如果满足(i%3==1)&&(i%5==2)那么输出i的值,退出循环;否则i++,如果i==0则跳出循环。23、有以下程序:#include#includestructA{inta;charb[10];doublec;};voidf(structA*t);main(){structAa={1001,"ZhangDa",1098.0};f(&a);printf("%d,%s,%6.tha",a.a,a.b,a.c);}voidf(structA*t){t->a=1002;strcpy(t->b,"ChangRong");t->c=1202.0;)程序运行后的输出结果是()。A、1001,zhangDa,1098.0B、1002,ChangRong,1202.0C、1001,ChmagRong,1098.0D、1002,zhangDa,1202.0标准答案:B知识点解析:本题主要考查是的函数调用时参数之间的传递问题。在C语言中参数之间的传递是传值,也就是把实参的值复制一份传递给形参,而实参的值不发生变化。但对于指针调用来说,函数直接对实参的地址操作,因此在这种情况下实参变化。24、以下选项中不能作为C语言合法常量的是()。A、’cd’B、0.1e+6C、aD、’\011’标准答案:A知识点解析:常量包括整型常量、实型常量、字符常量和字符串常量等。单引号表示字符常量,但不能包含字符串。表达字符串常量时需用双引号。25、软件调试的目的是()。A、发现错误B、改善软件的性能C、改正错误D、验证软件的正确性标准答案:C知识点解析:在对程序进行了成功的测试之后将进入程序调试,程序调试的任务是诊断和改正程序中的错误。26、若有以下定义和语句:#include<stdio.h>chars1[10]="abcd!",*s2="\n123\\";printf("%d%d\n",strlen(s1),strlen(s2));则输出结果是()。A、107B、105C、55D、58标准答案:C知识点解析:strlen函数返回字符串的长度,求字符串长度时,遇到结束标志‘\0’为止,但是长度不包括结束标识。字符数组s1的后5个元素没有赋值,都为‘\0’,即“abcd!”后为‘\0’。所以sIrlen(s1)的值为5。字符指针s2所指向的字符串中,\n为转义字符换行符,表示1个字符,\\也为转义宁符,代表\,也是1个字符,其后为字符串结束标识‘0’;所以strlen(s2)的值也为5。因此C选项正确。27、有三个关系R、S和T如下:则由关系R和s得到关系T的操作是()。A、自然连接B、并C、交D、差标准答案:D知识点解析:关系T中的元组是关系R中有而关系S中没有的元组的集合,即从关系R中除去与关系S中相同元组后得到的关系T。所以做的是差运算。28、以下叙述中错误的是()。A、C程序在运行过程中所有计算都以二进制方式进行B、C程序在运行过程中所有计算都以十进制方式进行C、所有C程序都需要编译链接无误后才能运行D、C程序中字符变量存放的是字符的ASCII码值标准答案:B知识点解析:C程序在运行过程中的所有计算都以二进制方式进行,所以B选项错误。29、下列关于二叉树的叙述中,正确的是()。A、有一个以上根节点的数据结构不一定是非线性结构B、只有一个根节点的数据结构不一定是线性结构C、循环链表是非线性结构D、双向链表是非线性结构标准答案:B知识点解析:线性结构应满足:有且只有一个根节点与每个节点最多有一个前件,也最多有一个后件,所以B正确。所以有一个以上根节点的数据结构一定是非线性结构,所以A错误。循环链表和双向链表都是线性结构的数据结构。30、软件生命周期中的活动不包括()。A、叶子节点总是比度为2的节点少一个B、叶子节点总是比度为2的节点多一个C、叶子节点数是度为2的节点数的两倍D、度为2的节点数是度为1的节点数的两倍标准答案:B知识点解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子节点总是比度为2的节点多一个。所以选择B。31、若有定义:doublea=22;inti=0.k=18;则不符合C语言规定的赋值语句是()。A、a=a++,i++;B、i=(a+k)<=(i+k);C、i=a%11;D、i=!a;标准答案:C知识点解析:自增、自减操作符适用于char、short、int、long、float、double等类型,故选项A正确;赋值操作符“=”的优先级小于比较操作符“<=”,所以选项B等价于:i=((a+k)<=(i+k));,即将后面比较操作符的结果赋值给i,故选项B也正确;“!”是逻辑非运算符,i=!a表示将a表达式的值取反,赋值给i,故选项D也正确;求模运算符“%”的操作数只能是整数,故选项C错误,因此答案选C。32、以下叙述中正确的是()。A、charc1,c2,*c3,c4[40];是合法的变量定义语句B、数组下标的下限由数组中第一个非零元素的位置决定C、数组下标的下限由数组中第一个被赋值元素的位置决定D、数组下标的下限是1标准答案:A知识点解析:暂无解析33、有以下程序:#include<stdio.h>#include<string.h>typedefstruct{charname[9];charsex;floatscore[2];}STU;voidf(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];}main(){STUc={’’Qian’’,’f’,95.0,92.0};f(c);printf(’’%s,%c,%2.0f,%2.0f\n’’,c.name,c.sex,c.score[0],c.score[1]);}程序运行后的输出结果是()。A、Zhao,m,85,90B、Qian,m,85,90C、Zhao,f,95,92D、Qian,f,95,92标准答案:D知识点解析:本题考查结构体的相关操作以及传值、传址的区别,该题中调用f函数后,会生成参数c的一个副本,而不会改变c的值,所以c值维持原值,选项D正确。34、以下叙述中正确的是A、在C程序中的八进制和十六进制,可以是浮点数B、整型变量可以分为int型、short型、long型和unsigned型四种C、八进制数的开头要使用英文字母o,否则不能与十进制区分开D、英文大写字母X和英文小写字母x都可以作为二进制数字的开头字符标准答案:B知识点解析:C程序中的实型常量只有十进制一种数制,所以A错误,八进制数以0打头,所以C错误,C语言中整数只有十进制,八进制,十六进制三种没有二进制数制,所以D错误。35、为了使模块尽可能独立,要求()。A、内聚程度要尽量高,耦合程度要尽量强B、内聚程度要尽量高,耦合程度要尽量弱C、内聚程度要尽量低,耦合程度要尽量弱D、内聚程度要尽量低,耦合程度要尽量强标准答案:B知识点解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。36、设有定义:struct{intn;floatx;}s[2],m[2]={{10,2.8},{0,0.0}};则以下赋值语句中正确的是A、s[0]=m[1];B、s=m;C、s.n=m.n;D、s[2].x=m[2].x;标准答案:A知识点解析:定义了结构体类型数组s,长度为2,结构体类型数组m,长度为2,并进行了初始化。同类型的结构体可以直接用变量名实现赋值,A选项正确。数组名为数组首地址,地址常量之间不可以相互赋值,B选项错误。C选项引用结构体成员错误,数组名为地址常量不是结构体变量,不能引用成员,C选项错误。D选项数组越界,不存在s[2]与m[2],D选项错误。37、有以下程序#include<stdio.h>main(){inta=1,b=0;for(;a<5;a++){if(a%2==0)break;continue;b+=a;}printf("%d\n",b);}程序运行后的输出结果是A、0B、1C、10D、4标准答案:A知识点解析:题干中for循环有break和continue语句,且均放在b+=a语句前面,无论if条件是否满足,b+=a都不会被执行,因此b值始终为0,答案为A选项。38、设某二叉树的前序序列与中序序列均为ABCDEFGH,则该二叉树的后序序列为A、HGFEDCBAB、EFGHABCDC、DCBAHGFED、ABCDEFGH标准答案:A知识点解析:二叉树遍历可以分为3种:前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。二叉树的前序序列与中序序列相同,说明此树结点没有左子树,且第一个节点A为根节点,而后序遍历中根节点应在最后被访问,即节点A在最后出现,由此推断出后序遍历为HGFEDCBA,故A选项正确39、软件开发中,需求分析阶段可以使用的工具是()。A、N-S图B、DFD图C、PAD图D、程序流程图标准答案:B知识点解析:结构化分析方法是结构化程序设计理论在软件需求解析阶段的运用,数据流图(DataFlowDiagram,DFD)是结构化分析常用的工具之一,数据字典、判定树和判定表也是常用的结构化分析工具。程序流程图、NS图、PAD图等图形工具用于详细设计的过程中。40、在面向方法中,不属于“对象”基本特点的是()。A、一致性B、分类性C、多态性D、标识唯一性标准答案:A知识点解析:对象的基本特点有:①标识唯一性,是指对象是可区分的;②分类性,是指可将具有相同属性和操作的对象抽象成类;③多态性,是指同一个操作可以是不同对象的行为;④封装性,是指对象的内部对外不可见,在外面不可直接使用对象的处理能力,也不能直接修改对象的内部状态;⑤模块独立性,是指模块内部各部分及模块间的关系的一种衡量标准,由内聚和耦合来度量。二、程序填空题(本题共1题,每题1.0分,共1分。)41、函数fun的功能是:把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把奇数从数组中删除,偶数个数通过函数值返回。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除奇数后a所指数组中的数据为:4、2、6、8,返回值为4。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!#include#defineN9intfun(inta[],intn)(inti,j;j=0jfor(i=0;i标准答案:(1)a[i]%2(2)a[j](3)j知识点解析:奇数和偶数的判断可用取余的方法来实现,a[i]%2等于0,那么a[i]是偶数,否则是奇数。[解题思路]函数fun的功能是把形参a所指数组中的偶数按原顺序依次存放到a,把奇数从数组中删除。第一空:由“___2___=a[i];j++;”是将偶数元素保存起来并且计数变量加1,可知j记录了偶数元素的个数,第一空处是判断a[i]是否是偶数,因此第一空处应为“a[i]%2”。第二空:a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]…,j初始化为0,a[j]就可以将偶数元素存放在a中,故第二空处应为“a[j]”。第三空:fun函数的返回值是偶数个数,故第三空处应为“j”。三、程序修改题(本题共1题,每题1.0分,共1分。)42、下列给定程序中,fun函数的功能是:根据形参m,计算下列公式的值。t=1+1/2+1/3+1/4+…+1/m例如,若输入5,则应输出2.283333。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>doublefun(intm){doublet=1.0;inti;for(i=2;i<=m;i++)/******found******/t+=1.0/k;/******found******/returni;}voidmain(){intm;system("CLS");printf("Pleaseenterlintegernumber:");scanf("%d",&m);printf("Theresultis%lf\n",fun(m));}标准答案:(1)t+=1.0/i;(2)returnt;知识点解析:本题考查:for循环语句的循环条件;函数返回值。该题目考查分母成等差数列递增的一个数学公式,先看循环条件for(i=2;i<=m;i++),i从2开始递增到m,所以t的值应该是由1.0/i的值逐步循环叠加后的结果,而不是t+=1.0/k;。returni考查对程序的解读能力,当循环结束后(由输入m的值决定),函数返回当前t的值。四、程序设计题(本题共1题,每题1.0分,共1分。)43、规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:使字符串的前导*号不得多于n个,若多于n个,则删除多余的*号;若少于或等n个,则不做处理,字符串中间和尾部的*号不删除。例如,字符串中的内容为:*******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为:*******A*BC*DEF*G****。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include<stdio.h>voidfun(char*a,intn){}main(){chars[81];intn;voidNONO();printf("Enterastring:\n");gets(s);printf("Entern:");scanf("%d",&n);fun(s,n);printf("Thestringafterdeleted:\n");puts(s);NONO();}voidNONO()(/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti,n;chars[81];in=fopen("in.dat","r");out=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fscanf(in,"%d",&n);fun(s,n);fprintf(out,"%s\n",s);}fclose(in);fclose(out);}标准答案:voidfun(char*a,intn){inti=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深圳2024年度设备租赁合同规定与说明
- 统编人教版六年级语文上册口语交际《意见不同怎么办》精美课件
- 房屋租赁合同终止协议书
- 钛矿行业市场调研合同04
- 夏季清理杂草合同书
- 知识产权战略合作协议书范本3篇
- 我和毛巾是朋友课件
- 聘用员工合同协议书
- 心理健康教育教学课件
- 艺术品购买权转让合同(2024版)
- 江苏开放大学2024秋《建筑测量》作业3参考答案
- 2024污水处理厂运营合同书(范本)
- 银行办公大楼物业服务投标方案投标文件(技术方案)
- 《机械设计基础》期末考试试卷六
- 2024年炉外精炼工(初级)职业技能鉴定考试题库(含答案)
- DB11T 527-2021 配电室安全管理规范
- 2024年江西省交通设计研究院限责任公司招聘高频难、易错点500题模拟试题附带答案详解
- 2024年市养老护理员职业技能竞赛参考试题库(含答案)
- 军人职业规划方案
- 2024年《网络数据安全管理条例》学习解读课件
- iso220002024食品安全管理体系标准
评论
0/150
提交评论