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

下载本文档

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

文档简介

国家二级(C语言)笔试模拟试卷7(共9套)(共480题)国家二级(C语言)笔试模拟试卷第1套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、结构化分析方法是面向()的自顶向下、逐步求精进行需求分析的方法。A、对象B、数据结构C、数据流D、目标标准答案:C知识点解析:结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。2、对线性表进行二分法检索,其前提条件是()。A、线性表以顺序方式存储,并按关键码值排好序B、线性表以顺序方式存储,并按关键码的检索频率排好序C、线性表以链式方式存储,并按关键码值排好序D、线性表以链式方式存储,并按关键码的检索频率排好序标准答案:A知识点解析:对线性表进行二分法检索,要求线性表是按顺序方式存储的,并按关键码值的大小排好序。3、结构化程序设计的3种结构是()。A、顺序结构、选择结构、转移结构B、分支结构、等价结构、循环结构C、多分支结构、赋值结构、等价结构D、顺序结构、选择结构、循环结构标准答案:D知识点解析:结构化程序设计的主要观点是采用自顶向下、逐步求精的程序设计方法;任何程序都可由顺序、选择和循环3种基本控制结构构造。4、已知数据表A中每个元素距其最终位置不远,为了节省时间,应采用的算法是()。A、堆排序B、直接插入排序C、快速排序D、直接选择排序标准答案:B知识点解析:当数据表A中每个元素距其最终位置不远,说明数据A按关键字值基本有序。在待排序数据基本有序的情况下,采用插入排序所用的时间最少。5、在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是()。A、数据库系统B、文件系统C、人工管理D、数据项管理标准答案:A知识点解析:数据库系统的一个重要目标就是使程序和数据真正分离,数据独立性包括数据的物理独立性和数据的逻辑独立性。相对文件系统人工管理和数据项管理,数据库系统的数据独立性大大增加。6、设有如图所示二叉树,对此二叉树后序遍历的结果为()。A、ZBTYCPXAB、ATBZXCYPC、TZBACYXPD、ATBZXCPY标准答案:A知识点解析:后序遍历首先访问左子树,然后右子树,最后根结点,即左右根。故该二又树的前序遍历结果为“ATBZXCYP”。后序遍历和中序遍历的结果分别为“ZBTYCPXA”和“TZBACYXP”。7、链表不具有的特点是()。A、不必事先估计存储空间B、可随机访问任意元素C、插入、删除不需要移动元素D、所需空间与线性表长度成正比标准答案:B知识点解析:链表采用的是链式存储结构,它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,插入、删除不需要移动数据元素。但是链式存储结构也有不足之处:每个结点中的指针域需额外占用存储空间,它是一种非随机存储结构。8、在数据库设计中,将E-R图转换为关系模式的过程属于()。A、需求分析阶段B、逻辑设计阶段C、概念设计阶段D、物理设计阶段标准答案:B知识点解析:数据库设计阶段主要包括需求分析、概念设计、逻辑设计和物理设计。逻辑设计的主要工作是将E-R图转换为关系模式。9、C语言可执行程序的开始执行点是()。A、包含文件中的第一个函数B、程序中第一个函数C、程序中的main()函数D、程序中第一条语句标准答案:C知识点解析:每个C程序有且只有一个主函数main(),且程序必须从main()函数开始执行,并在main()函数中结束。10、在C语言程序中可用做用户标识符的是()。A、void123BBNB、aa_abccasC、as+b3-123IfD、6fDoSIG标准答案:B知识点解析:C语言规定.标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线,不能使用关键字和数字,A中vold,C中if,D中Do,都属于关键字。二、选择题(1分)(本题共10题,每题1.0分,共10分。)11、下列叙述中正确的是()。A、break语句只能用于switch语句体中B、continue语句的作用是使程序的执行流程跳出包含它的所有循环C、break语句只能用在循环体内和switch语句体内D、在循环体内使用break语句和continue语句的作用相同标准答案:C知识点解析:break只能在循环体内和switch语句内。如果break出现在循环体的switch语句体内时,表示跳出该switch语句体,但并不能中止循环体的执行。12、已知大写字母A的ASCII码是65,小写字母a的ACSII码是97。下列能将变量c中的大写字母转换为对应小写字母的语句是()。A、c=(c-’A’)%26+’A’B、c=c+32C、c=c-’A’+’A’D、c=(’A’+C)%26-’a’标准答案:B知识点解析:根据ASCII码可知大写字符A与小写字符a的ASCII码相差32,而D中应该是加上’a’,选项A和C左侧的表达式都是大写字符C与大写字符A的差与’a’的ASCII代码的和就是小写字符c的ASCII代码。13、下列叙述中正确的是()。A、在赋值表达式中,赋值号的左边既可以是变量,也可以是任意表达式B、实型变量中允许存放整型数C、若a和b类型相同,在执行赋值a=b后,b中的值将放入a中,但b中的值不变D、在c程序中,求余算符“%”两边的类型相同时才能进行运算标准答案:D知识点解析:选项A,在赋值表达式中,赋值号的左边只能是变量或者是代表某个存储单元的表达式,不能是任意表达式,右边也不得出现表达式;选项B中,整型变量中只能存放整型数,但实型变量中能存放实型数,也能存放整型数;选项C,表达式a=b的意思是把变量b的值赋给变量a,从而覆盖a中原来值;选项D,要求取余运算符"%"两边的类型均为整型。14、若有说明“chars1[30]="abc",s2[]="defghi";”,则在使用函数stcat(s1,s2)后,结果是()。A、s1的内容更新为abedefghiB、s1的内容更新为defghi\0C、s1的内容更新为defghiabc\0D、s1的内容更新为abcdefghi\0标准答案:D知识点解析:strcat(s1,s2)函数的功能是把s2字符串连接到s1字符串的末尾,要保证s1有足够的空间容纳下连接后的字符串。15、已知i、j、k为int型变量,若要从键盘输入2、3、4,使i、j、k的值分别为2、3、4,下列正确的输入语句是()nA、seanf("%3d,%3d,%3d",&i,&i,%k);B、scanf("%d,%d,%d",&i,&j,&k);C、scanf("%d%d%d",&i,&j,&k);D、scanf("i=%d,i=%d,k=%d",&i,&j,&k);标准答案:B知识点解析:本题主要考查scanf函数的使用,scanf函数的调用形式是:scanf(格式字符串,输入项地址表)。“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。16、下列程序的执行结果是()。#includemain(){inta,b,C;a=b=2,c=1;c=(a++)-1;printf("%d,%d",a,c);c+=-a+++(++b);printf("%d,%d",a,c);}A、3,14,1B、3,14,2C、2,04,1D、2,14,1标准答案:A知识点解析:本题主要考查自加减运算符(++,--)的使用。①如果作为前缀变量“++a,--a”,在使用a之前,先使a的值加1或者减1,再使用表达式的值参与运算;②后缀变量“a++,a--”,先使用表达式的值参与运算,在使用a之后,再使i的值加1或者减1。在本题中计算表达式c=(a++)-1时先使用a的值进行计算,结果为c=2-1=1,然后将a的值加1,即执行完此旬后a的值是3;表达式c+=-a+++(++b)也可写成c=c+(-a++)+(++b),c=1+(-3)+3=1,此时a=4,b=3。17、有以下程序:main(){inta=0,b=0;a=10;/*给a赋值b=20;给b赋值*/printf("a十b=%d\n",a+b);//输出计算机结果}程序运行后的输出结果是()。A、a+b=10B、a+b=30C、30D、出错标准答案:A知识点解析:本题中/*……*/为多行注释,所以可知b=20为注释语句,在程序运行时不起作用,b仍为0,所以本题中A正确。18、有以下程序:intfun(intx,inty){return(x+y);}main(){inta=1,b=2,c=3,sum;sum=fun((a++,b++,a+b),c++);printf("%d\n",sum);}执行后的输出结果是()。A、6B、7C、8D、9标准答案:C知识点解析:sum=fun((a++,b++,a+b),c++)中a++,b++,a+b为逗号表达式,运算后取a+b的值为5,c++为3,故函数调用后输出结果为8。19、有以下程序:main(){inta=0,b=10,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,1,2,0B、0,0,0,3C、i,1,2,0D、编译有错标准答案:D知识点解析:语法错误。else与if之间不应再用其他语句,如果满足if条件,则继续执行if后面的语句;不满足就执行else语句。20、在16位编译系统上,若有定义“inta[]={10,20,30},*p=&a;”,当执行“p++;”后,下列说法错误的是()。A、p向高地址移了一个字节B、p向高地址移了一个存储单元C、p向高地址移了两个字节D、p与a+1等价标准答案:A知识点解析:因为p是整型的指针变量,因此其移动一个位置即两个字节,故选择A选项。三、选择题(2分)(本题共20题,每题1.0分,共20分。)21、执行下面的程序后,a的值为()。main(){inta,b;for(a=1,b=1,a<=10;a++){if(b%3==1){b+=3;continue;}b-=5;}}A、7B、8C、9D、10标准答案:D知识点解析:本题考查continue的用法continue语句的作用结束本次循环,直接进行下次循环。所以在程序中,只有当a=10时,才返出循环,故选择D选项。22、下列叙述中正确的是()。A、用E—R图能够表示实体集之间一对一的联系、一对多的联系、多对多的联系B、用E—R图只能表示实体集之间一对一的联系C、用E—R图只能表示实体集之间一对多的联系D、用E—R图表示的概念数据模型只能转换为关系数据模型标准答案:A知识点解析:用E-R图可以描述实体及其相互之间的联系,还可以描述多个实体集之间的联系和一个实体集内部实体之间的联系,用E-R图表示的概念敛据模型不仅能转换为关系数据模型,还可以转换为其他数据模型,如网状模型和层次模型等。所以A的说法正确。23、若有运算符:>、=、<<、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为()。A、%、sizeof、>、<<、=B、sizeof、%、>、=、<<C、sizeof、<<、>、%、=D、sizeof、%、<<、>、=标准答案:D知识点解析:主要考查运算符的优先级。sizof的优先级最高,其次是%<<>,优先级最低的是“=”。24、若变量a,b已正确定义,且b已正确赋值,则合法的语句是()。A、b=double(b);B、(int)a=(int)b;C、a=a++=5;D、a=double(b);标准答案:B知识点解析:在C语言中规定进行强制类型转换的格式是:(类型名)变量名;并且给表达式赋值。25、执行下列程序中的输出语句后,a的值是()。main(){inta;printf("%d\n",(a=2*3,a*5,a+7));}A、17B、37C、6D、13标准答案:C知识点解析:本题考查逗号表达式。程序输出时输出一个%d,所以输出第一个。的值与后续无关。26、运行下列程序时,若输入的数据为“1,2,3”,则输出结果是()。main(){floata,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a<b){t=a;a=b;b=t;}if(a<c){t=a;a=c;c=t;}it(b<c){t=b;b=c;c=t;)printf("%f\n%f\n%f\n",a,b,c);}A、1.002.003.00B、1.003.002.00C、132D、3.000002.000001.00000标准答案:D知识点解析:本题考察语句。第1个if语句,如果a<b,则a与b交换;第2个if语句,如果a<c,则a与c交抉;第3个if语句,如果b<c:则b与c交换。3个if语句结合起来实现的功能就是a、b、c按从大到小排序。27、设有程序段:intk=12:while(k=1)k=k-1;则下列描述中正确的是()。A、while循环执行10次B、循环是无限循环C、循环体语句一次也不执行D、循环体语句执行一次标准答案:C知识点解析:本题考查while,while循环表达式k=1是个赋值表达式而不是逻辑表达式,k的初值为12不符合循环条件,所以循环体一次也不执行。28、在执行完下列的C语句段之后,则B的值是()。chara=’A’;intb;B=((34&&56)&&(a<’b’));A、0B、1C、TRUED、FALSE标准答案:B知识点解析:本题考查3个知识点:将一个字符赋给一个字符变量时,是将该字符对应的ASCII码存储到内存单元中;常见ASCII码的值如A和a;只要逻辑与运算符&&的两个运算对象都为真时,返回值就是1。29、有下列函数定义:fun(floath){printf("%f,%f\n",h,h*h);}该函数的类型是()。A、int类型B、float类型C、vold类型D、函数无类型说明,定义有错标准答案:A知识点解析:本题考查函数值的类型,在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型(int)处理。30、有下列程序段:intn,t=1,S=0;scanf("%d",&n);do{s=s+t;t=t-2;}while(t!=n);为使此程序段不陷入循环,从键盘输入的数据应该是()。A、任意正奇数B、任意负偶数C、任意正偶数D、任意负奇数标准答案:D知识点解析:本题主要考查do-whlie循环,因为变量t的初始值等于1,经过第一次do-while循环后。执行t=t-1这条语句一次,所以变量t的值为-1,判断关系表达式t!=n是否成立,如果关系表达式成立,则执行第二次循环,如果关系表运式不成立,退出循环。由此可见,只要输入变量n的值为负奇数,则一定会使t==n成立,故退出do-while循环。31、若有说明语句:double*p,a;则通过scanf语句正确给输入项读入数据的程序段是()。A、*p=&a;scanf("%if",p);B、*p=&a;scanf("%f",p);C、p=&a;scanf("%1f",*p);D、p=&a;scanf("%1f",p);标准答案:D知识点解析:double*p,a定义了一个指向双精度型的指针变量p和双精度型变量a,p=&a表示将变量a的地址赋给指针变量p;scanf("%1f",p)表示用键盘输入的数赋给指针变量p所指向的地址单元中,scanf()函数要求在输入double。型数据。格式控制符必须用%1f。否删,数据不能正确输入。所以选项D正确。32、下列程序的输出结果是()。#includemain(){inta[2][3]={{1,2,3),{4,5,6}},(*p)[3],i;p=a:for(i=0;i<3;i++){if(i<2)p[1][i]=p[1][i]-1;elsep[1][i]=1;}printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}A、8B、7C、12D、9标准答案:B知识点解析:本题考查for循环及if…else语句嵌套,第1次执行for循环,p[1][0]=p[1][0]=p[1][0]-1=3;第2次执行for循环。p[1][1]=p[1][1]-1=4;第3次执行for循环,p[1][2]=1,最后输出的是a[0][1]+a[1][1]+a[1][2]=2+4+1=733、执行下列程序后,输出的结果是()。#include#defineS(X)X*Xvoidmain(){inta=9,k=3,m=2;a/=S(k+m)/S(k+m):printf("%d",a);}A、1B、4C、9D、0标准答案:D知识点解析:本题主要考查带参数的宏定义,过程如下:出于定义为define(x)x*x没有括号优先级,所以:a=a/(S(k+m)/S(k+m))=a/(k+in*k+m/k+m*k+m)=9/(3+2*3+2/3+2*3+2)=0。34、设x=015,则x=x^017的值是()。A、00001111B、11111101C、00000010D、11000000标准答案:C知识点解析:本题考查按位异或运算,异或就是相同为0,不同为1(化为二进制00001101),017的二进制为000001111,两者异或结果为00000010。35、若fp是指向某文件的指针,且尚未读到文件末尾,则函数feof(fp)的返回值是()。A、EOFB、-1C、非零值D、0标准答案:D知识点解析:本题考查feof(tp)函数,其功能是:测试所指的文件的位置指针是否已达到文件尾,如果已达到文件尾,则函数返回非0值:否则返回0,表示文件未结束。36、设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句:if(a<b)if(c==d)y=0;elsey=1;该语句所表示的含义是()。A、y=0,a<b且c=dy=1,a≥bB、y=0,a<b且c=dy=1,a≥b且c≠dC、y=0,a<b且c=dy=1,a<b且c≠dD、y=0,a<b且c=dy=1,c≠d标准答案:C知识点解析:语句“if(c==d)y=0:elsey=1;”是if(a<b)语句的一个子句。所以整个语句表达式的意思是:在a<b的情况下,如果c=b.则y=0否,否则y=1;如果a<b,则执行第2个语句。如果c等于d,那么y=0,如果c不等于d。那么y=1,所以,选项C为正确答案。37、下列程序的运行结果是()。#ineludevoidmain(){ints=0,k;for(k=7;k>1;k--){switch(k){case1:case4:case7:s++;break;case2:case3:case6:break;case0:case5:s+=2;break;}}printf("s=%d",s);}A、s=3B、s=4C、s=5D、无输出结果标准答案:B知识点解析:运行程序,当k=7时switch(7)执行case:7,s++后s=1,break跳出。k--,k=7继续循环switch(6),执行case6;直接跳出循环,k--变成5,继续循环switch(5),执行case5后面的语句s+=2,也相当于s=s+2,此时s为3,break跳出,k变为4,继续循环,执行case4为空.继续执行case7;s++为4跳出循环,k--变为3,继续循环,执行case3,空语句住下执行case6,跳出,k--为2,继缕循环,执行cane2;宅语句往下执行case3,空语句再执行case7,跳出循环,k--为1不符合循环,退出,此时s=4。38、若i、j已定义成int型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A、20B、24C、25D、30标准答案:B知识点解析:本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的循环都要使j~0到3,j=4时不符合,所以退出j循环;然后i城1,j仍然要从0~3,j=4时退出j循环直到i变成0,退出i循环。第一条for语句执行6次,第二条:for语句执行4次,所以内循环体执行6*4=24次。39、下列叙述中正确的是()。A、只能在循环体内和switch语句体内使用break语句B、cotinue语句的作用是结束整个循环的执行C、在循环体内使用break语句或continue语句的作用相同D、从多层循环嵌套中退出时,只能使用goto语句标准答案:A知识点解析:本题考查循环跳出的知识点:①break语句可以出现在switct循环体内及语句体内,它的作用是跳出循环体,不能用于其他的语句;②continue语句的作用是结束本次循环,即跳过循环体中下面尚未执行的语句,而接着判定循环象僻是否成立,确定下一次循环是否继续执行,执行contiune语句不会使整个循环终止;③循环体内使用break语句会使循环提前终止;④从多层循环、嵌套中退出时,可以使用goto语句或者break语句。40、有以下程序:#includevoidWriteStr(char*fn,char*str){FILE*fp;fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}main(){WriteStr("t1.dat","start");WriteStr("t1.dat","end");)程序运行后,文件t1.dat中的内容是()。A、startB、endC、startendD、endrt标准答案:B知识点解析:用”w”方武打开文件,意思是如果文件名相同则覆盖原来的文件,所以当再盘输入时覆盏了第一个次的内容,B选项正确。四、公共基础填空题(本题共5题,每题1.0分,共5分。)41、全面支持软件开发过程的软件工具集合称为__________。标准答案:软件工程环境。知识点解析:本题考查对软件工程的理解,软件工程环境被称为软件开发环境,全面支持软件开发过程的软件工具集合。42、数据模型分为格式化模型与非格式化模型,层次模型与网状模型属于__________。标准答案:格式化模型。知识点解析:层次模型可以看成是网状模型的特例,都是格式化模型。43、冒泡排序算法在最好的情况下元素交换次数为__________次。标准答案:0。知识点解析:冒泡排序的思想:若待排序的初始序列为正序序列,则只需进行一趟排序,在排序过程中进行n-1次关键字间的比较,且不移动和交换记录,这种情况是冒泡排序的最好情况,故冒泡排序算法在最好的情况下的元素交换次数为0次。44、若想通过以下输入语句给a赋予1,给b赋予2,则输入数据的形式应该是__________。inta,b;scanf("a=%d,b=%d",&a,&b);标准答案:a=1,b=2。知识点解析:scanf函数在输入数据时,输入变量必须和格式控制符统一,因此填a=1,b=2。45、数据的独立性分为逻辑独立性与__________。标准答案:物理独立性。知识点解析:本题考查数据的独立性,数据的独立性是指数据和应用程序相互独立,分为物理独立性和逻辑独立性。其中物理独立性是指数据的物理结构(包括存储结构、存取方式)改变时,不需要修改应用程序,而逻辑独立性是指当逻辑结构改变时,不需要修改应用程序。五、填空题(本题共8题,每题1.0分,共8分。)46、在关系运算中,__________运算是在指定的关系中选取所有满足给定条件的元组,构成一个新的关系,而这个新的关系是原关系的一个子集。标准答案:选择。知识点解析:根据定义,在关系运算中,选择运算是在指定的关系中选取所有满足给定条件的元组,构成一个新的关系,而这个新的关系是原关系的一个子集。47、在以下程序运行时若从键盘输入:102030<回车>,输出结果是__________。#includemain()(inti=0,j=0,k=0;scanf("%d%*d%d",&i,&j,&k);printf("%d%d%d\n",i,j,k);}标准答案:10300。知识点解析:“*”的作用是:输入项在输入时不赋给相应的变量,因此20不赋给j,而把30赋给j,习此结果为10300。48、以下程序运行后的输出结果是_________。main(){inti=10,j=0;do{j=j+i;i--;}while(i>2):printf("%d\n",j);}标准答案:52。知识点解析:当i=10时,执行“j=j+i;i--;”后j为10。i为9,此时while循环成立;接着当i=9时,执行i=j+i;i--;后j为19,i为8,此时while循环成立,接着执行do语句,当i为3时,此时while循环成立,接着执行do语句;执行“j=j+i;i--;”后i为52,i为2,此时while循不成立,退出循环输出j的值为52,故填52。49、以下程序的输出结果是_________。#includeintfun(intx,inty){staticintm=0,i=2:i=i+1:m+=i+x+y;returnm}main(){intj=4,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d\n",k)}标准答案:8,17。知识点解析:因为在fun中,m、i都是静态局部变量,因此其生存期是直到整个程序的结束,当执行第一个k=fun(i,m)时,返回值m+i+x+y,其中x+y=j+m,m=0+3+4+1=8,接着再次执行k=fun(j.m)后,返回值m=4+8+4+1=17。50、执行下列语句段后,x的值是________。int*p,x:x=100;p=&x;x=*p+50;标准答案:150。知识点解析:本题先给变量x赋初始值100,然后将指针p指向变量x,*p是取指针p所指地址的内容,即100,所以x=100+50=150。51、设有下列宏定义:#defineA2#defineB(A+3)则执行赋值语句“k=B*20;”(k为int型变量)后,k的值是_________。标准答案:100。知识点解析:本题考查带参数的宏定义,括号优先级的相关运算。运算过程为:k=B*20=(A+3)*20=(2+3)*20=100。52、下列程序运行后的输出结果是_________。main(){intx,a=1,b=2,c=3,d=4:x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;printf("%d\n",x):}标准答案:1。知识点解析:本题考查三日运算符,因为在条件表达式(a<b)?a:b中,如果比较表达a<b为真,条件表达式的值等于a的值,否则等于b的值,在第一个条件(a<b)?a:b中,a<b为真,所以返回a的值x=1,同理判断x<c时为真,返回x的值1,a>x时也为真,返回x的值1,所以最终x值为1。53、下列程序的功能是将输入的正整数按逆序输出。例如,若输入135,则输入531,请填空。#includemain(){intn,s;printf("Enteranumber:");scanf("%d",&n):printf("Output:");do{s=n%10;printf("%d",s);_________;}while(n!=0);printf("\n");}标准答案:n/=10或n=n/10。知识点解析:在主函数的每次循环中变量s=n%10,所以变量s的值是n的个位上的数字,每次将其输出。在空白处填写n/10或n==n/10,就是每次循环时,将n的值缩小10倍,这样直到n的值等于0时,就完成数字n的逆序输出。六、填空题(含2小题)(本题共1题,每题1.0分,共1分。)54、设有以下程序:main(){inta,b,k=4,m=8,*p1=&k,*p2=&m;a==&m;b=(*p1)/(*p2)+7;printf(""a=%d\n"",a);printf(""b=%d\n"",b);}执行该程序后,a的值为_________,b的值为_________。标准答案:07。知识点解析:因为p1是指向k的指针,其中的地址与m的地址不同,因为==的运算不成立,因此a的值为0,接着执行b=(*p1)/(*p2)+7=4/8+7=7。国家二级(C语言)笔试模拟试卷第2套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、按照“先进后出”原则组织数据的数据结构是()。A、队列B、栈C、双向链表D、二叉树标准答案:B知识点解析:栈是一种特殊的线性表,其插入和删除运算都只在线性表的一端进行,而另一端是封闭的。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后被插入的元素,也是最后被删除的,是按先进后出的原则组织数据的。2、线性表常采用的两种存储结构是()。A、顺序存储结构和链式存储结构B、散列方法和索引方式C、链表存储结构和数组D、线性存储结构和非线性存储结构标准答案:A知识点解析:线性表的存储通常要用两种存储结构:顺序存储结构和链式存储结构。3、树是结点的集合,它的根结点的数目是()。A、有且只有1个B、1或多于1C、0或1D、至少有2个标准答案:C知识点解析:树具有明显的层次关系,即树是一种层次结构。在树结构中,根结点在第一层上。当树为非空时,树中有且只有一个根结点,当树为空时,树中根结点的数目为0。4、已知一个有序线性表为(13,18,24,35,47,50,62,83,90,115,134),当用二分法查找值为90的元素时,查找成功的比较次数为()。A、1B、2C、3D、9标准答案:B知识点解析:根据二分法查找需要两次:①首先将90与表中间的元素50进行比较,由于90大于50,所以在线性表的后半部分查找。②第二次比较的元素是后半部分的中间元素,即90,这时两者相等,即查找成功。5、结构化程序设计主要强调的是()。A、程序的规模B、程序的效率C、程序设计语言的先进性D、程序的易读性标准答案:D知识点解析:程序不仅是编写完就结束了,为了测试和维护程序,往往还有其他人阅读和跟踪程序,因此程序设计的风格应该强调简单和清晰,即程序的易读性,“清晰第一,效率第二”。6、结构化程序设计的核心和基础是()。A、结构化分析方法B、结构化设计方法C、结构化设计理论D、结构化编程方法标准答案:C知识点解析:结构化程序设计的核心和基础是结构化设计理论,其中包括:结构化分析方法、结构化设计方法和结构化编程方法。7、在面向对象的方法中,()描述的是具有相似属性与操作的一组对象。A、属性B、事件C、方法D、类标准答案:D知识点解析:类(calss)描述的是具有相似属性与操作的一组对象,而一个具体对象则是其对应类的一个实例。8、需求分析阶段的任务是()。A、软件开发方法B、软件开发工具C、软件开发费用D、软件系统功能标准答案:D知识点解析:需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象,充分了解原系统的工作概况,明确用户的各种需求,然后在这些基础上确定新系统的功能。9、有下列二叉树,对此二叉树前序遍历的结果为()。A、ACFXDBEYZB、ABEFXYZCDC、ABCDEFXYZD、ABDYECFXZ标准答案:D知识点解析:对二叉树的前序遍历是指先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。记住3种遍历的顺序:①前序,访问根→按前序遍历左子树→按前序遍历右子树;②中序,按中序遍历左子树→访问根→按中序遍历右子树;⑧后序,按后序遍历左子树→按后序遍历右子树→访问根。10、设R是一个二元关系,S是一个三元关系,则下列运算中正确的是()。A、R-SB、R×SC、RNSD、RUS标准答案:B知识点解析:关系的交(∩)、并(∪)和差(-)运算要求两个关系是同元的,显然作为二元的R和三元S只能做笛卡儿积运算。二、选择题(2分)(本题共30题,每题1.0分,共30分。)11、下列说法不正确的是()。A、一个C语言源程序可以由一个函数组成也可以由多个函数组成B、main()中的“()”是函数的参数部分,括号内可为空,但括号不能省略C、C语言程序是以函数为基本单位的D、在C语言程序中,注释行只能位于一条语句的后面标准答案:D知识点解析:本题涉及C语言基本的3个知识点:①C语言是以函数为基本单位的,每一个函数完成相对独立的功能,一个程序可以包括多个函数,但有且仅有一个主函数:②主函数main()的圆括号内是填写参数的,可以没有参数,但括号不可以省略;⑧程序的注释部分应该在“/*…………*/”之间,它允许出现在程序的任何位置。12、sizeof(float)是()。A、一种函数调用B、一种函数定义C、一个浮点表达式D、一个整型表达式标准答案:D知识点解析:sizeof(florat)是C语言内部规定的、用于计算单精度型变量(nom)在计算机的内存中所占用的字节数量的函数,返回一个整数值。13、下列合法的声明语句是()。A、int_abc=50;B、doubleint=3+5e2.5;C、longdo=1L;D、float3_asd=3e-3;标准答案:A知识点解析:C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。另外C语言规定了一些专用的标识符,它们有着固定的含义,不能更改。int就是表达变量类型的标识符,它不能再用做变量名和函数名,所以选项B)不正确。do是C语言的一个关键字,也不能再用做变量名和函数名,所以选项C)不正确。14、下列叙述中正确的是()。A、在赋值表达式中,赋值号的左边既可以是变量,也可以是任意表达式B、实型变量中允许存放整型数C、若a和b类型相同,在执行了赋值a=b后,b中的值将放入a中,但b中的值不变D、在c程序中,求余运算符“%”两边的类型相同时才能进行运算标准答案:B知识点解析:选项A),在赋值表达式中,赋值号的左边只能是变量或者是代表某个存储单元的表达式,不能是任意表达式;在判断选项B)时首先应该建立这样的概念,整型变量中只能存放整型数,实型变量中能存放实型数,也能存放整型数:选项C),执行表达式a=b后,将把变量b存储单元中的值赋给变量a,从而覆盖a中原有的值,但b中原有的值并不改变;选项D),在C程序中,求余运算符“%”两边的类型均为整型数据。15、设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是()。A、x&&yB、x<=yC、x‖y+z&&y-zD、!((x<y)&&!z‖1)标准答案:D知识点解析:本题考查逻辑运算符的使用。当“&&”的两个运算对象都是逻辑1时,表达式才返回值是1;当“‖”的两个运算对象至少有一个是逻辑1时,表达式返回值是1。选项A)中,x和y都是逻辑1,所以返回值是1;选项B)中,x=4<=y=6为逻辑1,所以返回值是1;选项C中,y+z的值等于14,非0,y-z的值为-2,非0,所以逻辑表达式4‖14&&-2的值不为0;选项D)中,x<y为1,!z为0,1&&0为1,0‖1为1,因此,!1为0。16、若变量已正确定义,要求通过scanf("%c%d%c%d,&c1,&a,&c2,&b)语句给变量a和b分别赋32和45,给变量c1和c2分别赋字符A和B;下列选项中数据从第1列开始输入,正确的输入形式是()。A、A32<CR>B、A45<CR>B45<CR>B32<CR>C、A32B45<CR>D、A32B45<CR>标准答案:D知识点解析:本题考查scanf函数的基本格式。当需要从键盘上输入数据时,输入的数值之间需要有间隔符(空格符号、制表符号、回车符号),间隔符号的使用数量不限。直到按下<Enter>键,scanf函数才会接受从键盘输入的数据。17、下列能正确定义且赋初值的语句是()。A、intn1=n2=10;B、charc=32;C、floatf=f+1.1;D、doublex=12.3E2.5;标准答案:B知识点解析:C语言规定,可以在定义变量的同时给变量赋初值,称为变量初始化。选项A)中在给n1和n2进行赋初值,但变量n2没有定义;选项C)中定义变量f时,不能在赋值表达式的右边出现变量f自身,所以选项C)错误;选项D)用指数表达式的常量中,字母E后面的数应该为整数,而不应该为小数形式。因此,选项B)正确。18、若ch为char型变量,k为int型变量(已知字符a的ASCII码是97),则执行下列语句后输出的结果为()。ch=’b’;k=10;printf("%x,%o,",ch,ch,k);printf("k=%%d\n",k);A、因变量类型与格式描述符的类型不匹配,输出无定值B、输出项与格式描述符个数不符,输出为0值或不定值C、62,142,k=%dD、62,142,k=%10标准答案:C知识点解析:第1个printf函数,格式说明的个数是2,而输出项的个数是3,所以对于多余的输出项k不予输出;第2个pfintf函数,有两个%说明,第1个%后面的字符要原样输出。19、有下列程序:fun(intx,inty){retum(x+y);}main(){inta=1,b=2,c=3,sum;stun=fun((a++,b++,a+b),c++);printf("%d\n",sum);}执行后的输出结果是()。A、6B、7C、8D、9标准答案:C知识点解析:函数fun(intx,inty)的功能是返回两个整型数据的和。在主函数中,变量a,b,c的初始值分别为1,2,3。因此逗号表达式“a++,b++,ab”的值等于5,表达式c++的值为3,调用子函数的表达式为“fun(5,3);”,其返回值等8。所以变量sam的值等于8。20、main(){inta=4,b=5,c;ifa<B){c=a*b;printf("%d,%d,%d\n",b,a,c);}else{c=b/a;printf("%d,%d,%d\n",b,a,c);}}A、4,5,12B、20C、5,4,20D、12标准答案:C知识点解析:本题考查ifelse语句。第一个if语句,先判断条件,发现a<b成立,执行下列的复合语句,得c=a*b=20,b、a的值不变。21、下列程序的输出结果是()。main(){inti=1,j=2,k=3;if(i++==1&&(++j=3‖k++==3))printf("%d%d%d\n",i,j,k);}A、123B、234C、223D、233标准答案:D知识点解析:本题考查自增运算符“++”、逻辑与运算符“&&”和逻辑或运算符“‖”。自增运算符“++”,出现在变量之前(如题中的++n),表示先使变量的值加1,再使用变量的值进行运算;出现在变量之后(如题中的n++),表示先使用变量的值进行运算,再使变量的值加1。当逻辑与运算符"&&"两边的运算对象都为真时,逻辑表达式的值才为真;当逻辑或运算符"‖"左边的运算对象为真时,其值就为真,不用计算其右边的运算对象的值。所以根据运算符的优先级,题中应先计算内层括号中的值。++j是先自加后运算,因此运算时,i的值等于3,所以表达式++j==3成立,即表达式的值为¨由于1与任何数都为进行或(‖)运算,结果都为1,因此k=3;最后计算“&&”之前的表达式,i++是先运算后自加,因此运算时i为1,所以i+==1成立,自加1后i=2。if语句的条件为真即"1",所以输出i、j、k的值分别是2,3,3。22、下列程序的输出结果是()。#include<stdio.h>main(){inta=0,i;for(i=1;i<5;i++){Switch(i){case0:case3:a+=1;case1:case2:a+=2;default:a+=3;}}printf("%d",a):}A、19B、18C、6D、8标准答案:A知识点解析:本题考查switch语句。当i=1时,执行casel,因为没有遇到break语句,所以依次往下运行,a=a+2=2,a=a+3=5;当i=2时,执行case2,因为没有遇到break语句,所以依次往下运行,a=a+2=7,a=a+3=10;当i=3时,执行case3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a=a+2=13;a=a+3=16:当i=4时,执行default,a=a+3=19,结束循环。23、在C语言中,while和do…while循环的主要区别是()。A、do…while的循环体不能是复合语句B、do…while允许从循环体外转到循环体内C、while的循环体至少被执行一次D、do…while的循环体至少被执行一次标准答案:D知识点解析:本题考查while和do…while循环的区别。while循环的控制出现在循环体之前,只有当while后面的表达式的值为非零时,才可能执行循环体;在do…while构成的循环体中,总是先执行一次循环体,然后再求表达式的值,因此无论表达式的值是否为零,循环体至少要被执行一次。24、若各选项中所用变量己正确定义,fun()函数中通过return语句返回一个函数值,下列选项中错误的程序是()。A、main()<……x=fun(2,10);……}floatfun(inta,intb){……}B、floatfun(inta,intb){……}main(){……x=fun(i,j);……}C、floatfun(int,int);main()<……x=fun(2,10);……}floatfun(inta,intB){……}D、main()<floatfun(intI,intj);……x=fun(i,j);……}floatfun(inta,intb){……}标准答案:A知识点解析:C语言规定,函数必须先定义,后调用(函数的返回值类型为int或char时除外)。在选项A)中,调用的子函数在调用后面定义,所以不正确。在选项B)、C)中,被调用函数在主调函数之前定义,再在主函数中调用,所以是正确的;在选项D)中,在主调函数中先对子函数floatfun(int,intj)进行了定义,然后进行调用。25、判断char型变量c1是否为小写字母的正确表达式为()。A、’a’<=c1<=’Z’B、(c1>=A)‖c1<=z)C、(’a’=>c1‖("z"<=c1)D、(c1>=’a’)&&(c1<=’z’)标准答案:D知识点解析:C语言规定,字符常量在程序中要用单引号括起来。判断c1是否为小写字母的充要条件c1>=tat和c1<=’z’用逻辑与(&&)宋表示。选项A)的这种形式在C语言中没有,所以选项D)正确。26、有下列程序:main(){intk=5;while(--k)printf("%d",k-=3);printf("\n");}执行后的输出结果是()。A、1B、2C、4D、死循环标准答案:A知识点解析:在程序语句中,k的初始值为5,进行第1次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出1,此时k的值变为1。程序执行第2次循环时,k自减1变为0,为假,退出while循环语句。所以程序的最后结果为1。27、若函数调用时,参数为基本数据类型的变量,下列叙述中正确的是()。A、实参与其对应的形参共占存储单元B、只有当实参与其对应的形参同名时才共占存储单元C、实参与其对应的形参分别占用不同的存储单元D、实参将数据传递给形参后,立即释放原先占用的存储单元标准答案:C知识点解析:本题考查函数调用时的参数传递。函数的形参是函数定义时由用户定义的形式上的变量,实参是函数调用时,主调函数为被调函数提供的原始数据。在函数调用时,实参和其所对应的形参分别占用不同的存储单元,彼此之间不影响。28、在C语言程序中,下列说法正确的是()。A、函数的定义和函数的调用均可以嵌套B、函数的定义不可以嵌套,但函数的调用可以嵌套C、函数的定义可以嵌套,但函数的调用不可以嵌套D、函数的定义和函数的调用均不可以嵌套标准答案:B知识点解析:本题考查函数调用的基本概念。因为函数的结果是个未知量,而函数定义时不能使用未知量,所以函数定义不可以嵌套,但函数的调用可以嵌套。29、下列说法中不正确的是()。A、指针是一个变量B、指针中存放的是数值C、指针可以进行加、减等算术运算D、指针变量占用存储空间标准答案:B知识点解析:指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。30、若有定义和语句:int**pp,*p,a=20,b=10;pp=&p;p=&a;p=&b;printf("%d,%d\n",*p,**pp);则输出结果是()。A、20,10B、20,20C、10,20D、10,10标准答案:D知识点解析:本题考查指针变量的赋值。**pp是定义了一个指向指针的指针变量,语句pp=&p是将pp指向指针p,*p和**pp都是指针p所指的内存空间的内容,即b的值。31、下列二维数组的说明中,不正确的是()。A、floata[][4]={0,1,8,5,9};B、inta[3][4];C、#defineN5D、inta[2][9.5];floata[N][3];标准答案:D知识点解析:C语言规定,对于二维数组,只可以省略第一个方括号中的常量表达式,而不能省略第二个方括号中的常量表达式;二维数组的一般定义格式:类型说明符数组名[常量表达式Ⅱ常量表达式)。32、若有定义:“inta[2Ⅶ3];”则对a数组的第i行第j列元素的正确引用为()A、**(a+i)+j)B、(a+i)[j]C、*(a+i+j)D、*(a+i)+j标准答案:A知识点解析:本题考查如何通过地址来引用数组元素。通过地址来引用数组元素的方法有5种:①a[i][j];②*(a[i]+j);⑧*(*(a+i)+j);④*(a[i][j];⑤*(&a[0][0]+3*i+j)。33、下列能正确进行字符串赋值的是()。A、chars[5]={"ABCDE"};B、chars[5]+{’A’,’B’,’C’,’D’,’E’),C、char*s;s="ABCDE";D、char*s;printf("%S’’S);标准答案:C知识点解析:字符串存储要有结束符“\0”且要占用一个空间,选项A)、B)的空间不够;printf用来输出字符,不能输入字符串。34、若有说明chars1[30]="abc",s2[]="defghi";,则在使用函数strcat(s1,s2)后,结果是()A、s1的内容更新为abcdefghiB、s1的内容更新为defghi\0C、s1的内容更新为defghiabc\0D、s1的内容更新为abcdefghi\0标准答案:D知识点解析:strcat(s1,s2)是把s2字符串连接到s1字符串的末尾,要保证s1能容纳下连接后的字符串。35、设有变量说明int(*p)[m],其中的标识符p是()。A、m个指向整型变量的指针B、指向m个整型变量的指针C、一个指向具有m个整型元素的一维数组的指针D、具有m个指针元素的一维指针数组,每个元素都指向整型变量标准答案:C知识点解析:本题考查指向数组的指针变量的声明。这里的p表示一个指向数组的指针;*p表示指针p指向地址的内容。36、下列描述中正确的是()。A、在C语言程序中预处理是指完成宏替换和文件包含指定的文件的调用B、预处理指令只能位于C源程序文件的首部C、预处理命令可以放在程序中的任何位置D、预处理命令结尾需要加分号标准答案:C知识点解析:本题考查预处理命令的特点,编译预处理命令的特点:①为了区别一般的语句,预处理命令行都必须以"#"号开始,结尾不加分号;②预处理命令可以放在程序中的任何位置;⑧在程序中凡是以"#"号开始的语句行都是预处理命令行。37、若有结构体定义:structstu{intnum;charsex;intage;}al,a2;则下列语句中错误的是()。A、printf("%d,%C,%d",a1);B、a2.age=a1.age;C、a1.age++;D、a1.num=5;标准答案:A知识点解析:题中a1和a2两个结构体变量名所对应的成员相同,可以与运算"++"相结合。结构体变量的输出格式:prinf("要输出变量名:%d\t",结构变量名.要输出的成员变量名)。38、C语言结构体类型变量在程序执行期间()。A、所有成员一直驻留在内存中B、没有成员驻留在内存中C、部分成员驻留在内存中D、只有一个成员驻留在内存中标准答案:A知识点解析:C语言结构体类型变量在程序执行期间所有成员一直驻留在内存中。39、在位运算中,操作数每右移两位,其结果相当于()。A、操作数乘以2B、操作数除以2C、操作数除以4D、操作数乘以4标准答案:C知识点解析:在位运算中,操作数每右移两位,相当于在操作数的左侧添0,最右面的两位被移出,即操作数除以4040、在“文件包含”预处理语句的使用形式中,当#include后面的文件名用""(双撇号)括起时,寻找被包含文件的方式是()。A、直接按系统设定的标准方式搜索目录B、先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索C、仅仅搜索源程序所在目录D、仅仅搜索当前目录标准答案:B知识点解析:本题考查库函数调用的知识点。格式1:#include<文件名>,预处理程序在标准目录下查找指定的文件;格式2:#include“文件名”,预处理程序首先在引用被包含文件的源文件所在的目录下搜索指定的文件,如没找到,再按系统指定的标准目录搜索。三、公共基础填空题(本题共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均是血型变量,则计算完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<3;j++)______,}}标准答案:b[j][i]=a[i][j]知识点解析:本题考查二维数组的基本知识。它是要将一个二维数组a的行和列元素互换后存放到另一个二维数组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知识点解析:分析程序执行过程,第一次循环时,i=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、集中对付那些错误群集的程序标准答案:D知识点解析:测试的目的是发现软件中的错误;经验表明,程序中存在错误的概率与该程序中已发现的错误成正比。这一现象说明,为了提高测试效率,测试人员应该集中对待那些错误群集的程序。3、以下不属于对象的基本特点的是A、分类性B、多态性C、继承性D、封装性标准答案:C知识点解析:对象的基本特点:标志唯一性、分类性、多态性、封装性和模块独立性。4、下列叙述中,不符合良好程序设计风格要求的是A、程序的效率第一,清晰第二B、程序的可读性好C、程序中要有必要的注释D、输入数据前要有提示信息标准答案:A知识点解析:当今主导的程序设计风格是“清晰第一,效率第二”的观点。结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,而在实际应用中,人们更注重程序的可理解性。5、下列叙述中正确的是A、程序执行的效率与数据的存储结构密切相关B、程序执行的效率只取决于程序的控制结构C、程序执行的效率只取决于所处理的数据量D、以上三种说法都不对标准答案:A知识点解析:程序执行的效率与很多因素有关,如数据的存储结构、程序所处理的数据量、程序所采用的算法等。顺序存储结构在数据插入和删除操作上的效率比链式存储结构的效率低。6、数据处理的最小单位是A、数据B、数据元素C、数据项D、数据结构标准答案:C知识点解析:数据处理的最小单位是数据项;由若干数据项组成数据元素;数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。7、线性表的顺序存储结构和线性表的链式存储结构分别是A、顺序存取的存储结构、顺序存取的存储结构B、随机存取的存储结构、顺序存取的存储结构C、随机存取的存储结构、随机存取的存储结构D、任意存取的存储结构、任意存取的存储结构标准答案:B知识点解析:顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)=LOC(a1)+(i-1)L计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。8、在深度为5的满二叉树中,叶子结点的个数为A、32B、31C、16D、15标准答案:C知识点解析:满二叉树是指除最后一层外,每一层上的所有结点都有两个叶子结点。在满二叉树中,层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点.且深度为m的满二叉树有2m-1个结点。9、下列有关数据库的描述,正确的是A、数据库是一个DBF文件B、数据库是一个关系C、数据库是一个结构化的数据集合D、数据库是一组文件标准答案:C知识点解析:数据库(DataBase,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,可被各个应用程序所共享。数据库中的数据具有“集成”、“共享”的特点。10、一个关系中属性个数为1时,称此关系为A、对应关系B、单一关系C、一元关系D、二元关系标准答案:C知识点解析:在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称为属性,一个具有N个属性的关系称为N元关系。二、选择题(1分)(本题共10题,每题1.0分,共10分。)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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论