国家二级(C语言)笔试模拟试卷28(共492题)_第1页
国家二级(C语言)笔试模拟试卷28(共492题)_第2页
国家二级(C语言)笔试模拟试卷28(共492题)_第3页
国家二级(C语言)笔试模拟试卷28(共492题)_第4页
国家二级(C语言)笔试模拟试卷28(共492题)_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

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

文档简介

国家二级(C语言)笔试模拟试卷28(共9套)(共492题)国家二级(C语言)笔试模拟试卷第1套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、下列叙述中错误的是()。A、一种数据的逻辑结构可以有多种存储结构B、数据的存储结构与数据的处理效率无关C、数据的存储结构与数据的处理效率密切相关D、数据的存储结构在计算机中所占的空间不一定是连续的标准答案:B知识点解析:数据的存储结构分为顺序结构和链式结构,一个数据的逻辑结构可以有多种存储结构。顺序结构中数据元素所占的存储空间是连续的,而链式存储结构中,数据元素所占的存储空间不一定是连续的。数据的存储结构与数据的处理效率密切相关。2、下列叙述中错误的是()。A、线性表是由n个元素组成的一个有限序列B、线性表是一种线性结构C、线性表的所有结点有且仅有一个前件和后件D、线性表可以是空表标准答案:C知识点解析:线性表是一种线性结构,由n(n≥0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以选项C)是错误的。3、下列关于栈的描述中错误的是()。A、栈是先进先出的线性表B、栈只能顺序存储C、栈具有记忆作用D、对栈的插入与删除操作中,不需要改变栈底指针标准答案:B知识点解析:栈是限定只能在表的一端进行插入和删除操作的线性表,入栈和出栈都是在栈顶进行,它们的操作特点是先进后出,因此具有记忆作用。栈可以采用顺序存储,也可以采用链式存储。4、对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为()。A、125B、n/2C、nD、n+1标准答案:C知识点解析:对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为n。5、下列叙述中正确的是()。A、在模块化程序设计中,一个模块应该尽量多的包括与其他模块联系的信息B、在自顶向下、逐步细化的设计过程中,首先应设计解决问题的第一个细节C、在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则D、在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法标准答案:C知识点解析:在模块化程序设计中,模块之间的联系可以通过程序的控制结构来实现,在自顶向下、逐步细化的设计过程中,首先要考虑全局目标,而不是细节。在程序设计中模块化和结构化可以同时使用,一个模块的内部结构也要符合结构化设计原则。6、下列特征中不是面向对象方法的主要特征的是()。A、多态性B、继承C、封装性D、模块化标准答案:D知识点解析:面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:分类性、多态性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计的特点。7、有下列二叉树,对此二叉树中序遍历的结果为()。A、BDYEACFXZB、DYBEAFCZXC、ABCDEFXYZD、ABDYECFXZ标准答案:B知识点解析:对二叉树的中序遍历是指:首先遍历左子树,然后访问根结点,最后遍历右子树。在遍历左、右子树时,注意依旧按照“左子树一根结点一右子树”的顺序。本题的遍历顺序是这样的:①首先访问左子树:BDEY:②在左子树BDEY中,也按中序遍历,先访问左子树DY;在左子树DY中,也按中序遍历,先访问左子树,左子树没有,则访问根结点D,然后访问右子树Y;③接着访问根B,再访问右子树E;④访问左子树BDEY后,接着访问根结点八,接着访问右子树CFXZ;⑤右子树CFXZ的访问顺序同理可得:FCZX。8、下列不属于软件工程的3个要素的是()。A、32具B、过程C、方法D、环境标准答案:D知识点解析:软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段:工具支持软件的开发、管理和文档生成:过程支持软件开发的各个环节的控制、管理。9、设计软件结构是在软件生命周期的()。A、软件定义期B、软件开发期C、软件维护期D、以上三个都不是标准答案:B知识点解析:设计软件结构是在软件概要设计阶段进行的,而概要设计属于软件开发期。10、下列工具中为需求分析常用工具的是()。A、PADB、PFDC、N-SD、DFD标准答案:D知识点解析:需求分析常用的工具有数据流图(DFD)、数据字典(DD)、判定树和判定表。PAD(问题分析图)、PFD(程序流程图)、N-S(盒式图)都是详细设计的常用工具,不是需求分析的工具。二、选择题(2分)(本题共30题,每题1.0分,共30分。)11、下列叙述中正确的是()。A、C程序由函数组成B、C程序由主函数构成C、C程序由函数和过程构成D、在C程序中无论是整数还是实数,都可以正确无误的表示出来标准答案:A知识点解析:本题涉及C语言最基本的两个知识点:①C程序是由函数构成的,有且仅有一个主函数,也可以有其他的函数;②整数在允许的范围内可以准确无误的表示出来,但计算机的存储能力有限,不能表示无限精度的实数。12、设有定义下列:inta=1,b=2,c=3,d=4,m=2,n=2;则表达式(m=a>B)&&(n=c>D)运算后,n的值是()。A、4B、3C、2D、0标准答案:C知识点解析:在逻辑与&&运算中,如果第一个操作数为假,则结果是假,后面的操作数不参与运算,本题中因为第一个操作数(m=a>B为假,所以第二个操作数(n=c>d)不参加运算,因此n的值不变。13、执行下列程序段后,变量a,b,c的值分别是()。intx=5,y=4;inta,b,c;a=(--x==y++)?x:++y;b=++X;C=y;A、a=5,b=5,c=5B、a=4,b=5,c=5C、a=5,b=6,c=5D、a=1,b=5,c=6标准答案:B知识点解析:本题考查自加(++)、自减(--)运算符的使用。“++i,--i”,在使用i之前,先使i的值加1或者减1,再使用此时的表达式的值参与运算:“i++,i--”,先使用此时的i的值参与运算,在使用i之后,再使i的值加1或者减1。对于第1个表达式--x=4,y++=4。两者相等,--x==y++为真,所以a=x=4,执行完此语句后y的值是5。第2个表达式b=++x,x的值先加1,然后赋给b,即b=x+1=5第一个表达式c=y=5。14、下列程序的输出结果是()。main(){inta=1,b=2;printf("%d,%d\n",--a,++B);}A、1,2B、1,3C、0,2D、0,3标准答案:D知识点解析:本题主要考查自加(++)、自减(--)运算符的使用。“++i,--i”在使用i之前,先使i的值加1或者减1,然后再使用i此时的值参与运算:“i++,i--”是在使用i参与表达式运算之后,再使i的值加1或者减1。本题中--a和料b是先执行a减1和b加1操作,再输出表达式的值。15、下列变量声明合法的是()。A、short.a=1.4e-1;B、doubleb=l+3e2.8;C、longdo=0xfdaL;D、float2_aaa=1e-3;标准答案:A知识点解析:解答本题需了解3个知识点:①标识符是由字母、数字或下画线组成,并且它的第一个字符必须是字母或者下画线;②do是C语言中的一个关键字,不能再用做变量名和函数名:③C语言规定指数形式的实型常量e或E后面的指数必须是整数。16、在函数scanf的格式控制中,格式说明的类型与输入项的类型应该对应匹配。如果类型不匹配,系统将()。A、不予接收B、并不给出出错信息,但不能得到正确的数据C、能接收到正确输入D、给出出错信息,不予接收输入标准答案:B知识点解析:在scanf函数的格式控制中,格式说明的类型与输入项的类型必须一一对应匹配,如不匹配将导致数据输入出现错误,但是系统并不报错。17、若有下列定义(设int类型变量占2个字节):floatx=123.4567;则下列语句:printf("x=%5.2f",x);输出的结果是()。A、x=123.46B、123.4567C、x=123.4567D、123.46标准答案:A知识点解析:本题考查printf函数的格式。“%5.2f”格式符中的“f”表示以带小数点的形式输出单精度或者双精度数;“5”表示指定数据输出宽度为5;“.2”表示指定输出数据小数位占2位数,并对截去的第一位小数做四舍五入处理。18、下列程序的输出结果是()。#include<stdio.h>main(){inti;for(i=1;i<=10;i++){if((i*i>=20)&&(i*i<=100))break;}printf("%d\n",i*i);}A、49B、36C、25D、64标准答案:C知识点解析:本题考查汀语句。当执行到第一个满足(i*i>=20)&&(i*i<=100)这个条件的i出现时,通过break语句跳出循环,执行下列的printf语句。19、若执行下列的程序时,从键盘上输入1和2,则输出结果是()。#include<stdio.h>main(){inta,b,s;scanf("%d%d",&a,&B);S=a;if(a<B)s=b;s=s*s;printtf("%d\n",s);}A、1B、4C、2D、9标准答案:B知识点解析:本题考查if语句。scanf函数通过键盘读入a、b的值,a=1,b=2。第一个if语句,先判断条件,发现a<b条件成立,则s=b=2,s=s*s=4。20、有下列程序:main(){intt,a=1,b=5,C=-2;while(a>b>C){t=a;a=b;b=t;c++;}printf("%d,%d,%d",a,b,C);}程序的输出结果是()。A、1,5,0B、1,5,-2C、5,1,-1D、5,1,-2标准答案:A知识点解析:本题考查while循环。先判断while循环的控制表达式是否成立,发现a>b>c不成立,所以不执行循环。直接输出a、b、c的值。21、运行下列程序,若从键盘输入字母“a”,则输出结果是()。Charc;c=getchar();if(c>=’a’&&c<=’g’)c=c+4;elseif(c>=’g’&&c<=’z’)c=c-21;elseprintf("inputerror!\n");putchar(C);A、fB、tC、eD、d标准答案:C知识点解析:首先,getchar函数通过键盘读入字符’a’,即c=’a’(其实c得到的是字符a的ASCII码值),然后判断if语句的控制条件,发现’a’>=’a’&&’a’<=’g’成立,则执行下列的语句,c=c+4,c得到的是字符e的ASCII码值,退出if语句,通过putchar函数输出字符e。22、在C语言中,函数调用时()。A、实参和形参各占独立的存储单元B、实参和形参共用存储单元C、由系统自动确定实参和形参是否共用存储单元D、由用户指定实参和形参是否共用存储单元标准答案:A知识点解析:本题考查函数调用时的参数传递。函数的形参是函数定义时由用户定义的形式上的变量,实参是函数调用时,主调函数为被调函数提供的原始数据。在函数调用时,实参和其所对应的形参分别占用不同的存储单元,彼此之间不影响。23、下列程序的输出结果是()。#include<stdio.h>intb=2;intfunc(int*A){b+=*a;retumb;}main(){inta=1,t=2;t+=func(&A);printf("%d\n",t);}A、4B、5C、6D、8标准答案:B知识点解析:本题考查函数调用时的参数传递。在执行函数func时,由于全局定义了一个变量b,所以在函数体中执行时b=2+1=3,最终t=2+3=5。24、若有定义floata=25,b,*p=&b;,则下列对赋值语句*p=a;和p=&a;的正确解释为()。A、两个语句都是将变量a的值赋予变量pB、*p=a是使p指向变量a,而p=&a是将变量a的值赋予变量指针pC、*p=a是将变量a的值赋予变量b,而p=&a是使p指向变量aD、两个语句都是使p指向变量a标准答案:C知识点解析:“p”是指针变量,指向一个地址:“*p”为p指针所指向地址的内容。25、若有定义血b[8],*p=b;则p+6表示()。A、数组元素b[6]的值B、数组元素b[6]的地址C、数组元素b[7]的地址D、数组元素b[0]的值加上6标准答案:B知识点解析:指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中将p+6指的是将指针向后移动了6个存储单元,指向b[6],存放的是b[6]的地址。26、已有定义:chara[]="xyz",b[]={’x’,’y’,’z’};,下列叙述中正确的是()。A、数组a和b的长度相同B、a数组长度小于b数组长度C、a数组长度大于b数组长度D、上述三种说法都不对标准答案:A知识点解析:字符数组a[]中用字符串常量“xyz”进行初始化,字符数组a[]的长度为字符的个数,所以其值为3,并不包括字符串结束标记’\0’;字符串数组b[]用3个字符’x’、’y’、’z’来初始化,所以其字符串的长度等于3。27、下列程序的输出结果是()。voidf(int*x,int*y){intt;t=*x,*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i+)printf("%d,",a[i]);}A、8,2,3,4,5,6,7,1B、5,6,7,8,1,2,3,4C、1,2,3,4,5,6,7,8D、8,7,6,5,4,3,2,1标准答案:D知识点解析:函数f()的功能是对两个数据互换。在主函数中指针变量p和q分别指向数组a[8]的首和尾,在while循环中实现从首尾开始数组元素的互换操作。28、对两个数组a和b进行下列初始化:charm[]="1234567";charn[]={’1’,’2’,’3’,’4’,’5’,’6’,’7’};则下列叙述正确的是()。A、数组m与数组n完全相同B、数组m与数组n长度相同C、数组m比数组n长1D、数组m与数组n中都存放字符串标准答案:C知识点解析:本题考查字符数组和字符串赋值给数组的一些区别。.语句“charm[]="1234567";”定义了一个字符型数组并进行了初始化,C语言规定,在字符串的末尾自动加上串结束标记’\0’,因此数组m的长度是8;而数组n是按照字符方式对数组进行初始化,系统不会自动加上串结束标记’\0’,因此数组n的长度是7。29、下列程序的输出结果是()。#include<stdio.h>main(){chara[]={’a’,’b’,’c’,’d’,’e’,’f’,’\0’};inti,j;i=sizeof(A);j=strlen(A);printf("%d,%d",i,j);}A、7,7B、7,6C、6,6D、6,7标准答案:B知识点解析:sizeof()函数的功能是返回字符串所占的字节数,strlen()函数的功能是返回字符串的长度,其中’\0’是一个转义字符,它占存储空间,但不计入串的长度。30、设变量已正确定义,则下列能正确计算f=n!的程序段是()。A、f=0;for(i=1;i<=n;i++)f*=i;B、f=1;for(i=1;i<n;i++)f*=i;C、f=1;for(i=n;i>1;i++)f*=i;D、f=1;for(i=n;i>=2;i--)f*=i;标准答案:D知识点解析:要正确计算函数f=n!,由n!的数学定义可知n!=n*(n-1)*(n-2)*……*1。在选项A中,由于f的初值为0,在for循环语句中,f依次乘以1,2,3,……,n。最后计算f=n!=0,所以选项A不正确。在选项B中,f的初值为1,在for循环语句中,f依次乘以1,2,3,……,(n-1)。最后计算得到f=(n-1)!,所以选项B不正确。在选项C)中,f的初值为1,在for循环语句中,f依次乘以n,n+1,n+2,……,所以选项C)不正确。在选项D)中,f的初值为1,在for循环语句中,f依次乘以n,n-1,n-2,……,2。最后计算f=n!,所以选项D)正确。31、设有定义:intnl=0,n2,*p=&n2,*q=&n1;,下列赋值语句中与n2=n1;语句等价的是()。A、*p=*q;B、p=q;C、*p=&n1;D、p=*q;标准答案:A知识点解析:在定义指针变量p和q时,分别把变量n2和n1的地址赋给了指针变量p和q,所以*p和*q中内容就分别是变量n2和n1的值,所以语句*p=*q与语句n2=n1等价。因此选项A正确。32、设已包含头文件<string.h>,下列程序段的运行结果是()。chars1[]={"ACDEF"};chars2[]="ABC";strcpy(s1,s2);printf("%d",strlen(s1));A、3B、4C、6D、5标准答案:A知识点解析:头文件<string.h>是字符串处理函数对应的头文件,要想调用C语言的库函数时,都要在程序中嵌入该函数对应的头文件,否则无法使用库函数。strcpy(s1,s2)把s2中的字符串复制到s1中,所以结果就为s2的长度。33、设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为()。A、EOFB、非0值C、0D、NULL标准答案:B知识点解析:ANSIC提供的feof函数的功能是判断fp所指的文件的位置是否已达到文件尾,如果达到文件尾,则feof函数的值为1,否则为0,表示文件尚未结束。34、下列程序执行的输出结果是()。#inClude<stdio.h>main(){chara[2][4];strcpy(a,"are");strcpy(a[1],"you");a[0][3]=’&’;printf("%s\n",A);}A、are&youB、youC、areD、&标准答案:A知识点解析:strcpy(a,"are")中数组名a代表数组首地址的地址常量,该操作把are复制到a中,a[0][3]=’&’,且strcpy(a[1],"you")把you复制到a[1]中,故输出a为“are&you”。35、一个源文件中的外部变量的作用域为()。A、本文件的全部范围B、本程序的全部范围C、本函数的全部范围D、从定义该变量的位置开始到本文件结束标准答案:D知识点解析:一个源文件中的外部变量的作用域是从定义该变量的位置开始到本文件结束。36、下列程序的运行结果是()。#include<stdio.h>#defineADD(x)x+xmain(){intm=1,n=2,k=3;ints=ADD(m+n)*k;printf("s=%d",s);}A、sum=18B、sum=10C、sum=9D、sum=25标准答案:B知识点解析:本题考查带参数的宏的定义及相关运算:S=m+n+m+n*k=1+2+1+2*3=10。37、当说明一个结构体变量时系统分配给它的内存是()。A、各成员所需要内存量的总和B、结构中第一个成员所需的内存量C、成员中占内存最大者所需的容量D、结构中最后一个成员所需要的内存量标准答案:A知识点解析:本题主要考查结构体的内存使用:对结构体而言,结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立。38、下列语句段中,正确的是()。A、struct{intx;floaty;inta[2];unsignedb[3];charname[10];};B、structstu{unsigneda[3];unsignedb[4];}x;int*p=&x.a;C、structsu{inta;floatx[4];}y={1,1.0};floatdata=y.x;D、stmctnd{inta,b;unsignedc[2]=5;};标准答案:A知识点解析:本题主要考查的知识点是结构类型的概念和定义,结构定义的一般形式是:struct结构类型名称{数据类型成员名1;数据类型成员名2;数据类型成员名n;};struct为关键字,是结构的标识符;{}中包围的是组成该结构的成员项;每个成员的数据类型既可以是简单的数据类型,也可以是复杂的数据类型。整个定义作为一个完整的语句,用分号结束。结构类型名称是可以省略的,此时定义的结构称为无名结构。39、设x=011050,则x=x&01252的值是()。A、0000001000101000B、1111110100011001C、0000001011100010D、1100000000101000标准答案:A知识点解析:本题主要考查按位与运算,x=011050的二进制形式为0001001000101000,01252的二进制形式为0000001010101010,两者相与得0000001000101000。40、已知函数fread.的调用形式为fread(buffer,size,count,fp);,其中buffer代表的是()。A、存放读入数据项的存储区B、一个指向所读文件的文件指针C、一个指针,是指向输入数据存放在内存中的起始地址D、一个整型变量,代表要读入的数据项总数标准答案:C知识点解析:数据块读取函数调用形式:fread(buffer,size,count,fp)。fread函数参数说明:“buffer”是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。“size”是要读写的字节数:“count”是要进行读写多少个size字节的数据项;“fp”是指文件型指针。三、公共基础填空题(本题共5题,每题1.0分,共5分。)41、在算法的4个特性中,算法必须能在执行有限个步骤之后终止指的是算法的______特性。标准答案:有穷性知识点解析:算法的4个基本特性包括:可靠性、确定性、有穷性和拥有足够的情报,其中,算法的有穷性指的是算法必须在有限的时间内完成,即算法必须在执行有限个步骤之后终止。42、按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。标准答案:线性结构知识点解析:数据的逻辑结构,是指数据元素之间的逻辑关系,分为线性结构和非线性结构,常见的线性结构有线性表、栈和队列等,常见的非线性结构有树、二叉树等。43、栈中允许进行插入和删除的一端叫做______。标准答案:栈顶知识点解析:栈是限定在表的一端进行插入和删除操作的线性表。在表中,允许插入和删除的一端叫做“栈顶”,不允许插入和删除的一端叫做“栈底”。44、在面向对象程序设计中,从外面看只能看到对象有外部特征,而不知道也无须知道数据的具体结构以及实现操作的算法,这称为对象的______。标准答案:封装性知识点解析:对象具有下列5个基本特点:①标识唯一性;②分类性;③多态性;④封装性;⑤模块独立性好。其中,封装性是指从外面看只能看到对象的外部特征,对象的内部特征即处理能力的实行和内部状态,对外是不可见的,对象的内部状态只能由其自身改变。45、软件工程研究的内容主要包括:______技术和软件工程管理。标准答案:软件开发知识点解析:软件工程包括软件开发技术和软件工程管理。其中软件开发技术包括:软件开发方法学、开发过程、开发工具和软件工具环境,其主体内容是软件开发方法学:软件工程管理包括:软件管理学、软件工程经济学、软件心理学等内容。四、填空题(本题共10题,每题1.0分,共10分。)46、表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。标准答案:(x>-5)&&(x<5)知识点解析:本题考查基本逻辑表达,“整数x的绝对值大于5”时值为“假”,即整数x的绝对值小于等于5,也就是整数x要大于等于-5且要小于等于5。这里“且”用“与(&&)”表示,所以C语言表达式为:(x>-5)&&(x<5)。47、设y为血型变量,请写出描述“y是偶数”的表达式_____。标准答案:(y%2)==0知识点解析:因符合偶数的条件是对2取余为0,所以要描述y是偶数的表达式是(y%2)==0。48、下列程序的运行结果是_______。main(){intx=1,y=2,z=3;printf("%d,",x<y?y:x);primf("%d,",z<y?x++:y++);primf("%d,%d",x,y);}标准答案:2,2,1,3知识点解析:本题考查++,--运算符和条件运算符的使用。“表达式1?表达式2:表达式3”的功能是:表达式1的值若非0,则计算表达式2的值,且表达式2的值为最终结果;若表达式1的值为0,则计算表达式3的值,且为最终结果。本题中,x=1,y=2时,x<y成立,输出y的值2;y=2,z=3时,z<y不成立,执行y++,输出2后y值增1,所以最后一个输出x的值不变为1,y的值为增加后的3。49、下列程序段中循环体的执行次数是______。a=15;b=0do{b+=2;a-=2+b;}while(a>=0);标准答案:3知识点解析:本题考查do…while语句形式:do循环体while表达式首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环。第1次循环:b+=2,b=2,a-=2+b,a=11:第2次循环;b=4,a=5;第3次循环:b=6,a=-3,此时再判断循环条件不满足,退出循环。50、语句“int(*ptr)();”的含义是______是指向函数的指针,该函数返回一个血型数据。标准答案:ptr知识点解析:本题考查函数指针的概念。函数指针的定义格式是:类型标识符(叶旨针变量名)()。注:“类型标识符”为函数返回值的类型。51、下列程序的输出结果是______。#include<stdio.h>intt(intx,inty,intcp,intdp){cp=x*x+y*y;dp=x*x-y*y;}main(){inta=1,b=8,c=7,d=9;t(a,b,c,D);primf("%d,%d%d\n",c,D);}标准答案:79知识点解析:因为在调用子函数时进行的是数值传递,调用子函数并不能改变实参的值,所以经过调用子函数,c、d的值并没有发生变化还是原来的值。52、\13’在内存中占1个字节,"\12"在内存中占______个字节。标准答案:2知识点解析:’\13’:表示八进制数13表示的ASCII字符,是一个字符,占一个字节;而"\12"是个字符串,除了八进制数12表示的ASCII字符占一个字节外,还有在字符串的末尾加上串结束标志“’\0’”,所以共有两个字节。53、#define命令出现在程序中函数的外面,宏名的有效范围为______。标准答案:从定义到本源文件结束知识点解析:C语言规定,宏名的有效范围为从定义宏到本源程序结束。54、下列程序段的运行结果是______。charstr[]="ABCD",*p=str;printf("%d\n",*(p+3));标准答案:68知识点解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],*(p+3)指的是字符“D”,输出时是以“%d”格式输出的,即输出其相应ASCII码值68。55、下列程序中的数组a包括10个整数元素,分别将前项和后项之和存入数组b,并按每行4个元素输出数组bo请填空。#include<stdio.h>main(){inta[10],b[10],i;for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<9;i++)______;for(i=0;i<9;i++){if(i%4==0)printf("\n");printf("%3d",b[i]);}}标准答案:b[i]=a[i]+a[i+1]知识点解析:将数组a中元素a[i]与a[i+1]值相加后的值赋予数组b中元素b[i],即可实现将一个数组的前项和后项之和存入另一数组。国家二级(C语言)笔试模拟试卷第2套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、在计算机中,算法是指______。A、查询方法B、加工方法C、解题方案的准确而完整的描述D、排序方法标准答案:4知识点解析:计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:可行性、确定性、有穷性和拥有足够的情报。2、栈和队列的共同点是______。A、都是先进后出B、都是先进先出C、只允许在端点处插入和删除元素D、没有共同点标准答案:4知识点解析:栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈是一种“后进先出”的线性表;而队列是一种“先进先出”的线性表。3、已知二叉树BT的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是______。A、cedbaB、acbedC、decabD、deabc标准答案:1知识点解析:二叉树BT的后序遍历序列为dabec,故BT的根结点为C;而BT的中序遍历序列是debac,即遍历序列中最后一个结点为跟结点,说明BT的右子树为空。由BT的后序遍历序列和中序遍历序列可知BT的左子树(LST)的后序遍历序列和中序遍历序列分别为dabe和deba(树是递归定义的):故LST的根结点是e,在由LST的中序遍历序列可知其左子树为d。因此BT的前序遍历序列为cedba。4、在下列几种排序方法中,要求内存量最大的是______。A、插入排序B、选择排序C、快速排序D、归并排序标准答案:8知识点解析:快速排序的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩下的子表采用同样的方法,直到表空为止;归并排序是将两个或两个以上的有序表组合成一个新的有序表。5、在设计程序时,应采纳的原则之一是______。A、程序结构应有助于读者理解B、不限制goto语句的使用C、减少或取消注解行D、程序越短越好标准答案:1知识点解析:滥用goto语句将使程序流程无规律,可读性差:添加的注解行有利于对程序的理解,不应减少或取消;程序的长短要依照实际需要而定,并不是越短越好。6、下列不属于软件调试技术的是______。A、强行排错法B、集成测试法C、回溯法D、原因排除法标准答案:2知识点解析:调试的关键在于推断程序内部的错误位置及原因。主要的调试方法有强行排错法、回溯法和原因排除法。7、下列叙述中,不属于软件需求规格说明书的作用的是______。A、便于用户、开发人员进行理解和交流B、反映出用户问题的结构,可以作为软件开发工作的基础和依据C、作为确认测试和验收的依据D、便于开发人员进行需求分析标准答案:8知识点解析:软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。它不能方便开发人员进行需求分析。8、在数据流图(DFD)中,带有名字的箭头表示______。A、控制程序的执行顺序B、模块之间的调用关系C、数据的流向D、程序的组成成分标准答案:4知识点解析:在数据流图中,用标有名字的箭头表示数据流。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并且可以从外音陕体流向系统或从系统流向外部实体。9、SQL语言又称为______。A、结构化定义语言B、结构化控制语言C、结构化查询语言D、结构化操纵语言标准答案:4知识点解析:结构化查询语言(StructuredQueryLanguage,简称SQL)是集数据定义、数据操纵和数据控制功能于一体的数据库语言。10、视图设计一般有3种设计次序,下列不属于视图设计的是______。A、自顶向下B、由外向内C、由内向外D、自底向上标准答案:2知识点解析:视图设计一般有3种设计次序,它们分别是自顶向下、自底向上和由内向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以单独使用也可混合使用。二、选择题(1分)(本题共10题,每题1.0分,共10分。)11、能将高级语言程序转换成目标语言程序的是______。A、调试程序B、解释程序C、编译程序D、编辑程序标准答案:4知识点解析:用高级语言编写的程序称为“源程序”,而计算机只能识别和执行由0和1组成的二进制指令,所以高级语言必须先用—种称为“编译程序”的软件,把源程序翻译成二进制形式的“目标程序”。12、是构成C语言程序的基本单位。A、函数B、过程C、子程序D、子例程标准答案:1知识点解析:C程序是由函数构成的。一个C源程序至少包含一个main函数,也可以包含一个main函数和若干个其他函数,因此,函数是C程序的基本单位。13、可以在C语言中用做用户标识符的是______。A、voiddefineWORDB、as_b3_123IfC、for-abccasD、2cDoSIG标准答案:2知识点解析:C语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。另外还需要注意的是关键字不能作标识符。选项A中void,C中for都为关键字,D中2c以字母开头。14、下面语句的输出结果是______。printf("%d\n",strlen("\t\"\065\xff\n"));A、14B、8C、5D、输出项不合法,无正常输出标准答案:4知识点解析:在C语言中,以“\”开头的字符均为转义字符,其中“\”后可跟1~3位八进制数或在“\”后跟字母x及1~2位十六进制数,以此来代表一个特定的字符。15、下列程序的输出结果是______。#defineA100main(){inti=0,sum=0;do{if(i==(i/2)*2)continue;sum+=i;}while(++i<A);printf("%d\n",sum);}A、2500B、2050C、4D、0标准答案:1知识点解析:本题程序的功能是求1到99之间(包括1和99)所有奇数之和。程序中的while循环的终止条件为++i=100,在while循环体内,如果i是偶数,则执行continue,跳过这一次循环,执行下—次循环,否则求和和。最后输出的值是1到99之间(包括1和99)所有奇数之和(1+99)*50/2=2500。16、下列程序的输出结果是______。main(){inti=3;switch(i){case1:casc2:printf(("%d",i);case3:case4:break;defanlt:printf("OK");}}A、0B、3C、OKD、没有任何输出标准答案:8知识点解析:在题中,i的值为3,由于“case3:”后面没有break语句,所以继续向下执行“case4:”后面的语句,由于“case4:”后面的语句为break强行退出switch语句,所以,本题没有任何输出。17、出下列程序执行后的输出结果是______。mare(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,k=2;for(i]0;i<3;i++){printf(("%d",m[k][i]);}}A、456B、258C、369D、789标准答案:4知识点解析:根据二维数组的定义得出:m[0][0]=1,m[0][1]=4,m[0][2]=7,m[1][0]=2,m[1][1]=5,m[1][2]=8,m[2][0]=3,m[2][1]=6,m[2][2]=9,所以本题的输出是第3行的值m[2][0],m[2][0],m[2][2],即369。18、已知字母A的ASCII码值是65,字母a的ASCII码值是97,以下程序______。main(){chara=’A’;intb=20;printf(%d,%0",(a=a+a,a+b,B),a+’a’-’A’,B);}A、表达式非法,输出零或不确定值B、因输出项过多,无输出或输出不确定值C、输出结果为20,141D、输出结果为20,141,20标准答案:4知识点解析:本题中首先输出逗号表达式“a=a+a,a+b,b”的值,即20。然后以八进制的形式输出a+’a’-A’的值为97对应的八进制数141,由于最后一个表达式b没有对应输出格式的输出项表列就不会输出。19、下列程序执行后输出的结果是______。intd=1;fun(intp){intd=5;d+=p++;printf("%d,",D);}main(){inta=3;fun(A);d+=a++;printf("%d\n",D);}A、8,12B、9,13C、8,4D、9,5标准答案:4知识点解析:本题执行过程如下首先调用fun函数,使得实参a的值3传递给形参p,得到局部变量d=8,打印出局部变量d的值8;返回主函数执行“d+=a++”,此处的d为全局变量,所以d=1+3=4(由于本题是值传递,所以在函数fun中对p值的改变并不能引起a的改变),故本题的输出是8,4。20、已知下面的程序段,正确的判断是______。#defineA3#defineB(A)((A+1)*A)……inta=3;X=3*(A+B(7));A、程序错误,不允许嵌套定义B、X=93C、X=81D、程序错误,宏定义不允许有参数标准答案:4知识点解析:本题的宏定义是合法的,宏定义展开为3*(3+((A+1)*a))=3*(3+((7+1)*3))=81。三、选择题(2分)(本题共20题,每题1.0分,共20分。)21、有以下程序:#include<stdio.h>main(){charc[6];inti=0;for(;i<6;c[i]=getchar(),i++);for(i=0;i<6;i++)putchar(c[i]);printf("\n");}如果从键盘上输入:ab<回车>c<回车>def<回车>则输出结果为______。A、abcdefB、abcdC、abcdD、abcdef标准答案:4知识点解析:1.getchar():此函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。2.putchar():此函数的作用是向终端输出一个字符,也可以输出控制字符。本题在输入字符时,ab和c后面的回车符分别赋给了c[2]和c[4],所以,正确答案为C。22、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是______。A、地址传递B、单向值传递C、由实参传递给形参,再由形参传递给实参D、传递方式由用户指定标准答案:2知识点解析:语言规定,实参变量对形参变量的数据传递是“单向值传递”,只由实参传给形参。在内存中,实参单元与形参单元是不同的单元。调用结束后,实参单元仍保留并维持原值。23、以下程序#include<stdio.h>#include<string.h>main(){char*p1="abc",*p2="ABC",str[50]="xyz";strcpy(str+2,strcat(p1,p2));printf("%ss\n",str);}的输出是______。A、xyzabcABCB、zabcABCC、yzbcABCD、xyabcABC标准答案:8知识点解析:strcat(p1,p2)将字符串abcABC放到了*p1所指向的存储单元中;strcpy在本题将abcABC复制到str+2所指向的存储单元中,即覆盖原str数组中的字符z及其后的所有字符,故str的值为“xyabcABC”。24、下面程序main(){intx=100,a=10,b=20,ok1=5,ok2=0;if(a<b)if(b!=15)if(!ok1)x=1:elseif(ok2)x=10;x=-1;printf("%d\n",x);}的输出是______。A、-1B、0C、1D、不确定的值标准答案:1知识点解析:第一个判断值为真,过渡到下一个判断,第二个判断为真,过渡到第三个判断…如此循环,在打印输出语句的前一行,程序给变量x赋了值,为-1,所以,无论前期如伺变化,最后的x值依然为-1。25、下面程序main(){intx=32;printf("%d\n",x=x<<1);}的输出是______。A、100B、160C、120D、64标准答案:8知识点解析:<<是C语言中规定的左移运算符,例如,a=a<<2,这个语句即是将a的二进制数左移两位,左移一位相当于该数乘于2,左移两位相当于该数乘以2的2次方。所以,x<<1=32*2=64。26、以下程序的输出结果是______。#include<stdio.h>#defineFUDGE(y)2.84+y#definePR(a)printf("%d\n",(int)(a))#definePRINT1(a)PR(a);putchar(’\n’)main(){intx=2;PRINT1(FUDGE(5)*x);}A、11B、12C、13D、15标准答案:2知识点解析:在程序中如果有带实参的宏,则按#define命令行中指定的字符串从左到右进行置换,如果串中包含宏中的形参,则将程序语句中相应的实参代替形参。将实参带入已经定义的宏中,可以得出答案为“12”。27、以下程序段给数组所有的元素输入数据,请选择正确答案填入。#include<stdio.h>main(){inta[10],i=0;while(i<10)scanf("%d",______);::}A、a+(i++)B、&5[i+1]C、a+iD、&a[++i]标准答案:1知识点解析:a就是数组a的首地址,而a+x是数组中第x个元素的地址,所以在四个选项中,选项B和C只能输入一个数据,选项D不能给a[0]输入数据,只有A可以完成给数组所有的元素输入数据的任务。28、以下对枚举类型名的定义中正确的是______。A、enuma={one,two,three};B、enuma{one=9,two=1,three};C、enuma={"one","two","three"};D、enuma{"one","two","three"};标准答案:2知识点解析:声明枚举类型用enum开头。例如:enumweekday(sun,mon,tue,wed,thu,fri,sat);说明:1、在C编译中,对枚举元素按常量处理,同时可以改变他们的值。2、枚举值可以用来做判断比较。3、一个整数不能直接赋给一个枚举变量。29、字符(char)型数据在微机内存中的存储形式是______。A、反码B、补码C、EBCDIC码D、ASCII码标准答案:8知识点解析:将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的ASCII码值放到存储单元中。30、不能把字符串"Hello!"赋给数组b的语句是______。A、charb[10]={’H’,’e’,’l’,’l’,’o’,’!’};B、charb[10]={’h’,’e’,’l’,’l’,’o’,’!’};C、charb[10];strcpy(b,"Hello!");D、charb[10]="Hello!":标准答案:2知识点解析:在C语言中,大写字母和小写字母被认为是两个不同的字符,因此,“hello!”和“Hello!”是两个不同的字符串。31、下面程序的输出是______。mare(){intx=3y=6,a=0;while(x++!=(y=1)){a+=1;if(y<x)break;}printf("x=%d,y=%d,a=%d\n",x,y,a);}A、x=4,y=4,a=1B、x=5,y=5,a=1C、x=5,y=4,a=3D、x=5,y=4,a=1标准答案:8知识点解析:注意的是x++中x值的引用时,这里应当是先引用,后自加,具体执行过程如下:第一次while循环:条件为真,执行a=a+1=1此时,x的值已为4,判断y<x不成立,继续抽行循环;第二次while循环:条件为假,此时x的值已为5,退出while循环,执行printf。32、若有程序fun(inta,intb}{staticintc=0;c+=a+b;returnc;}main(){intx=5,y=3,z=7,r,r=fun(y,x+y),z);r=fun(xy);printf("%d\n",r);}上面程序的输出结果是_____。A、23B、15C、19D、18标准答案:1知识点解析:static声明的外部变量只限于彼本文件引用,而不能被其他文件引用。用static来声明一个变量的作用有:①对局部变量用static声明,则为该变量分配的空间在整个程序执行期间始终存在;②全部变量用static声明,则该变量的作用域只限于本文件模块(即被声明的文件中)。调用第一个fun,其两个实参的值为(3,5+3)与7即8与7,在函数fun执行结束返回15。第二次调用fun时,由于static为静态类型,其值保留,执行fun(5,3)后,其返回值为23,故选A。33、下面程序的输出是______。main(){char*s="12134211";intv1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){default,v4++;case’1’:v1++;case’3’:v3++;case’2’:v2++;}printf("vl=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);}A、v1=4,v2=2,v3=1,v4=1B、v1=4,v2=9,v3=3,v4=1C、v1=5,v2=8,v3=6,v4=1D、v1=8,v2=8,v3=8,v4=8标准答案:4知识点解析:当switch后面括弧内的表达式的值与某一个case后面的常量的表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。34、fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是______。A、只读B、追加C、读或读写D、以上均正确标准答案:8知识点解析:fgetc函数是指从指定的文件读入一个字符,该文件必须是以读或读写方式打开的。fgetc函数的调用形式为:ch=fgetc(fp);。35、若有下面的说明和定义,则sizeof(structaa)的值是______。structaa{intr1;doubler2;floatr3;unionuu{charul[5];longu2[2]}ua;}mya;A、30B、29C、24D、22标准答案:8知识点解析:结构体变量所占内存长度是各成员占的内存长度之和,每个成员分别占有自己的内存单元;共用伸变量所占的内存长度等于最长的成员的长度。结构件变量aa中,成员r1占2个字节,r2占8个字节,r3占4个字节,共用体ua占8个字节,所以共占用2+8+4+8=22个字节。36、下面程序的输出是______。main(){intk=11;printf("k=%d,k=%x\n",k,k,k);}A、k=11,k=12,k=11B、k=-11,k=13,k=13C、k=11,k=013,k=0xbD、k=11,k=13,k=B标准答案:8知识点解析:在C语言格式字符的输出中,“%d”是以带符号的十进制形式输出整数;“%o”是以8进制无符号形式输出整数(不输出前导符0);“%x”是以16进制无符号形式输出整数(不输出前导符0x)。37、下面程序段中C的二进制值是______。chara=3,b=6.c:c=ab<<1;A、1011B、1111C、11110D、11100标准答案:2知识点解析:C语言提供六种位运算符,按优先级由高到低的顺序分别为:取反(~)、左移(<<)和右移(>>)、按位与(&)、按位异或(∧)、按位或(|)。所以表达式c=ab<<1先运算b<<1得二进制为00001100,再运算a∧00001100,最后得二进制值00001111。38、以下叙述中正确的是______。A、C语言比其他语言高级B、C语言可以不用编译就能被计算机识别执行C、C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D、C语言出现的最晚,具有其他语言的一切优点标准答案:4知识点解析:计算机语言分为低级语言、汇编语言和高级语言,C语言属于高级语言,但并不是说C语言比其他语言高级,所以选项A错误;除了低级语言外,其他各种语言都必须编译成能被计算机识别的二进制数才能执行,选项B错误;C语言出现在1972年到1973年间,并不是出现最晚的语言,所以选项D也是错误的。39、下列可用于C语言用户标识符的一组是______。A、voiddefineWORDB、a3_b3_123CarC、For-abcIFCaseD、2aDOsizeof标准答案:2知识点解析:C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线,所以排除C和D。C语言还规定标识符不能为C语言的关键字,从而选项A(void是关键字)也是错误的。40、以下程序运行后,输出结果是______。main(){char*d[]={"ab","cde"};printf("%x",d[1]);}A、cdeB、字符C的ASCII码值C、字符c的地址D、出错标准答案:4知识点解析:指针数组中的每一个元素都相当于一个指针变量。一维指针数组的定义形式为;类型名*数组名[数组长度],在本题main函数中定义指针数组d,它有两个元素,其初值分别是“ab”、“cde”的首地址。d[1]的值为"cde”的首地址。%x是指以十六进制数形式输出整数。四、公共基础填空题(本题共5题,每题1.0分,共5分。)41、在数据的存储结构中,不仅需要存储各数据元素的信息,还要存放各元素之间______的信息。标准答案:前后件关系知识点解析:在数据存储结构中,除了要存储数据,还要存储数据的前后件关系,对于顺序存储的数据结构,前后件之间的关系,是通过存储空间的位置来实现的,而对于链式存储来说,数据元素之间的前后件关系是通过指针来实现的。42、按照“先进先出”的原则组织数据的结构是______。标准答案:队列知识点解析:队列是一种特殊的线性表,只允许在表的一端插入元素,在表的另一端删除元素,插入元素的一端叫做“队尾”,删除元素的一端叫做“队头”,先插入的元素先被删除,是按先进先出的原则组织数据的。43、深度为5的满二叉树中,叶子结点的个数为______。标准答案:16知识点解析:满二叉树的叶子结点都在最后一层,即第4层,且第4层的结点达到最大数,即25-1=16。44、在面向对象的方法中,______描述的是具有相似属性与操作的一组对象。标准答案:类知识点解析:在面向对象的方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。45、Jackson方法是一种面向______的结构化方法。标准答案:数据结构知识点解析:Jackson方法是一种结构化分析方法,它是一种面向数据结构的结构化方法。五、填空题(本题共10题,每题1.0分,共10分。)46、若x和a均是int型变量,则计算完x=(a=4,6*2)后的x值为______。标准答案:12知识点解析:x=(表达式1,表达式2,…)的形式,结果为最后一个表达式的值:x=(a=4,6*2)=2*6=12。47、若a是int型变量,则下列表达式的值为______。(a=2*3,a*2),a+4标准答案:10知识点解析:此题考查逗号表达式。逗号表达式的值是最后一个表达式的值,所以本题的返回值是a+4。前面已经给a赋值6,所以追回值a+4=6+4=10。48、下列程序段是从键盘输入的字符中统计小写字母的个数,用换行符结束循环。请填空。intn=0,c;c=getchar();while(c!=’\n’){if(______)n++;}标准答案:c>=’a’&&c<=’z’知识点解析:小写字母在内存中以ASCII的形式存入,且从a到z依次递增,所以可以直接用c>=’a’&&c<=’z’判断是不是小写字母;c!=’\n’判断是用换行符结束循环。49、下列程序的运行结果是______。#include<stdio.h>main(){inta,b,c,n;a=2;b=0;c=1;n=1;while(n<=3){c=c*a;b=b+c;++n;}printf("b=%d",B);}标准答案:b=14知识点解析:分析程序可知,n的初始值为1,因此,while(n<=3)循环3次。第1次:c=c*a=2:b=b+c=2;n=2。第2次:c=c*a=4;b=-b+c=6;n=3。第3次;c=c*a=8:b=b+c=14。当n=4时,判断条件不满足,退出循环。50、下列程序的输出结果是______。main(){inti=0,a=0;while(i<20){for(;;){if((i%10)==0)break;elsei--;}i+=11;a+=i;}printf("%d\n",A);}标准答案:32知识点解析:while(表达式)的功能是:首先计算表达式的值,若为真,则执行循环体语句,执行完毕,再计算表达式的值,若仍为真,则重复执行循环体语句,直到表达式的值为假时,结束while语句的执行,继续执行while语句后面的语句:i=0时满足循环条件,也满足if的条件,执行语句得i=11,a=11,第2次循环不满足if的条件,执行i--,i=10,执行i+=11;a+=i后,得i=21,a=32,不满足i<20,循环结束。51、下列程序的运行结果是______。#include<stdio.h>longfunc(intx){longp;if(x==0||x==1)return(1);p=x*func(x-1);return(p);}main(){printf("%d\n",func(4));}标准答案:24知识点解析:本题考查函数的循环调用。p=x*func(x-1),当x=4时,不满足if语句的条件,p=4*func(3),x=3也不满足条件,则func(3)=3*func(2),func(2)=2*func(1),x=1满足条件return(1),则输出结果为4*3*2*1=24。52、下列程序将二维数组a的行和列元素互换后存放到另一个二维数组b中。请填空。main(){inta[2][3]={{1,2,3),{4,5}},b[3][2],i,j;for(i=0;i<2;i++){for(j=0;j<30++)______;}}标准答案:b[j][i]=a[i][j]知识点解析:本题考查二维数组的基本知识。它是要将一个二维数组,的行和列元素互换后存放到另一个二维数组b中,只要将数组a的行标和列标互换,然后赋给数组b即可。53、下列程序的运行结果是______。#include<stdio.h>main(){intfun();fun();}fun(){staticinta[4]={1,2,3,4);inti:for(i:0;i<4;i++)a[i]+=a[i];for(i=0;i<4;i++)printf("%d,",a[i]);printf("\n");}标准答案:2,4,6,8知识点解析:子函数fun()的功能是将数组a中的元素都自加一遍,然后仍然将结果存在原数组中,其实就是将数组a的每个元素都变为原来的2倍,然后输出。在主程序中首先通过intfun()定义了子函数fun(),然后再调用fun()。54、设有下列程序:#include<stdio.h>#include<string.h>main(){inti;chars[10],t[10];gets(t);for(i=0;i<2;i++){gets(s);if(strcmp(t,s)<0)strcpy(t,s);}printf("%s\n",t);}程序运行后,从键盘上输入(<CR>代表回车符):DEF<CR>BADEF<CR>QTHRG<CR>,则程序的输出结果是______。标准答案:QTHRG知识点解析:函数strcmp(t,s)用来比较t和s所指字符串的大小,若t>s,则函数值大于0;若t=s,则函数值等于0:若t<s,则函数值小于0。函数strcpy(t,s)的功能是,把字符数组s所指字符串的内容复制到字符数组t所指存储空间中。本题中,t[10]="CDEF"。第一次循环,s[10]="BADEF",if语句的控制条件strcmp(t,s)<0不成立,接着执行第二次循环,s="QTHRG",if语句的控制条件strcmp(t,s)<0成立,执行下列的语句,将字符数组s所指字符串的内容复制到字符数组t所指存储空间中,然后输出字符数组t。55、下列程序的运行结果是______。#defineP(A)printf("%d",A)main(){intj,a[]={1,2,3,4,5,6,7),i=5;for(j=3;j>1;j--){switch(j){case1:case2:P(a[i++]);break;case3:P(a[--i]);}}}标准答案:55知识点解析:分析程序执行过程,第一次循环时,j=3,i=5。因为switch(3),所以执行case3,调用P(a[--i])=P(a[4])=P(5),输出5;第二次循环时,j=2,i=4,因为switch(2),所以执行case2,调用P(a[i++])-P(a[4])=P(5),输出5,之后i自加等于5。国家二级(C语言)笔试模拟试卷第3套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、算法的空间复杂度是指A、算法程序的长度B、算法程序中的指令条数C、算法程序所占的存储空间D、执行算法需要的内存空间标准答案:D知识点解析:算法的复杂度主要包括算法的时间复杂度和空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度是指执行这个算法所需要的内存空间。2、对线性表进行二分法检索,其前提条件是()。A、线性表以顺序方式存储,并按关键码值排好序B、线性表以顺序方式存储,并按关键码的检索频率排好序C、线性表以链式方式存储,并按关键码值排好序D、线性表以链式方式存储,并按关键码的检索频率排好序标准答案:A知识点解析:对线性表进行二分法检索,要求线性表是按顺序方式存储的,并按关键码值的大小排好序,而不是按关键码的检索频率排序。3、关系数据库管理系统能实现的专门关系运算包括()。A、排序、索引、统计B、选择、投影、连接C、关联、更新、排序D、显示、打印、制表标准答案:B知识点解析:关系数据库管理系统的专门关系运算包括选择运算、投影运算和连接运算。4、对长度为n的线性表进行顺序查找,在最坏的情况下需要比较的次数为()。A、125B、n/2C、nD、n+1标准答案:4知识点解析:对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止.在最坏的情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为n。5、下列程序(注意:ch[0]在低字节,ch[1]在高字节)的输出结果是______。#include<stdio.h>unionpw{inti;charch[2];}a;main(){a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);}A、13B、14C、208D、209标准答案:1知识点解析:暂无解析6、下述关于数据库系统的叙述中正确的是A、数据库系统减少了数据冗余B、数据库系统避免了一切冗余C、数据库系统中数据的一致性是指数据类型一致D、数据库系统比文件系统能管理更多的数据标准答案:1知识点解析:数据库系统的数据具有高共享性和低冗余性,但不能完全避免数据冗余;数据的一致性是指在系统中同一数据的不同出现应保持相同的值。7、下列有关数据库的描述,正确的是()A、数据处理是将信息转化为数据的过程B、数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变C、关系中的每一列称为元组,一个元组就是一个字段D、如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字标准答案:8知识点解析:暂无解析8、关系表中的每一行称为一个()。A、元组B、字段C、属性D、码标准答案:1知识点解析:在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系。关系表中的每一行称为一个元组。9、对长度为n的线性表进行顺序查找,在最坏的情况下需要比较的次数为()。A、125B、n/2C、nD、n+1标准答案:4知识点解析:对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏的情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为n。10、在Windows环境下,单击当前窗口中的按钮“”,其功能是A、将当前应用程序转为后台运行B、退出Windows后再关机C、终止当前应用程序的运行D、退出Windows后重新启动计算机标准答案:C知识点解析:在Windows环境下,单击当前窗口中的按钮“x”,其功能是终止当前应用程序的运行,关闭当前窗口。二、选择题(1分)(本题共11题,每题1.0分,共11分。)11、若x=2,y=3,则x&y的结果是()。A、0B、2C、3D、5标准答案:B知识点解析:本题主要考查按位与(&)运算的知识点。“&”是对两个运算量相应的位进行逻辑与,“&”的规则与逻辑与“&&”相同。x=2的二进制为00000010,y=3的二进制为00000011,x&y=00000010,转化为十进制即为2。12、若有以下定义(设int类型变量占2个字节)inti=8,j=9;则以下语句:printf(“i=%%d,j=%%%d\n”,i,j);输出的结果是()。A、i=8,j=9B、i=%d,j=%8C、i=%d,j=%dD、8,9标准答案:B知识点解析:本题考查printf函数的格式。printf函数中格式说明符之前插入的任何字符都按原样输出。对于printf函数,有两个%说明,第一个%后面的内容要按原样输出。13、下列程序的运行结果是()。main(){inta=-5,b=1,c=1;intx=0,y=2,z=0;if(c>0)x=x+y;if(a<=0){if(b>0)if(c<=0)y

温馨提示

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

评论

0/150

提交评论