




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级(C语言)笔试模拟试卷66(题后含答案及解析)题型有:1.选择题2.填空题选择题(1-10、21-40每题2分,11-20每题1分,共70分)下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。1.设有栈S和队列Q,其初始状态为空,元素a1、a2、a3、a4、a5、a6依次入栈,出栈的元素进入队列Q,若6个元素出队列的顺序是a2、a4、a3、a6、a5、a1,则栈的容量至少是______。A.6B.4C.3D.2正确答案:C2.一个存储结点存放一个______。A.数据项B.数据元素C.数据结构D.数据类型正确答案:B3.在数据结构中,从逻辑结构上看可以分成______。A.动态结构和静态结构B.线性结构和非线性结构C.内部结构和外部结构D.紧凑结构和非紧凑结构正确答案:B4.若待排序序列中元素非常多,而且它们的排列是完全无序的,那么最好选用下列排序方法中的______。A.冒泡排序B.简单选择排序C.直接插入排序D.快速排序正确答案:D5.软件文档不仅是软件开发各阶段的重要依据,而且也影响软件的______。A.可维护性B.可移植性C.可扩展性D.可用性正确答案:A6.设有系和学生2个实体集,一个学生只能在一个系里注册,而一个系有很多学生。系和学生的关系是______。A.多对多联系B.多对一联系C.一对多联系D.一对一联系正确答案:C7.下列程序的输出结果是______。main(){intn;(n=6*4,n+6),n*2;printf(“n=%d\n”,n);}A.22B.23C.24D.25正确答案:C8.下列描述中,错误的一条是______。A.C语言中,二维数组或多维数组的排列顺序是按行存放的B.赋值表达式b[1][2]=a[2][3]/2*a[0][0]是正确的C.表达式3==4>2!=5<2的值为0D.数组名后的方括弧内可以为常量表达式,也可以为变量正确答案:D9.下列程序(注意: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正确答案:A10.下列程序的输出结果是______。#include<stdio.h>main(){inti,j,k,a=3,b=2;i=(--a==b++)?--a;++b;j=a++;k=b;printf(“i=%d,j=%d,k=%d\n”,i,j,k);}A.i=2,j=1,k=3B.i=1,j=1,k=2C.i=4,j=2,k=4D.i=1,j=1,k=3正确答案:D11.设有如下的变量定义,以下符合C语言语法的表达式是______。inti=8,k,a,b;unsignedlongw=5;doublex=1,42,y=5.2;A.a+=a-=(b=4)*(a=3);B.x%(-3);C.a=a*3=2;D.y=float(i);正确答案:A12.设语句inta=3;,当执行了以下语句后,变量a的值是______。a+=a-=a*a;A.3B.0C.9D.-12正确答案:B13.C语言中运算对象必须是整型的运算符是______。A.%=B./C.=D.<=正确答案:A14.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是______。A.-3B.9C.-12D.6正确答案:C15.下列程序的运行结果为______。main(){intn;for(n=1;n<=10;n++){if(n%3==0)continue;printf(“%d”,n);}}A.12457810B.369C.12D.12345678910正确答案:A16.用语句scanf(“%c%c%c”,&c1,&c2,&c3)输入a、b、c时,变量c1、c2、c3的值分别为______。A.’a’,’b’,’c’B.’a’,’b’,’’C.’a’,’’,’b’D.’a’,’’,’c’正确答案:C17.当输入a1b2c3d4e时,下列程序的运行结果为______。main(){charstr[40];printf(“请输入含有4个数字字符的字符串:\n”);scanf(“%s”,&str);insert(str);}insert(str)charstr[];{inti;for(i=strlen(str);i>0;i--){str[2*i)=str[i];str[2*i-1)=‘‘;}printf(“\n结果是:%s”,str);}A.a1b2c3d4eB.1234C.a1b2D.因输入错误,程序出错正确答案:A18.下列程序运行后,输出结果是______。main(){charch[2][5]={“693”,”825”),*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>=‘0’&&p[i][j]<=‘9’;j+=2)s=10*s+p[i][j]-’0’;printf(“%d\n”,s);}A.6385B.22C.33D.693825正确答案:A19.下列程序的输出结果是______。main(){inti,x[3][3]=(1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf(“%d,”,x[i][2-i]);}A.1,5,9B.1,4,7C.3,5,7D.3,6,9正确答案:C20.下列程序的输出结果是______。main(){intw=5;fun(w);printf(“\n”);}fun(intk){if(k>0)fun(k-1);printf(“%d”,k);}A.54321B.012345C.12345D.543210正确答案:B21.为了避免在嵌套的条件语句if-else中产生二义性,C语言中规定的if-else配对原则是______。A.else子句与缩排位置相同的if配对B.else子句与其之前最近的未被配对的if配对C.else子句与其之后最近的if配对D.else子句与同一行上的if配对正确答案:B22.C语言程序的基本单位是______。A.程序行B.语句C.函数D.字符正确答案:C解析:每一个C语言程序都是由若干个函数构成的。23.若有说明:intx[][3]={1,3,5,7,9,11,13};,则x数组的行数为______。A.2B.3C.4D.无确定值正确答案:B解析:计算行数的方法是用数组的元素个数除以列数,尾数为小数直接进一位。24.以下能正确进行字符串赋值操作的是______。A.char*sss;*sss=“hello!”;B.char*sss;sss=“hello!”;C.charsss[8];sss=“hello!”;D.charsss[8];*sss=“hello!”;正确答案:B25.若调用一个函数,且此函数中没有return语句,则以下正确的说法是______。A.该函数没有返回值B.该函数返回若干个系统默认值C.该函数能返回一个用户所希望的函数值D.该函数返回一个不确定的值正确答案:D解析:函数体可以没有return语句,程序执行到末尾为“}”时结束,然后返回调用函数,但没有确定的函数值返回。26.若定义staticinta[2][2]={1,2,3,4},则a数组的各数组元素分别为______。A.a[0][0]=1,a[0][1]=2,a[1][0]=3,a[1][1]=4B.a[0][0]=1,at0][1]=3,a[1][0]=2,a[1][1]=4C.a[0][0]=4,a[0][1]=3,a[1][0]=2,a[1][1]=1D.a[0][0]=4,a[0][1]=2,a[1][0]=3,a[1][1]=1正确答案:A解析:C语言中二维数组数组元素的排列顺序是按行依次存放的,所以A是正确选项。27.下列语句中,不正确的是______。A.staticchara[]={“Jack”};B.staticchara[]=“Jack”;C.printf(“%s”,a[0]);D.scanf(“%s”,a);正确答案:C解析:当用%s格式符输出字符串时,printf中的输出项是字符数组名,不是数组元素名。28.给出以下定义:charx[]=“abcdefg”;chary[]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’};则正确的叙述为______。A.数组x和数组y等价B.数组x和数组y的长度相同C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度正确答案:C解析:在C语言中,字符串以’\0’作为结束符,因此数组x的长度为7+1=8,而数组y的长度等于7。29.已知p为指针变量,a为数组名,i为整型变量,下列语句中,不正确的是______。A.p=&i;B.p=a;C.p=&a[i];D.p=10;正确答案:D解析:不能把一个整数赋给指针变量,只能将变量已分配的地址赋给指针变量。30.在C程序中,可把整型数以二进制形式存放到文件中的函数是______。A.fprintf函数B.fread函数C.fwrite函数D.fputc函数正确答案:C解析:fprintf是格式文件格式化输出函数,fread是读文件,fputc输出单个字符到文件。只有fwrite可以通过参数来设置以二进制形式写文件。31.以下程序段运行时______。charx[10],y[]=“China”;x=y;printf(“%s”,x);A.将输出ChinaB.将输出ChC.将输出ChiD.编译出错正确答案:D解析:数组名可以认为是一个存放地址值的指针变量,这个指针变量中的地址值不可改变。因此,可以认为数组名是一个地址常量,所以不能将它随意改变。32.下列程序段的输出结果是______。voidfun(int*x,int*y){printf(“%d%d”,*x,*y);*x=3;*y=4;}main(){intx=1,y=2;fun(&y,&x);printf(“%d%d”,x,y);}A.2143B.1212C.1234D.2112正确答案:A解析:实参的个数必须与形参的个数一致,实参可以是表达式,在类型上应按位置与形参一一对应匹配。33.以下叙述中不正确的是______。A.C程序中的预处理命令行都以#号开始B.宏定义中的宏名可用大写字母或小写字母C.宏替换不占用运行时间,只占用编译时间D.使用带参数的宏时,参数的类型应与宏定义时的一致正确答案:D解析:宏替换和函数调用有相似之处,但在替换时,对参数没有类型的要求。34.设有语句:“inta=1,b=2,*p1=&a,*p2=&b;”,则使指针p1指向变量b的赋值语句是______。A.p1=*p2B.*p1=p2C.p1=p2D.*p1=*p2正确答案:D解析:对于定义int*p,*q;,可以通过赋值语句p=q;,把指针变量q中的地址值赋给指针变量p,从而使这两个指针变量指向同一地址。35.以下程序的输出结果是______。#include<stdio.h>main(){intk=4,m=1,p;p=func(k,m);printf(“%d,”,p);p=func(k,m);printf(“%d\n”,p);}func(a,b)inta,b;{staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}A.8,17B.8,16C.8,20D.8,8正确答案:A36.若有以下定义和语句:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示a数组元素的表达式是______。A.*pB.a[10]C.*aD.a[p-a]正确答案:B解析:选项B越界,因为该数组元素只有a[0]~a[9]。37.以下程序的输出结果是______。#defineTIMES(X)X*Xmain(){inta=16,k=2,m=1;a/=TIMES(k+m)/TIMES(k+m);printf(“d\n”,a);}A.16B.2C.9D.1正确答案:B解析:宏定义的作用是进行字符的替换,应先将赋值语句的右边进行宏替换,即等号右边为:k+m*k+m/k+m*k+m=2+1*2+1/2+1*2+1=2+2+0+2+1=7,然后计算a/=7,即a=a/7=16/7=2。38.下列程序的输出结果是______。main(){chara[10]={1,2,3,4,5,6,7,8,9,0},*p=a+5;printf(“%d”,*--p);}A.非法B.a[4]的地址C.5D.7正确答案:C解析:p是一个指向字符的指针,在定义时,指向a[5]。执行--p时,p就指向了a[4],那么*--p就是5。39.以下程序的运行结果为______。main(){intx,*p,**q;x=10;p=&x;q=&p;printf(“%d\n”,**q);}A.10B.9C.8D.11正确答案:A解析:程序中的p指向变量x,q被定义为二级指针,即指向指针的指针,其值为指针p的地址,因此,**q即是x,打印结果为10。40.下列定义不正确的有______。A.#definePI3.141592B.#defineS345;C.intmax(x,y);intx,y;{}D.intmax(int,int);正确答案:C解析:定义函数时,函数头后不能加分号。41.设有结构体类型定义:structtry{intone;floattwo;}*str;若要动态开辟一个结构单元,使指针str指向其首地址,正确的语句是______。A.str=(try*)malloc(sizeof(try));B.*str=(structtry*)malloc(sizeof(structtry));C.str=(strucytry*)malloc(sizeof(structtry));D.str=(structry)malloc(sizeof(structtry));正确答案:C解析:由于在ANSIC中malloc函数返回的地址为void,故在调用函数时,必须利用强制类型转换将其转换成所需的类型。42.以下对结构体变量mix中成员x的正确引用是______。struct{intt;intx;}mix,*p;p=&mix;A.(*p).mix.xB.(*p).xC.p->mix.xD.p.mix.x正确答案:B解析:结构体变量中的成员有3种引用方式:①结构体变量名.成员名;②指针变量名->成员名:③(*指针变量名).成员名。43.设有以下语句:structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,’\0’},*p;p=&a[0];则表达式的值是6的为______。A.p++->nB.p->n++C.(*p).n++D.++p->n正确答案:D解析:本题主要考查结构体变量的定义和应用,以及运算符的优先级。44.以下程序的输出结果是______。longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf(“%1d\n”,fun(3));}A.1B.2C.3D.4正确答案:A解析:本题两次执行fun函数,第一次执行得f(3)=s=n-f(n-1)=3-f(2):第二次执行得s=2,通过传递返回值f(2)=2,所以s=3-2=1,即f(3)=1。45.以下对C语言函数的有关描述中,正确的是______。A.在C程序中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B.函数既可以嵌套定义又可以递归调用C.函数必须有返回值,否则不能使用函数D.C程序中有调用关系的所有函数必须放在同一个源程序文件中正确答案:A解析:在C语言中,提供了许多库函数供用户使用,因此选项D错误。46.以下程序的输出结果是______。fun(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fun(&p,a);printf(“%d\n”,*p);}A.1B.7C.9D.11正确答案:C47.若有以下定义和语句,则对w数组元素非法引用的是______。intw[2][3],(*pw)[3];pw=w;A.w[0]+2B.*(pw+1)[2]C.pw[0][0]D.*(pw[1]+2)正确答案:B解析:选项A表示元素w[0][2],选项C表示元素w[0][0],选项D表示元素w[1][2],而选项B中pw+1表示第2行元素的地址,(pw+1)[2]相当于(pw+1)+2,表示第4行元素的地址,显然超出该二维数组的范围。48.设有以下定义:char*st=“howareyou”;下列程序段中正确的是______。A.chara[11],*p;strcpy(p=a+1,&st[4]);B.chara[11];strcpy(++a,st);C.chara[11];strcpy(a,st);D.chara[],*p;srtcpy(p=&a[1],st+2);正确答案:A解析:选项A表示把st所指串的第5个字符开始的后面的元素赋值给数组a的第2个元素开始的后面元素,形式正确;选项B中出现对数组名进行自加运算,因此错误:选项C中st所指字符串有11个字符,再加上’\0’,有12个字符,超过数组长度,所以也是错误的;选项D的情况和选项C相似,也是形式正确,但超过了数组的长度。49.以下函数返回a所指数组中最小的值所在的下标值:fun(int*a,intn){inti,j=0,p;p=j;for(i=j;i<n;i++)If(a[i]<a[p])______,return(p);}在横线处应填入的是______。A.i=pB.a[p]=a[i]C.p=jD.p=i正确答案:D解析:首先,p=0是假设数组的第1个元素为最小,然后在循环里将数组中的每一个元素a[i]与当前最小元素a[p]比较,如果前者小,那么就要更新p的值,使p=i。50.下面程序的输出结果是______。main(){inta[]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf(“%d\n”,*(p+9));}A.0B.1C.10D.9正确答案:A解析:p指向a[0],则p+9指向a[9],*(p+9)=a[9]=0。填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡上。注意:以命令关键字填空的必须拼写完整。51.一张3.5英寸软盘大约能存储140万个ASCⅡ字符,若存放汉字大约能存放【】个。正确答案:70万52.一个算法的空间复杂度是指该算法所耗费的【】。正确答案:存储空间解析:空间复杂度是指算法在执行过程中临时占用的存储空间大小,包括:①算法本身所占用的存储空间;②算法的输入输出数据所占用的存储空间;③算法在运行过程中临时占用的存储空间。53.当所有结点的权值都相等时,用这些结点构造的二叉排序树是【】。正确答案:右子树(单支树)解析:二叉排序树对于任意新结点,若大于等于根结点,则在右子树上建立。54.软件危机的核心问题是【】和软件开发效率低。正确答案:软件质量差解析:大约在20世纪60年代末人们在计算机软件的开发和维护过程中,遇到了一系列严重问题,从而认识到软件危机的存在。软件危机的核心问题是软件开发的质量太差和软件系统开发的效率太低。55.栈满时,再作入栈操作会产生【】,栈空时,删除操作会产生【】。正确答案:上溢下溢56.程序的运行结果为【】。main(){charc1=‘a’,c2=‘b’,c3=‘c’;printf(“a%cb%c\tc%c\n”,c1,c2,c3);}正确答案:aabbcc解析:printf函数先输出a,遇%c,接着输出变量c1的值a,然后输出bb,遇%t,从第9个位置开始输出cc。57.执行下面程序段后,k值是【】。k=1;n=263;do{k*=n%10;n/=10;}while(n);正确答案:36解析:本题循环体共执行了3次。第一次:k=3,n=26:第二次:k=18,n=2;第三次:k=36,n=0。58.函数mystrlen(char*s)的功能是求字符串s的长度,请填空。mystrlen(char*s){char*t:t=s;while(【】)t++;return(t-s);}正确答案:*t解析:通过while循环扫描字符串,遇到字符‘\0’结束,并用t统计字符串的长度。59.在对文件进行操作的过程中,若要求文件的位置回到文件的开头,应当调用的函数是【】函数。正确答案:rewind()或fseek()60.设有以下定义的语句:inta[3][2]={10,20,30,40,50,60},(*p)[2];p=a;则*(*(P+2)+1)值为【】。正确答案:60解析:p是指向整型数组的指针变量,p=a使得p指向数组a的第1行。p+2是数组a第3行的地址,*(p+2)是数组a第3行{50,60},其实*(p+2)为数组a第3行的首地址,*(p+2)+1为数组a第3行第2个元素
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物料搬运设备在港口物流中的作业效率考核试卷
- 2024年高性能陶瓷复合材料资金申请报告代可行性研究报告
- JAVA图形用户界面开发重点内容与试题及答案
- 2024年专用刀具及类似器具资金筹措计划书代可行性研究报告
- 电子竞技赛事赞助商权益保障合同
- 环保技术研发与产业化合作合同
- 2025年中国北京市主题公园行业市场前景预测及投资价值评估分析报告
- 跨国生物医药临床试验数据安全保护与纠纷处理合同
- 网店跨境运营权过户合作协议
- 财务风险管理补充协议
- 台球店员工合同范例
- 程序文件-XXX(安全阀校验机构)(2023版)
- 散粮装卸工艺
- 中华人民共和国产品质量法培训
- 餐厅干股分红协议书
- 医院手术室净化装修方案
- 2024年海南省高考地理试卷(含答案)
- 《排球正面双手垫球 移动垫球》教案
- 《菊次郎的夏天》电影赏析
- 课件:《中华民族共同体概论》第十五讲:新时代与中华民族共同体建设
- 汽车刹车片与刹车盘检测考核试卷
评论
0/150
提交评论