




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级(C语言)机试模拟试卷15(共9套)(共345题)国家二级(C语言)机试模拟试卷第1套一、选择题(本题共40题,每题1.0分,共40分。)1、对长度为n的线性表排序,在最坏情况下,比较次数不是n(n一1)/2的排序方法是()。A、快速排序B、冒泡排序C、直接插入排序D、堆排序标准答案:D知识点解析:除了堆排序算法的比较次数是O(nlog2n),其他的都是n(n—1)/2。2、若有定义语句: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码值大小),以第一个不相同的字符的大小作为比较结果。因为;’0’<’0’,所以strcmp(s1,s2)为负值,只有B选项正确。3、判断字符串s1是否大于字符串s2,应该使用()。A、iffstrcmp(s1,s2)<0)B、if(s1>s2)C、if(strcmp(s2,s1)<0)D、if(strcmp(s1,s2))标准答案:C知识点解析:本题考查字符串比较函数strcmp(),调用形式:strcmp(str+1,str+2),其中sh+1、str+2分别是字符串存储区的首地址,函数功能:比较字符串str1和str2,当str1str2,返回值为正数。注意:不能使用关系运算符比较两个字符串的大小。4、有以下程序:#include<stdio.h>#include<string.h>structA{inta;charb[10];doublec;};voidf(structA*t);main(){structAa={1001,"ZhangDa’’,1098.0};f(&a);printf(’’%d,%s,%6.1f\n’’,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,ChangRong,1098.0D、1002,zhangDa,1202.0标准答案:B知识点解析:本题主要考查是的函数调用时参数之间的传递问题。在C语言中参数之间的传递是传值,也就是把实参的值复制一份传递给形参,而实参的值不发生变化。但对于指针调用来说,函数直接对实参的地址操作,因此在这种情况下实参变化。5、程序调试的任务是()。A、设计测试用例B、验证程序的正确性C、发现程序中的错误D、诊断和改正程序中的错误标准答案:D知识点解析:程序调试的任务是诊断和改正程序中的错误。6、有两个关系R和T如下:则由关系R得到关系T的操作是()。A、选择B、交C、投影D、并标准答案:C知识点解析:关系T是由关系R的第3、4行的元组组成的,很显然这是对关系R进行选择运算的结果。可以简单理解为:选择运算是对行的操作,投影运算是对列的操作。选择是从表中选出满足给定条件的元组组成新表。故C选项正确。7、有以下程序,其中%u表示按无符号整数输出()。main(){unsignedintx=0xFFFF;/*x的初值为十六进制数*/printf("%u\n",x);}程序运行后的输出结果是()。A、-1B、65535C、32767D、0xFFFF标准答案:B知识点解析:因为%u表示按无符号整数输出,而x用十六进制表示为0xFFFF,所以输出无符号整数的最大值65535。8、以下程序的输出结果是()。#includeintm=13;intfun(intX,inty){intm=2;retum(x*y—m);}main(){inta=7,b=6;printf(“%d”,fun(a,b)/m);}A、1B、3C、7D、10标准答案:B知识点解析:本题考查的是函数调用时的参数的作用域。在函数调用时,当全局变量和局部变量的名称相同时,在局部变量的作用域内,局部变量起作用,因而在fun函数内m的应该等于2,main中的m为13,所以返回值为7×6.2=40,而fun(a,b)/m值为40/13=3。9、有以下程序:#include<stdio.h>main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];printf("%d\n",t);}程序运行后的输出结果是()。A、3B、4C、1D、9标准答案:B知识点解析:每次内循环只循环一次就结束,第一次外循环时t=t+b[0][b[0][0]]=1+b[0][0]=1+0=1;第二次外循环时t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第三次外循环时t=t+b[2][b[2][2]]=2+b[2][2]=2+2=4。10、以下程序的输出结果是()。#includeintm=13;intfun(intx,inty){intm=2;retum(x*y—m);}main(){inta=7,b=6;printf("%d",fun(a,b)/m);}A、1B、3C、7D、10标准答案:B知识点解析:本题考查的是函数调用时的参数的作用域。在函数调用时,当全局变量和局部变量的名称相同时,在局部变量的作用域内,局部变量起作用,因而在fun函数内m的应该等于2,main中的m为13,所以返回值为7×6.2=40,而fun(a,b)/m值为40/13=3。11、有以下程序段:#include<stdio.h>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=50c=10C、a=10b=30c=10D、a=50b=30c=50标准答案:B知识点解析:本题中a>b的条件不满足,所以不执行逗号表达式a=b,b=c;的操作,而是执行c=a操作,即c的值为10。12、有以下程序#includevoidmain(){chars[]={"01aXy");inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]<=’a’&&s[i]>=’z’)n++;printf("%d\a",n);}程序运行后的输出结果是()。A、0B、2C、3D、5标准答案:A知识点解析:这段程序的功能求出字符串s中字符的.ASCII码小于小写字符a并且大于小写字符z的字符的个数。因为小写字符z的ASCII码大于小写字符a的ASCIl码,所以满足a的ASCII码并且大于z的的ASCII码的字符是不存在的,所以输出0。13、设有定义:structcomplex{intreal,unreal;}data1={1,8},data2;则以下赋值语句中错误的是()。A、data2=(2,6);B、data2=data1;C、data2.real=data1.real;D、data2.real=data1.unreal;标准答案:A知识点解析:A)选项中可以在声明变量的同事为data2赋值,但是data2=(2,6);应写作data2={2,6}。所以选择A。14、C语言程序的模块化通过以下哪个选项来实现()。A、变量B、函数C、程序行D、语句标准答案:B知识点解析:C语言程序的模块化通过函数来体现,所以选择B。15、下列叙述中错误的是()。A、C程序可以由多个程序文件组成B、一个C语言程序只能实现一种算法C、C程序可以由一个或多个函数组成D、一个C函数可以单独作为一个C程序文件存在标准答案:B知识点解析:在一个C语言程序中可以进行多种算法的实现,对算法的个数没有规定,所以B错误。16、有以下程序:#includemain(){chara,b,c,d;scanf("%c%c",&a,&b);c=getchar();d=getchar();printf("%c%c%c%c\n",a,b,c,d;}当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:回车也是一个字符)1234则输出结果是()。A、B、12C、1234D、标准答案:D知识点解析:按照从键盘输入的数据可以判断字符1给了变量a,字符2给了变量b,字符即回车给了变量c,字符3给了变量d。所以打印输出的结果为D选项。17、下述语句中,在字符串s1和s2相等时显示“theyareEqual”的是()。.A、if(*s1==*s2)puts("theyareEqual");B、if(!strcmp(s1,s2))puts("theyareEqual");C、if(s1==s2)Puts("theyareEqual");D、if(strcmp(s1,s2))puts("theyareEqual");标准答案:B知识点解析:字符串比较不能用两个等号(==)来进行比较,应使用strcmp(s1,s2)函数来比较。strcmp(s1,s2)函数的功能是:当字符串s1和s2相等时,返回值为0,因此,当表达式!strcmp(s1,s2)==1时,条件成立,执行后面的语句,输出thevareEqual。18、设有以下说明,则不正确的叙述是()。unionun{inta;charb:floatc;}art;A、arr所占的内存长度等于成员c的长度B、arr的地址和它的各成员的地址都是同一地址C、arr可以作为函数参数D、不能在定义arr时对它初始化标准答案:C知识点解析:本题主要考查联合体的内存使用:联合体所占用的内存空间为最长的成员所占用的空间,int占2个字节,char占1个字节,float占4个字节,所以arr所占的内存长度等于成员c的长度;arr的地址和它的各成员的地址都是同一地址;不能直接对arr赋值,即不能在定义arr时对它初始化;arr也不可以作为函数参数。19、在一棵二叉树上,第5层的结点数最多是()。A、8B、9C、15D、16标准答案:D知识点解析:根据二叉树的性质:二叉树第i(i≥1)层上至多有2i-1个结点。得到第5层的结点数最多是16个。20、在关系代数运算中,有5种基本运算,它们是()。A、并(∪)、差(-)、交(∩)、除(÷)和笛卡儿积(×)B、并(∪)、差(-)、交(∩)、投影(Ⅱ)和选择(o)C、并(∪)、交(∩)、投影(π)、选择(σ)和笛卡儿积(×)D、并(∪)、差(-)、投影(π)、选择(σ)和笛卡儿积(×)标准答案:D知识点解析:并、差、笛卡儿积、投影和选择是5种基本的运算,其他运算即交、连接和除,均可以通过5种基本的运算来表达。21、有以下程序:#include<stdio.h>main(){inta[]={2,4,6,8},*p=a,i;for(i=0;i<4;i++)a[i]=*p++;printf("%d\n",a[2]);}程序运行后的输出结果是()。A、2B、8C、4D、6标准答案:D知识点解析:本题通过语句“*p=a”将一维数组a的首地址的值赋值给变量p,即p的值为2。执行for循环,a[i]=*p++,表示将p的值赋给a[i]后,再进行++操作。因此4次循环后a[2]的值为6。故D选项正确。22、有以下函数:intfun(char*s){char*t=s;while(*t++);return(t-s);}该函数的功能是()。A、计算s所指字符串的长度B、比较两个字符串的大小C、计算s所指字符串占用内存字节的个数D、将s所指字符串复制到字符串t中标准答案:A知识点解析:首先char*s接受一个字符型数组的首地址,并将这个首地址赋给另一个字符型指针char*t,while(*t++)不断循环直到*t为"\0",再将t-1,这时字符指针t指向字符串的最后一个字符,又因为s指向字符数组的首地址,即字符串的首地址,所以return(t-s)便是返回字符数组中字符串的长度。23、下列程序的运行结果是()。#includevoidfun(int*S,int*P){staticintt=3;*p=s[c];t--;}voidmain(){inta[]={2,3,4,5},k,x;for(k=0;k<4;k++){fun(a,&x);printf("%d,",x);}}A、5,4,3,2,B、2,3,4,5,C、2,2,2,2,D、5,5,5,5,标准答案:A知识点解析:分析fun函数程序段,可知fun函数要实现的功能是将s中第(t+1)个元素以前的元素逆置赋给数组p。由于fun函数定义了静态变量t=3,因此,在主函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆置赋给数组x,最后输出x数组。24、有以下程序:#includemain(){ehara=4;printf(“%d\n”,a=a<<1);}程序运行后的输出结果是()。A、16B、8C、40D、4标准答案:B知识点解析:本题考查位运算,题目中将4向左移一位然后重新赋值给a,4左移一位为8,程序运行结果为8,选项B正确。25、以下叙述错误的是()。A、一个算法所包含的操作步骤应该是有限的B、任何能通过编译和运行的算法都一定能得到所期望的结果C、算法中每一条指令必须有确切的含义D、算法可以用各种描述方法来进行描述标准答案:B知识点解析:算法的特点:零个或多个输入,至少一个输出,可行性(能编程实现),有穷性(有限步出结果),确定性(描述不能有歧义)。可知选项A,C,D正确。C语言中,通过编译,可以运行的程序,不一定符合题目的本意,因此即使可以运行得到结果,也不一定和预期的结果一样,否则就不需要调试和修改程序了,故B选项错误。答案为B选项。26、以下不属于C语言整型常量的是()。A、0LB、-018C、0XaD、200U标准答案:B知识点解析:C语言中,整数可以有八进制、十进制和十六进制3种表示形式,十进制的数码取值为0~9,没有前缀;八进制的数码取值为0—7,必须以0开头,作为八进制数的前缀;十六进制的数码取值为:0~9,A~F或a~f,前缀为0X或0x。另外,对于长整型数,使用后缀L或l来表示,无符号数使用后缀U或u来表示;0L表示十进制长整型数0,故选项A正确;OXa表示十六进制数a,即十进制数值10,故选项C正确;200U表示十进制无符号整型数200,故选项D正确;负数一般使用二进制补码形式保存在内存中,按照八进制显示时,前缀0在最前面,后面的数值由二进制补码转换成八进制,无负数符号,在C程序中,只有十进制数可以是负数,而八进制和十六进制数只能是整数。因此答案为B。27、设二叉树中度为2的节点有8个,则叶子节点数是()。A、10B、8C、6D、9标准答案:D知识点解析:二叉树中,叶子节点的个数比度为2的节点的个数多1,所以答案为9。28、定义结构体数组structstu{intnum;charname[20];}x[5]={1,"ZHAO",2,"QIAN",3,"SUN",4,"LEE",5,"ZHOU"};for(i=1;i<5;i++)printf("%d%c",x[i].num,x[i].name[2]);程序执行后的输出结果是()。A、2A3N4E5OB、1H213U4EC、1A2N3E4OD、1A2N3E4O标准答案:A知识点解析:本题主要考查结构体数组。x[i].num是结构体x[i]中的num成员,x[i].name[2]是结构体x[il中name成员的第3个元素。第一次循环,i=1,输出x[1].num,x[1].name[2]的值,即2A;第二次循环,i=2,输出x[2].num,x[2].name[2]的值,即3N;第三次循环,i=3,输出x[3].num,x[3].name[2]的值,即4E;第四次循环,i=4,输出x[4].num,x[4].name[2]的值,即50。29、下面属于字符类的实例是A、’518’B、5C、’nmD、’\n’标准答案:D知识点解析:字符实例的一般形式是用一对单引号括起来的一个字符。另外ASCII码中还有一些控制字符,C语言中用转义字符的形式来书写这些常,转义字符一反斜杠(\)开始,后面跟1个字符或字符序列。’518’单引号中有三个字符,A选项错误。"5"双引号为字符串,B选项错误。’nm’单引号中有两个字符,C选项错误。’\n’为换行符,属于字符类实例,D选项正确。30、有以下程序:intf1(doublea)main(){returna*a;}{doublew;intf2(intx,inty)w=f2(2.1,4.0);{doublea,b;:a=f1(x);}b=f1(y);returna+b:}程序执行后,变量w的值是()。A、20.21B、20C、20.0D、0.0标准答案:C知识点解析:本题考查函数调用的使用。计算w的时候,先调用f2函数,f2函数的公式是“a+b”,计算a和b的时候又调用到f1函数,f1的函数是“a*a”,因此,w的计算公式为:w=(double)[(int)(2.1*2.1)+(int)(4.0*4.0)]=20.0。31、有如下程序#include<stdio.h>main(){inta=8,b;b=(a>>2)%2;printf("%d,%d\n",a,b);}程序运行后的输出结果是A、8,0B、4,0C、4,1D、8,1标准答案:A知识点解析:>>右移运算符,按位右移运算规则是将一个操作数先转换成二进制数,然后将二进制数各位右移若干位,移出的低位舍弃;并在高位补位,若为无符号数,右移时左边高位移入0。a=8=01000,执行a>>2后,a=00010=2,b=2%2=0,输出a,b为8,0,A选项正确。32、有以下程序#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选项.33、下列叙述中正确的是A、数据库系统可以解决数据冗余和数据独立性问题,而文件系统不能B、数据库系统能够管理各种类型的文件,而文件系统只能管理程序文件C、数据库系统可以管理庞大的数据量,而文件系统管理的数据量较少D、数据库系统独立性较差,而文件系统独立性较好标准答案:A知识点解析:数据管理技术的发展经历了3个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。三者各自的特点如下表所示。数据库系统可以解决数据冗余和数据独立性问题,而文件系统不能。数据库系统和文件系统的区别不仅在于管理的文件类型与数据量的多少。数据库系统具有高度的物理独立性和一定的逻辑独立性,而文件系统独立性较好。故本题选A选项.34、以下是正确C语言标识符的是A、&3B、#3C、_3D、-3标准答案:C知识点解析:C语言合法标识名的命名规则是:(1)标识符由字母、数字和下划线组成,(2)第一个字符不能是数字只能是字母或下划线。选项A的第一个字符为&,非法,选项B,第一个字符为#,非法,选项D,第一个字符为-,非法。答案为选项C.35、有以下程序#include<stdio.h>intm=1,n=2;voidsub1(intm,intn){m+=2;n++;}voidsub2(){m++;n+=2;}main(){printf("%d,%d,",m,n);sub1(4,5);printf("%d,%d,",m,n);sub2();printf("%d,%d\n",m,n);}程序运行后的输出结果是A、1,2,1,2,2,4B、1,2,6,6,7,8C、1,2,2,4,2,4D、1,2,6,6,2,4标准答案:A知识点解析:全局变量与函数体内局部变量同名时,局部变量会覆盖全局变量,因此在sub1()函数内,全局变量m,n是不可见的,在sub1()对m,n操作的是局部变量,对全局变量不产生影响。但在sub2()函数内,由于没有和全局变量变量重名,因此在此函数内,m,n是可见的。因此,第一个printf()打印的是全局变量m,n,故打印的是1,2,第二个printf(),调用sub1(),没有修改全局变量m,n.故打印的是1,2,第三个printf(),之前调用了sub2(),修改了全局变量m,n。因此,打印的是2,4,故答案为A选项。36、软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是A、学生成绩管理系统B、ERP系统C、办公自动化系统D、UNIX系统标准答案:D知识点解析:系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件。应用软件是为了应用于特定的领域而开发的软件。选项A属于系统软件,选项B、C、D属于应用软件。故选D选项.37、有以下程序#include<stdio.h>main(){intt;scanf("%d",&t);if(t++<6)printf("%d\n",t);elseprintf("%d\n",t--);printf("\n");}执行时输入:6<回车>,则输出结果是A、6B、8C、7D、5标准答案:C知识点解析:后置自增运算:k++表示先运算,后自加。if(t++<6)printf("%d\n",t);elseprintf("%d\n",t--);t的初值为6,t++<6,则条件为假,执行printf("%d\n",t--),此时t=7,,打印t值为7,之后进行自减操作t=6。,。因此打印的结果为7。故答案为C选项。38、为了降低算法的空间复杂度,要求算法尽量采用原地工作(inplace)。所谓原地工作是指A、执行算法时所使用的额外空间固定(即不随算法所处理的数据空间大小的变化而变化)B、执行算法时所使用的额外空间随算法所处理的数据空间大小的变化而变化C、执行算法时不使用额外空间D、执行算法时不使用任何存储空间标准答案:A知识点解析:算法的空间复杂度是指执行这个算法所需要的内存空间,包括输入数据所占的存储空间、程序本身所占的存储空间、算法执行过程中所需要的额外空间。如果额外空间量相对于问题规模(即输入数据所占的存储空间)来说是常数,即额外空间量不随问题规模的变化而变化,则称该算法是原地工作的。故选A选项39、设有定义:chars[81];inti=0;,以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是()。A、gets(s);B、while((s[i++]=getchar())!=’\n’);s[i]=’\0’;C、scanf("%s",s);D、do{scanf("%c",&s[i]);}while(s[i++]!=’\n’);s[i]=’\0’;标准答案:C知识点解析:字符串的输入不能使用scanf("%s",s);而应该使用gets(s)。40、C源程序中不能表示的数制是()。A、二进制B、八进制C、十六进制D、十六进制标准答案:A知识点解析:C语言中整型常量可以用十进制数、八进制数、十六进制数来表示。虽然计算机只能识别二进制数,但二进制不能用来表示整型常量。二、程序填空题(本题共1题,每题1.0分,共1分。)41、下列给定程序中,函数fun的功能是:将形参a所指数组中的前半部分元素中的值与后半部分元素中的值对换。形参11中存放数组中数据的个数,若n为奇数,则中间的元素不动。例如,若a所指数组中的数据为:1,2,3,4,5,6,7,8,9,则调换后为:6,7,8,9,5,1,2,3,4。请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>#defineN9voidfun(inta[],intn){inti,t,P;/*********found*********/p=(n%==0)?n/2:n/2+【1】;for(i=0;i<n/2;i++){t=a[i];/*********found*********/a[i]=a[p+【2】];/*********found*********/【3】=t;}}main(){intb[N]={1,2,3,4,5,6,7,8,9},i;printf("\nTheoriginaldata:\n");for(i=0;i<N;i++)printf("%4d",b[i]);printf("\n");fun(b,N);printf("\nThedataaftermoving:\n");for(i=0;i<N;i++)printf("%4d",b[i]);printf("\n");}标准答案:(1)1(2)i(3)a[p+i]或*(a+p+i)知识点解析:条件运算符组成条件表达式的一般形式:表达式1?表达式2:表达式3。其求值规则为:如果表达式1的值为真,则以表达式2的值作为条件表达式的值,否则以表达式3的值作为整个条件表达式的值。填空1:该处是判断数组元素的个数是奇数还是偶数,为奇数时要使当前位置加1,使p指向数组中间位置。填空2和填空3:这里是一个比较常见的数组位置调换程序,应填入i和a[p+i]或*(a+p+i)。变量交换算法:如果变量a、b互换,需借助第3个变量temp完成,即temp=a;a=b;b=temp;。三、程序修改题(本题共1题,每题1.0分,共1分。)42、给定函数MODl1.c中函数fun的功能是:将一个由八进制数字字符组成的字符串转换为与其面值相等的十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。例如,若输入:77777,则输出将是:32767。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。1#include<stdio.h>2#include<string.h>3#inolude<stdlib.h>4intfun(char*p)5{intn;6/**********found**********/7n=*p-’o’;8p++;9while(*p!=0){10/**********found**********/11n=n*8+*p-’0’;12p++;13}14returnn;15}16main()17{chars[6];inti;intn;18printf(’’Enterastring(ocataldigits):’’);gets(s);19if(strlen(s)>5){printf(’’Error:stririgtoolonger!\n\n’’);exit(0);}20for(2=0;s[i];i++)21if{s[i]<’0’||s[i]>’7’{22{printf(’’Error:%cnotisocataldigits!\n\n’’,s[i]);exit(0);}23printf(’’Theoriginalstring:’’);puts(s);24n=fun(s);25printf(’’\n%Sisconveredtointegernumber:%d\n\n’’,s,n);26}标准答案:(1)n=*p-’0’;(2)n=n*8+*p-’0’;知识点解析:函数功能是实现八进制到十进制的转换。(1)第一个标识下面:语句“n=*p-’o’;”中的’o’不是数字零,而是字母’o’,根据前面的分析因此改为:“n=*p-’0’;”。(2)第二个标识下面:语句“n=n*8+*p-’o’”,首先进行同(1)相同的修改,变量P没有定义,根据题意要求这里应该是“*p-’0’”,所以此句改为:“n=n*8+*p-’0’;”。四、程序设计题(本题共1题,每题1.0分,共1分。)43、编写函数intfun(intlim,intaa[MAX]),其功能是求出小于或等于lim的所有素数并放在aa数组中,并返回所求出的素数的个数。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:1#include<conio.h>2#include<stdio.h>3#include<stdlib.h>4#defineNAX1005intfun(intlim,intaa[MAX])6{78}9voidmain()10{11FILE*wf;12intlimit,i,sum;13intaa[MA×];14system(’’CLS’’);15printf(’’输入一个整数:’’);16scanf(’’%d’’,&limit);17sum=fun(limit,aa);18for(i=0;i标准答案:1intfun(intlim,intaa[MAX])2{3inti,j,k=0;4for(i=2;i<=lim;i++)/*求出小于或等于lim的全部素数*/5{for(j=2;j=i)8aa[k++]=i;/*将求出的素数放入数组aa中*/9}10returnk;/*返回所求出的素数的个数*/11}知识点解析:本程序如果一个数是合数,那么它的最小质因数肯定小于等于他的平方根。使用for循环语句查找小于lim的所有数,使用内嵌的循环判断语句判断该数是否为素数。在做这道题时,需要重点掌握素数的判定方法:for(j=2;j国家二级(C语言)机试模拟试卷第2套一、选择题(本题共39题,每题1.0分,共39分。)1、下列叙述中正确的是()。A、一个算法的空间复杂度大,则其时间复杂度也必定大B、一个算法的空间复杂度大,则其时间复杂度必定小C、一个算法的时间复杂度大,则其空间复杂度必定小D、算法的时间复杂度与空间复杂度没有直接关系标准答案:D知识点解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的时间复杂度是指执行算法所需要的计算工作量,两者之间并没有直接关系,故答案为D。2、在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是()。A、并B、交D、除标准答案:B知识点解析:关系R与S经交运算后所得到的关系是由那些既在R内又在S内的有序组所组成,记为R(lS,交运算不改变关系表中的属性个数但能减少元组个数。3、设有定义:chars[81];inti=0;,以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是()。A、gets(s);B、while((s[i++]=getchar())!=’\n’);s[i]=’\0’;C、scanf("%s",s);D、do{scanf("%c",&s[i]);}while(s[i++]!=’\n’);s[i]=’\0’;标准答案:C知识点解析:scanf("%s",s)用这种格式输入字符串时,空格和回车符都作为输入数据的分隔符而不能被读入,题目要求输入的字符串有空格,不符合题意要求,答案为C选项。4、下列程序的运行结果是()。#inc1udevoidfun(int*s,int*p){staticintt=3;*p=s[t];t一一:}voidmain(){inta[]={2,3,4,5},k,x;for(k=0;k<4;k++){fun(a,&x);printf("%d,",x);}}A、5,4,3,2,B、2,3,4,5,C、2,2,2,2,D、5,5,5,5,标准答案:A知识点解析:分析fun函数程序段,可知fun函数要实现的功能是将s中第(t+1)个元素以前的元素逆置赋给数组p。由于fun函数定义了静态变量t=3,因此,在主函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆置赋给数组x,最后输出x数组。5、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是()。A、12345ABCDEB、EDCBA54321C、ABCDE12345D、54321EDCBA标准答案:B知识点解析:栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择B)。6、下面程序的运行结果是()。y=5;x=14;y=((x=3*y,x+6),X-1);printf("x=%d,y=%d",x,y);A、x=27,y=27B、x=12,y=13C、x=15,y=14D、x=y=27标准答案:C知识点解析:本题考查的是逗号表达式。逗号表达式的求解步骤是先求解表达式1,然后依次求解表达式2,直到表达式N的值。整个逗号表达式的值就是最后一个表达式N的值。表达式(x=3*y,x+6)中,x=15。表达式y=x-1=14。7、以下能正确表述算式sin(2πr+30°)的C语言表达式是()。A、sin(2*3.14*r+3.14*30/180.0)B、sin(2*π*r+30)C、sin(2*3.14*r+30)D、sin(2*3.14*r+30*3.14/360.0)标准答案:A知识点解析:考查算术表达式的写法,C中没有π,需要用数值3.14代替,C中sin函数的参数为弧度,角度30转成弧度应为3.14*30/180。故而选A)。8、以下程序段中的变量已正确定义for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf("*");该程序段的输出结果是()。A、*B、****C、**D、********标准答案:A知识点解析:考查循环嵌套。循环嵌套执行次数为外层循环次数*内层循环次数。但是本题中循环次数与输出结果没有关系,两层循环之后只是执行了一个空语句;,然后输出一个′*′。故而答案选A)。9、软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是()。A、测试B、设计C、可行性研究D、实现标准答案:C知识点解析:开发阶段包括分析、设计和实施两类任务。其中分析、设计包括需求分析、总体设计和详细设计3个阶段,实施则包括编码和测试两个阶段,选项C不属于开发阶段。10、有以下程序:#include<stdio.h>#include<string.h>main(){chara[10]="abcd";printf("%d,%d\n",strlen(a),sizeof(a));}程序运行后的输出结果是()。A、7,4B、4,10C、8,8D、10,10标准答案:B知识点解析:在C语言中,strlen()用来统计字符串中字符的个数,sizeof()是求分配给数组的存储空间大小。题目中字符串a中字符个数为4,但由于数组a定义含有10个字符,所以所占空间大小为10。11、下列关于C语言文件的叙述中正确的是()。A、文件由一系列数据依次排列组成,只能构成二进制文件B、文件由结构序列组成,可以构成二进制文件或文本文件C、文件由数据序列组成,可以构成二进制文件或文本文件D、文件由字符序列组成,其类型只能是文本文件标准答案:C知识点解析:本题考查文件的概念,文件是由数据序列组成,可以构成二进制文件或文本文件,所以答案为C选项。12、以下关于long、int和short类型数据占用内存大小的叙述中正确的是()。A、均占4个宁节B、根据数据的大小来决定所占内存的字节数C、由用户自己定义D、由C语言编译系统决定标准答案:D知识点解析:不同的编译系统或计算机系统对儿类整型数所占用的字节数有不同的规定。long、int和short类型数据占用内存大小是由选择何种C编译系统决定的。13、执行以下程序段后,w的值为()。intw=’A’,x=14,y=15;w=((x|y)&&(w<’a’));A、一1B、NULLC、1D、0标准答案:C知识点解析:因为x=14,y=15都是非零整数,因此x|y=1。又因为’A’+32=’a’,知w<’a’也为真,因此(x|y)&&(w<’a’)的值为1。14、有以下程序#include<stdio.h>voidmain(){intn=2,k=1;while(!(k>0||n++));printf(’’%d%d\n’’,k,n);}程序运行后的输出结果是()。A、02B、13C、57D、12标准答案:D知识点解析:在程序中整型变量n的初始值等于2,整型变量k的初始值等于1,在执行while语句时,由于表达式k的值大于0为真,所以不再需要判断“n++’是否为真,“(k>0‖n++)”表达式的值为真。“!(k>0‖n++)”表达式的值为假,所以while语句中的条件不满足,循环语句不会执行,变量n的值也不会加1,所在输出变量k和n的值是1和2。15、以下不正确的定义语句是()。A、doublex[5]={1.0,2.0,3.0,4.0,5.0);B、inty[5l={0,1,2,3,4,5};C、charc1[]={’1’,’2’,’3’,’4’,’5’};D、charc2[]={’a’,’b’,’c’};标准答案:B知识点解析:本题考查对一维数组的赋值。选项B)中,y[5]说明数组中有5个元素,但却给它赋了6个值,数组溢出所以是错误的。16、有以下程序:#includeintflintt[],intn);main(){inta[4]={1,2,3,4},s;s=f(a,2);printf("%d\n",s);}intflintt[],intn){if((n>0)&&(n<5))returnt[n+1]+f(t,n-1);elsereturn0;}程序运行后的输出结果是()。A、4B、7C、10D、6标准答案:B知识点解析:本题主要考查的是函数的递归调用,子函数f是一个递归函数,所以主函数中执行f(a,2)时,其执行过程是a[3]+f(a,1)=a[3]+a[2]+f(a,0)=7。17、交换两个变量的值,不允许用临时变量,应该使用下列()位运算符。A、&B、^C、‖D、~标准答案:B知识点解析:按逻辑位运算的特定作用主要有3点:①用按位与运算将特定位清0或保留特定位;②用按位或运算将特定的位置设置为1;③用按位异或运算将某个变量的特定位翻转或交换两个变量的值。18、下列叙述中,不属于软件需求规格说明书的作用的是()。A、便于用户,开发人员进行理解和交流B、反映出用户问题的结构,可以作为软件开发工作的基础和依据C、作为确认测试和验收的依据D、便于开发人员进行需求分析标准答案:D知识点解析:软件需求规格说明书有以下几个方面的作用:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据:③作为确认测试和验收的依据。19、以下说法正确的是()。A、C语言程序运行时可以从键盘上读入用户输入的C源程序并附加到本程序的尾部一并执行B、C语言程序运行时可以从键盘上读入用户以二进制输入的指令,并执行这些指令C、C语言程序运行时可以从键盘上读入用户输入的c源程序并逐行执行D、C语言程序运行时可以从键盘上读入用户输入的字符或数据,并依此改变程序的运行步骤标准答案:D知识点解析:C语言运行前,需要将C程序编译、链接,生成可执行程序文件,在运行可执行文件时,只能从键盘读入用户输入的字符或数据,依据程序的逻辑,来改变程序运行的步骤,选项D正确;不能从键盘读入C源程序并附加到本程序的尾部一并执行,选项A错误;也不能直接读入二进制指令并执行,选项B错误;也不能读入C源程序并逐行运行,选项C错误,本题答案为D。20、若变量已正确定义并赋值,则以下符合C语言语法的表达式是()。A、a=a+7;B、a=7+b+c,a++C、int(12.3%4)D、a=a+7=c+b标准答案:B知识点解析:选项A是一个C语句,不是表达式;选项B是利用一个逗号表达式给a赋值;选项C中的“%”求余运算符要求两个运算对象都必须是整型;选项D中,不能用表达式给表达式赋值,但是变量可以给自身赋值,例如:a=a+1。21、表达式:(int)((double)9/2)-9%2的值是()。A、0B、3C、4D、5标准答案:B知识点解析:先将整型数据9强制转换成double型,然后除以2得到的结果与double型保持一致,即为4.5,再将4.5强制转换成整型数据4,然后计算9%2的值为1,最后计算4—1的值为3,所以选择B选项。22、一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是()。A、一对一B、一对多C、多对多D、多对一标准答案:C知识点解析:因为一个人可以操作多个计算机,而一台计算机又可以被多个人使用,所以两个实体之间是多对多的关系。23、若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是一个算术表达式,虽然最后有一个分号,但这个表达式中没有赋值操作,因此它不是一条赋值语句。24、有以下程序#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、4B、34C、31D、32标准答案:C知识点解析:本题重点考察二维数组名作为实参进行参数传递,在主函数中调用了fun函数,实参为二维数组名a和两个整数4、0,这样对应定义fun函数首部也有三种形式,这里采用了第一种形式,也就是行指针,这样在fun函数对s[i][j]进行操作实际上就是对主函数中的a[i][j]进行操作,再分析fun函数的作用便可知,是求二维数组第0列中最大的那个元素。因此C选项正确。25、有以下程序#include<stdio.h>main(){inty=10;while(y--);printf("y=%d\n",y);}程序执行后的输出结果是A、y=-1B、y=0C、y=1D、while构成无限循环标准答案:A知识点解析:y--先使用在自减,所以最后一次y的值为0,条件不成立但仍要执行自减操作,y的值为-1,跳出循环,打印y的值-1。26、有以下程序:#include<stdio.h>intfun(intx){intp;if(x==0||x==1)return3;P=x-fun(x-2);return(p);}main(){printf("%d\n",fun(9));}程序运行后的输出结果是()。A、4B、5C、9D、7标准答案:D知识点解析:本题考查函数的递归调用。执行fun(9)后,fun(9)=9-(7(-5-(3-f(1))))=7,故D选项正确。27、以下选项中关于程序模块化的叙述错误的是()。A、可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序B、把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块C、把程序分成若干相对独立的模块,可便于编码和调试D、可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序标准答案:A知识点解析:程序模块化思想中,可以采用自顶向下、逐步细化的方法。所以选项A中“自底向上”的说法是错误的。28、面向对象方法中,继承是指()。A、一组对象所具有的相似性质B、一个对象具有另一个对象的性质C、各对象之间的共同性质D、类之间共享属性和操作的机制标准答案:D知识点解析:继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。29、设有以下程序段:inty;y=rand()%30+1;则变量y的取值范围是()。A、0≤y≤30B、0<y≤30C、1<y<30D、1<y≤30标准答案:B知识点解析:rand()产生随机整数,任何整数对30求余得到的整数范围为0~29,则y的取值范围为1≤y≤30或者0<y≤30,y是整数,0<y≤30。30、函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回给调用函数,函数不完整。intfun(int*a,intn){int*p,*s;for(p=a,s=a;p-a<n;p++)if(______________)s=p;return*s:}在if语句下划线处应填入的选项是()。A、p>sB、*p>*sC、a[p]>a[s]D、p-a>p-s标准答案:B知识点解析:函数fun的功能是在形参a所指的具有n个元素的数组中查找最大值并返回。通过for循环比较,s始终指向最大值的那个元素。取指针的值,使用*p,因此比较使用*p和*s,需要找到最大值,当*s<*p时,修改指针s的指向,因此答案为B选项。31、某系统总体结构图如下图所示:该系统总体结构图的深度是()。A、7B、6C、3D、2标准答案:C知识点解析:可知:该树的深度为3,例如,系统-功能2-功能2.1,就是最深的度数的一个表现。32、若已包括头文件<stdio.h>n<string.h>,运行下面程序的输出结果是()。charsl[10]=’’12345’’,s2[10]=’’089’’,s3[]=’’67’’;strcat(strcpy(s1,s2),s3);puts(s1);A、08967B、0894567C、089567D、89567标准答案:D知识点解析:本题考查数组的4个知识点:①C语言中,二维数组或多维数组元素排列的顺序是按行存放;②不同数组的元素之间可以相互赋值;③字符型数组中存放的是字符,int型数组中存放的是字符对应的ASCII码值,虽然在计算机内部字符常量都是作为整型量来处理的,其对应的整数值就是ASCII码值,但两者并不完全等价;④数组名后的方括号内可以为常量,也可以为常量表达式,但不可以为变量。33、阅读以下程序#includemain(){IntCase;floatprintF;printf("请输入2个数:");scanf("%d%f",&Case,&printF);printf("%d%f\n",Case,printF);}以下说法正确的是()。A、定义语句出错,Case是关键字,不能用作用户自定义标识符,printF不能用作用户自定义标识符.B、定义语句出错,Int无法被识别。C、定义语句无错,scanf不能作为输入函数使用D、定义语句无错,printf不能输出Case的值标准答案:B知识点解析:C语言是一种大小写敏感的语言,因此Int应为int,而CaseprintF则可以使用。34、有以下程序(其中的strstr()函数头部格式为:char*strstr(char*p1,char*p2)确定p2字符串是否在p1中出现,并返回p2第一次出现的字符串首地址)#include<stdio.h>#include<string.h>char*a="you";char*b="WelcomeyoutoBeijing!";main(){char*p;p=strstr(b,a)+strlen(a)+1;printf("%s\n",p);}程序的运行结果是A、toBeijing!B、youtoBeijing!C、WelcomeyoutoBeijing!D、Beijing!标准答案:A知识点解析:调用strstr函数,可知a指向的字符串在b指向的字符串中第一次出现的位置,并将此地址赋给指针p。strlen()函数是求字符串的实际长度(不包含结束标志),并且作为函数值返回。strstr函数返回的地址下标值为9,加上a长度3,再加1,此时p指向的地址下标值为13,输出"toBeijing!",A选项正确。35、若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为()。A、4B、16C、32D、52标准答案:C知识点解析:本题考查逗号表达式的运用。x=(i=4,j=16,k=32)中的i=4,j=16,k=32构成一个逗号表达式,整个表达式的值取最后一项的值,即32,所以x的值为32.36、以下程序中C的二进制值是()。chara=2,b=4,c;c=a^b>>2A、00000011B、00010100C、00011100D、00011000标准答案:A知识点解析:本题主要考查按位异或和右移运算。b=4的二进制为00000100,b>>2后为00000001,a=2的二进制为00000010,两者异或为00000011。37、以下选项中,合法的C语言实数是A、3.1e0.4B、2.00E-01C、E13D、7.12E标准答案:B知识点解析:实型常量:用带小数点的数字表示,其值有两种表达形式,分别为十进制小数形式和指数形式。十进制小数形式由数字和小数组成,必须有小数点,且小数点的位置不受限制。指数形式由十进制数加阶码标志"e"或"E"以及阶码(只能为整数,可以带符号)组成。.2e0为指数形式实数,A选项正确。3.1e0.4,阶数不是整数,C选项错误。E13阶码标志前缺少十进制数,C选项错误。7.12E缺少阶码,D选项错误。38、有如下程序#include<stdio.h>main(){inti,*ptr;intarray[5]={5,3,1};for(ptr=array,i=0;i<5;i++,ptr++){if(*ptr==0)putchar(’X’);elseputchar(’A’+*ptr);}printf("\n");}程序运行后的输出结果是A、FDBXXB、FFFXXC、FDBBBD、ABCDE标准答案:A知识点解析:在对数组进行初始化时,如果对数组的全部元素赋以初值,定义时可以不指定数组长度,如果被定义数组的长度与初值个数不同,则数组长度不能省略;如果在说明数组时给出了长度,但没有给所有的元素赋予初始值,而只依次给前面的几个数组元素赋予初值,那么C语言将自动对余下的元素赋初值,则array={5,3,1,0,0}。程序执行过程为:执行for循环,将数组首地址赋给指针ptr,依次遍历每一个元素,如果数组元素为0则输出’X’,如果不为0则按照字母表输出字符’A’后第array[i]个字符。程序运行后的输出结果为:FDBXX,A选项正确。39、若有定义语句:inta[4][10],*P,*q[4];,且0≤i<4,则错误的赋值是()。A、p=aB、q[i]=a[i]C、p=a[i]D、p=&a[2][1]标准答案:A知识点解析:二维数组名是指向指针的指针,所以a和q都为指向指针的指针,而p为指向int类型的指针,p和a不同类型,故A项p=a赋值语句错误。其余选项可以正确赋值,其中D项是用&返回整数的地址,然后复赋值p。二、程序填空题(本题共1题,每题1.0分,共1分。)40、函数fun的功能是:在有n个元素的结构体数组std中,查找有不及格科目的学生,找到后输出学生的学号;函数的返回值是有不及格科目的学生人数。例如,主函数中给出了4名学生的数据,则程序运行的结果为:学号:N1002学号:N1006共有2位学生有不及格科目请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>typedefstruct{charnum[8];doublescore[2];/**********found**********/)[1];intfun(STUstd[],intn){inti,k=0;for(i=0;i<n;i++)/**********found**********/if(std[i].score[0]<60[2]std[i].score[1]<60){k++;printf("学号:%s",std[i].num);}/**********found**********/return[3];}main(){STUstd[4]={"N1001",76.5,82.0,"N1002",53.5,73.0,"N1005",80.5,66.0,"N1006",81.0,56.0},printf("\n共有%d位学生有不及格科目\n",fun(std,4));}标准答案:(1)STU(2)||(3)k知识点解析:填空1:STU结构体别名,通过min()中的语句可知填空2:||只要学生二门课成绩有不及格的,就算不及格,因此使用或运算填空3:k返回的是不及格的学生个数,有题意可知k是累计个数的。三、程序修改题(本题共1题,每题1.0分,共1分。)41、下列给定程序中,函数fun的功能是:实现两个整数的交换。例如,给a和b分别输入60和65,输出为:a=65b=60。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>/*********found*********/voidfun(inta,b){intt;/*********found*********/t=b;b=a;a=t;}voidmain(){inta,b;system("CLS");printf("Entera,b:");scanf("%d%d",&a,&b);fun(&a,&b);printf("a=%db=%d\n",a,b);}标准答案:(1)voidfun(int*a,int*b)(2)t=*b;*b=*a;*a=t;知识点解析:(1)本题考查指针变量作函数参数。采用一般变量作参数,不能改变实参的值,采用指针变量作为参数则能够改变实参的值。主函数中fun的调用方式说明fun函数的参数应当为指针类型。(2)此处错误比较明显,因为a和b都是指针变量,进行变量交换时不能直接引用,应加上“*”号。四、程序设计题(本题共1题,每题1.0分,共1分。)42、请编一个函数voidfun(inttt[M][N],intPP[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#defineM3#defineN4voidfun(inttt[M][N],intpp[N]){}voidmain(){intt[M][N]={{68,32,54,12},{14,24,88,58},{42,22,44,56}};intP[N],i,j,k;system("CLS");printf("Theriginaldatais:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%6d",t[i][j]);printf("\n");}fun(t,P);printf("\nTheresultis:\n");for(k=0;k<N;k++)printf("%4d",P[k]);printf("\n");}标准答案:voidfun(inttt[M][N],intpp[N]){inti,j,max;for(j=0;j<N;j++){max=tt[0][j];/*假设各列中的第一个元素最大*/for(i=0;i<M;i++)if(tt[i][j]>max)/*如果各列中的其他元素比最大值大,则将这个更大的元素看做当前该列中最大元素*/max=tt[i][j];pp[j]=max;/*将各列的最大值依次放入pp数组中*/}}知识点解析:本题中函数的功能是求出二维数组中每列的最大元素。首先,假设各列中的第一个元素最大,然后利用行标值的移动来依次取得各列中其他元素的值,并与假设的最大值进行比较,如果遇到更大的,则把这个更大的元素看做当前该列中最大的元素,继续与该列中其他元素进行比较。国家二级(C语言)机试模拟试卷第3套一、选择题(本题共40题,每题1.0分,共40分。)1、表达式:(int)((double)9/2)—(9)%2的值是()。A、0B、3C、4D、5标准答案:B知识点解析:运算符“/”和“%”的优先级高于“—”,所以先进行除法和求余运算,再进行减法运算。强制类型转换表达式的形式:(类型名)(表达式)。“9/2”结果为4,转换成double类型再转换成int类型结果依然为4,(9)%2的结果为1,4—1的最后结果为3。2、下列选项中,不属于数据库管理的是()。A、数据库的建立B、数据库的调整C、数据库的监控D、数据库的校对标准答案:D知识点解析:数据库管理一般包括:数据库的建立、数据库的调整、数据库的重组、数据库的安全性控制与完整性控制、数据库的故障恢复和数据库的监控。3、下面函数的功能是()。sss(s,t)char*s,*t;{while(*s);while(*t)*(s++)=*(t++);returns;}A、将字符串s复制到字符串t中B、比较两个字符串的大小C、求字符串的长度D、将字符串t续接到字符串S中标准答案:D知识点解析:本题考查指针变量的运用。本题中的函数实质上是将字符串t续接到字符串s中。4、有以下程序#includemain(){FILE*fp;inti=20,j=30,k,n;fp=fopen("dl.dat","w");fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);fclose(fp);fp=fopen("dl.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序运行后的输出结果是()。.A、2030B、2050C、3050D、3020标准答案:A知识点解析:分析程序段,百先以只写万式打开文件,利用fprintf函数将i和j的值写入到文件d1.dat中,然后关闭文件;再以只读方式打开文件,利用格式化输入函数fscanf将文件中的数据赋值给k和n,最后输出k和n的值,分别是20和30。5、在软件开发中,需求分析阶段可以使用的工具是()。A、N—S图B、DFD图C、PAD图D、程序流程图标准答案:B知识点解析:在需求分析阶段可以使用的工具有数据流图(DFD图),数据字典(D),判定树与判定表,所以选择B。6、设变量已正确定义并赋值,以下正确的表达式是()。A、x=y+z+5,++yB)int(15.8%5)B、x=y*5=x+zC、x=25%5.0标准答案:A知识点解析:B与D选项中取模运算符%的左右两个操作数均应为整数,所以B、D错误。C选项中不能将x+y的值赋给表达式y*5,所以C错误。7、软件生命周期中的活动不包括()。A、市场调研B、需求分析C、软件测试D、软件维护标准答案:A知识点解析:软件生命周期可以分为软件定义、软件开发与软件运行维护三个阶段。主要活动阶段是:可行件研究与计划、需求分析、软件设计、软件实现、软件测试、运行和维护,所以选择A。8、设有定义: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;b=c;D、if(a>b){c=a;a=b;b=c}标准答案:C知识点解析:C语言中if语句后面只跟一条语句时,可以省略大括号。即if语句仅作用于紧随其后的那条语句或者是复合语句的内容,所以A项执行三条语句组成的复合语句;BD两项执行大括号中的三条语句;而C项只执行c=a;。9、算法的时间复杂度是指()。A、算法的长度B、执行算法所需要的时间C、算法中的指令条数D、算法执行过程中所需要的基本运算次数标准答案:D知识点解析:算法的时间复杂度,是指执行算法所需要的工作量,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。10、以下关于long、int和short类型数据占用内存大小的叙述中正确的是()。A、均占4个字节B、根据数据的大小来决定所占内存的字节数C、由用户自己定义D、由C语言编译系统决定标准答案:D知识点解析:不同的编译系统或计算机系统对几类整型数所占用的字节数有不同的规定。long、int和short类型数据占用内存大小是由选择何种c编译系统决定的。11、在下列叙述中,错误的是()。A、C语言中,二维数组或多维数组是按行存放的B、赋值表达式b[1][2]=a[2][3]是正确的C、chara[1];a[0]=’A’与inta[1];a[0]=’A’等价D、数组名后的方括号内可以为常量表达式,也可以为变量标准答案:D知识点解析:本题考查数组的4个知识点:①C语言中,二维数组或多维数组元素排列的顺序是按行存放;②不同数组的元素之间可以相互赋值;③字符型数组中存放的是字符,int型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全与可靠性试题及答案
- 深度分析2025年能源行业智能电网优化与能源互联网产业链图谱报告
- 安全环保试题及答案大全
- 2025年成人教育线上学习模式创新与学习评价工具研发报告001
- 2025年文化与科技融合趋势下的数字博物馆数字化技术应用案例研究报告
- 中国医保体制培训课件
- 员工培训视频课件
- 中国制度自信课件
- 再贴现政策课件
- 北京十一学校2025届八年级英语第二学期期中考试试题含答案
- 陕西省咸阳市2025届高三下学期高考模拟检测(三)化学试题(含答案)
- 公司末梢装维人员星级评定方案宽带装维星级评定
- 基础会计试题及答案
- 2025长城汽车人才测评答案
- 基于法律法规的网络舆情风险评估模型-全面剖析
- 2025四川省安全员B证考试题库
- 民用建筑供暖通风与空气调节设计规范完整版2025年
- 消防工程专项竣工验收监理质量评估报告
- 驾驶员安全月试题及答案
- 2025年高考语文备考之名著阅读《乡土中国》第四章《差序格局》内容概述及跟踪训练(含答案)
- 2024年艺术类第二批(本科)投档最低分名次 (B段)(舞蹈类)
评论
0/150
提交评论