计算机等级考试 二级C语言 笔试模拟试题 北邮六.docx_第1页
计算机等级考试 二级C语言 笔试模拟试题 北邮六.docx_第2页
计算机等级考试 二级C语言 笔试模拟试题 北邮六.docx_第3页
计算机等级考试 二级C语言 笔试模拟试题 北邮六.docx_第4页
计算机等级考试 二级C语言 笔试模拟试题 北邮六.docx_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

一、选择题(1-11每题2分,11-21每题1分,21-40每题2分,共70分) 下列各题A、B、C、D四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。1以下4组用户定义标识符中,全部合法的一组是_。(A)_main enclude sin(B)If -max turbo(C)txt REAL 3COM(D)int k_2_0012以下选项中可以作为C语言中合法整数的是_。(A)10110B(B)0386(C)0Xffa(D)x2a23已经定义ch为字符型变量,以下赋值语句中错误的是_。(A)ch=;(B)ch=62+3;(C)ch=NULL;(D)ch=xaa;4已定义c为字符型变量,则下列语句中正确是_。(A)c=97;(B)c=97;(C)c=97;(D)c=a;5有以下程序main() int a=1, b=2,m=0, n=0,k;k=(n=ba)| (m=aprintf(%d, %dn,k,m); 程序运行后的输出结果是_。(A)0,0(B)0,1(C)1,0(D)1,16有以下程序 main() int m=12,n=34; printf(%d%d,m+,+n); printf(%d%dn,n+,+m); 程序运行后的输出结果是_ 。(A)12353514(B)12353513(C)12343514(D)123435137设有以下定义int a=0; double b=l.25; char c=A#define d 2则下面语句中错误的是_。(A)a+(B)b+(C)c+(D)d+8以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。main()/* Beginning */int r; float s; scanf(%d,&r); s=* *r*r; printf(s=%fn,s);出错的原因是_。(A)注释语句书写位置错误(B)存放圆半径的变量不应该定义为整型(C)输出语句中格式描述符非法(D)计算圆面积的赋值语句中使用了非法变量9若整型变量a、b、c、d中的值依次为:1、4、3、2,则条件表达式a(A)1(B)2(C)3(D)410有以下程序main() unsigned char a, b;a= 43;b= 4 & 3;printf(%d %dn,a,b) ;执行后输出结果是_。(A)7 0(B)0 7(C)1 1(D)43 011若x和y代表整型数,以下表达式中不能正确表示数学关系|xy|10的是_。(A)abs(xy)10&xy10(C)!(xy)10(D)(xy)*(xy)bc) printf(%dn,d); else if (c-1=d)=1) printf(%dn,d+1);else printf(%dn,d+2); 执行后输出结果是_。(A)2(B)3(C)4(D)编译时有错,无结果15下列条件语句中,功能与其他语句不同的是_。(A)if (a) printf(%dn, x ) ; else printf(%dn, y ) ;(B)if (a= =0) printf(%dn, y ) ; else printf(%dn, x ) ;(C)if (a!=0) printf(%dn, x ) ; else printf(%dn, y ) ;(D)if (a= =0) printf(%dn, x ) ; else printf(%dn, y ) ;16有以下程序 main( ) int i ; for (i=0; i3; i+ )switch ( i ) case 0: printf(%d, i ) ; case 2: printf(%d, i ) ; default : printf(%d, i ) ;程序运行后的输出结果是_。(A)022111(B)021021(C)000122(D)01217有以下程序 main() int p8=11,12,13,14,15,16,17,18,i=0,j=0; while(i+7) if(pi%2) j+=pi; printf(%dn,j); 程序运行后的输出结果是 _。(A)42(B)45(C)56(D)6018执行下列程序时输入:123456789,输出结果是_。main() char s100; int c, i; scanf(%c,&c); scanf(%d,&i);scanf(%s,s); printf(%c,%d,%s n,c,i,s);(A)123,456,789(B)1,456,789(C)1,23,456,789(D)1,23,45619x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是_。(A)INPUT x、y、z;(B)scanf(%d%d%d,&x,&y,&z);(C)scanf(%d%d%d,x,y,z);(D)read(%d%d%d,&x,&y,&z);20若有说明语句:int a,b,c,*d=&c;则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是_。(A)scanf(%d%d%d,&a,&b,d);(B)scanf(%d%d%d,&a,&b,&d);(C)scanf(%d%d%d,a,b,d);(D)scanf(%d%d%d,a,b,*d);21有以下程序main( ) char s = ABCD,*p ;for (p=s+1; p程序运行后的输出结果是_。(A)ABCD BCD CD D(B)A BC D(C)B CD(D)BCD CDD22有以下程序 main( ) int x =1,3,5,7,2,4,6,0,i,j,k ;for (i=0; i= i ; j- ) if (xj+1xj) k=xj; xj=xj+1; xj+1=k; for (i=0; i 3 ; i+ ) for (j=4; jxj+1) k=xj; xj=xj+1; xj+1=k; for (i=0; i 8 ; i+ ) printf(%d, xi ) ;printf(n) ;程序运行后的输出结果是_。(A)75310246(B)01234567(C)76310462(D)1357024623有以下程序 main( ) int i=0 , s=0 ; for ( ; ; ) if ( i= =3 | i= =5 ) continue ;if ( i= =6 ) break ;i+;s+= i ; ;printf(%dn, s ) ;程序运行后的输出结果是_。(A)10(B)13(C)21(D)程序进入死循环24以下叙述中错误的是_。(A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出(B)数组名代表的是数组所占存储区的首地址,其值不可改变(C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出下标越界的出错信息(D)可以通过赋初值的方式确定数组元素的个数25以下能正确定义一维数组的选项是_。(A)int num;(B)#define N 100int numN;(C)int num0.100;(D)int N=100;int numN;int N=100; int numN;26有以下程序 #include main() char *p, *q; p=(char *)malloc(sizeof(char)* 20);q=p; scanf(%s %s,p,q);printf(%s %sn,p,q); 若从键盘输入:abc def,则输出结果是_。(A)def def(B)abc def(C)abc d(D)d d27以下不能正确定义二维数组的选项是_。(A)int a22=1,2;(B)int a2=1,2,3,4;(C)nt a22=1,2,3;(D)int a2=1,2,3,4;28已知i、j、k为int型变量,若从键盘输入:1,2,3,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是_。(A)scanf(%2d%2d%2d,&i,&j,&k);(B)scanf(%d %d %d,&i,&j,&k);(C)scanf(%d,%d,%d,&i,&j,&k);(D)scanf(i=%d,j=%d,k=%d,&i,&j,&k);29有以下程序,其中函数的功能是将多个字符串按字典顺序排序#include void f(char *p,int n)char *t; int i,j;for(i=0;ifor(j=i+1;jif(strcmp(pi,pj)0)t=pi; pi=pj; pj=t; main()char *p5=abc, aabdfg, abbd, dcdbe, cd;f(p,5);printf(%dn,strlen(p1);程序运行后的输出结果是_。(A)2(B)3(C)6(D)430有以下程序 #includemain() char str20=Hello,Beijing,*p=str; printf(%dn,strlen(p+20);程序运行后的输出结果是_。(A)0(B)5(C)7(D)2031有以下程序 main( ) char s = Yesn/No,*ps=s ;puts(ps+4);*(ps+4)=0;puts(s);程序运行后的输出结果是(选项D中的第一行是空行)_。(A)n/No Yes /No(B)/No Yes Yes(C)n/No /No(D)Yes/No32_语言负责数据的模式定义与数据的物理存取构建。(A)数据操纵语言(DML)(B)数据控制语言(DCL)(C)结构化查询语言(SQL)(D)数据定义语言(DDL)33以下数据库除_外,均为严格意义上的DBMS系统。(A)Oracle(B)Access(C)Sybase的PowerBuilder(D)SQL Server34设函数fun的定义形式为void fun(char ch,float x) 则以下对函数fun的调用语句中,正确的是 _。(A)fun(abc,3.0);(B)t=fun(D,16.5);(C)fun(65,2.8);(D)fun(32,32);35有以下程序void sum(int a) a0=a-1+a1; main()int a10=1,2,3,4,5,6,7,8,9,10;sum(&a2);printf(%dn,a2);程序运行后的输出结果是_。(A)6(B)7(C)5(D)836下述关于数据库系统的叙述中正确的是_。(A)数据库系统减少了数据冗余(B)数据库系统避免了一切冗余(C)数据库系统中数据的一致性是指数据类型一致(D)数据库系统比文件系统能管理更多的数据37有以下程序char fun(char x,char y if(xreturn y;main() int a=9,b=8,c=7;phintf(%cn,fun(fun(a,b) ,fun(b,c) );程序的执行结果是_。(A)函数调用出错(B)8(C)9(D)738有以下程序void sum(int *a) a0= a1; main() int aa10=1,2,3,4,5,6,7,8,9,10,i;for(i=2; i=0;i-) sum(&aai);printf(%dn,aa0);执行后的输出结果是_。(A)4(B)3(C)2(D)139设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是_。(A)*p=*q;(B)p=q;(C)*p=&n1;(D)p=*q;40在C语言中,函数的隐含存储类别是_。(A)auto(B)static(C)extern(D)无存储类别二、填空题 (1-15每题2分,共30分) 请将答案分别写在答题卡中对应的的横线上。1以下程序的功能是计算:s=1+12+123+1234+12345。请填空。main() int t=0,s=0,i; for(i=1;i=5;i+) t=i+_【1】_; s=s+t; printf(s=%dn,s); 2以下程序段的输出结果是_【2】_。int i=9;printf(%on , i ); 3已知字符A的ASCII码值为65以下语句的输出结果是_【3】_。char ch=B;printf(%c%dnch,ch); 4已有定义:double *p;,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元_【4】_。 5以下程序运行后的输出结果是_【5】_。int a=5;fun(int b) static int a=10; a+=b+; printf(%d ,a);main() int c=20; fun(c); a+=c+; printf(%dn,a); 6有以下程序#include main() char ch1,ch2; int n1,n2ch1=getchar(); ch2= getchar();n1=ch1-0; n2=n1*10+(ch2-0);printf(%dn ,n2);程序运行时输入:12,执行后输出结果是_【6】_。 7以下程序运行后的输出结果是_【7】_。main( ) int x=1,y=0,a=0,b=0; switch (x) case 1: switch (y) case 0: a+; break; case 1: b+; break; case 2: a+; b+; break; printf(%d %dn , a , b ); 8若有以下程序main() int a=4,b=3,c=5,t=0; if(a if(aprintf(%d%d%dn,a,b,c);执行后输出结果是_【8】_。 9以下程序运行后的输出结果是_【9】_。main() int a=1,b=3,c=5; if(c=a+b) printf(yesn); else printf(non); 10以下程序运行时若从键盘输入:10 20 30。输出结果是_【10】_。 #include main() int i=0,j=0,k=0; scanf(%d%*d%d,&i,&j,&k);printf(%d%d%dn,i,j,k); 11以下程序运行后的输出结果是_【11】_。 main() int i,n=0,0,0,0,0; for(i=1;i0) d=b;if(strcmp(,)0) d=c;printf(%ld %sn,d.sno,p-name); 13以下程序运行后输入:3,abcde,则输出结果是_【13】_。#includemove(char *str, int n) char temp; int i; temp=strn-1; for(i=n-1;i0;i-) stri=stri-1; str0=temp;main() char s50; int n, i, z;scanf(%d,%s,&n,s);z=strlen(s);for(i=1;i0) fun(x/2); printf(%d ,x); main() fun(6); 15以下程序运行后的输出结果是_【15】_。 main() int i,j,a3=1,2,3,4,5,6,7,8,9; for(i=0;i3;i+) for(j=i+1;j3;j+) aji=0; for(i=0;i3;i+) for(j=0;ja)|(m=aa)|(m=aa成立,即得n=1,故表达式(n=ba)| (m=aa)| (m=a6分析:m+表示先输出m,再m+1,+n表示先n+1,再输出n,因此第一条输出语句出1235,第二条语句输出3514。7分析:选项D中d是符号常量,不能进行+的运算8分析:必须用一个符号名来代表,而且这个符号名必须在程序中进行指定,否则计算机将不能识别。9分析:因为a10分析:a= 43=00000100|00000011=00000111=7,b= 4 & 3=00000100&00000011=00000000=0。11分析:选择项C中逻辑运算!的优先级高于关系运算、,因此该表达式不能正确表示数学关系|xy|bc)时,首先判断ab的值,54结果为真(C语言中规定真用1表示),然后比较1c,结果为假,执行第一个else后的语句,判断条件(c-1=d)=1是否成立,即判断(3-1=2)=1,结果为真,所以执行printf(%dn,d+1),输出结果3。15分析:本题中选项A、选项B和选项C中的if条件语句都是在a=0时输出y, a!=0时输出x。16分析:本题考查switch语句的执行过程。如果case语句中没有break语句,则顺序执行。因此第一次循环i=0被输出了三次,i=1被输出一次,i=2被输出两次。17分析:此程序实现了将p1p7中的奇数求和的功能,因此,最后的输出结果是j=13+15+17=45。18分析:根据给定的数据输入格式:123456789,第一个scanf语句中,格式字符为%c,只能得到一个字符1,第二个scanf语句中格式字符为%d,变量i得到的数值为23,第三个scanf语句中格式字符为%s,遇到空格就自动结束,因此字符数组s得到的是4560。因而正确答案为选项D。19分析:选项A和选项D都不是C语言中的输入方法,选项C中的变量名前面缺少取地址符&。20分析:sacnf函数中格式控制后面应为变量地址列表,因此选项C和选项D都错误,选项B中&d是指针变量d的地址,与题目不符。由题目可知指针变量d中存放的是变量c的地址,所以正确答案为选项A。21分析:第一次执行for循环时,p指向s1=B,故输出BCD;第二次执行for循环时,p指向s2=C,故输出CD;第三次执行for循环时,p指向s3=D,故输出D。正确答案为D。22分析:本题中第一次执行for循环后,数组x中的前四个元素按由大到小的次序排序,即x0=7、x1=5、x2=3、x3=1、x4=2、x5=4、x6=6、x7=0;第二次执行for循环后,数组x中的后4个元素按由小到大的次序排序,即此时x0=7、x1=5、x2=3、x3=1、x4=0、x5=2、x6=4、x7=6。故正确答案为A。23分析:本题考查break语句和continue语句的用法,continue语句是结束本次循环,当i=3时,i+语句不再被执行,程序进入死循环。24分析:double型的数组也是可以直接用数组名对数组进行整体输入或输出的。25分析:C语言不允许对数组进行动态定义,选项D错误;选项A没有指定数组元素的个数;选项C中定义格式错误;正确答案为选项B,其中N是符号常量。26分析:本题考查%s控制符在scanf函数中的应用。scanf函数中%s控制符的作用是将键盘输入的字符串送到内存,输入的字符串从第一个非空格字符算起,遇到空格或回车就认为是输入结束。本题中执行语句scanf(%s %s,p,q)时,从键盘输入abc def后,指针变量p指向字符串abc0,q指向字符串def0,但是由于p和q指向同一个存储单元,所以存储单元中存放的是def0,printf函数的输出结果为def def。27分析:选项D在定义数组a时没有指定第二维的长度,错误。28分析:scanf函数的格式控制部分中的非格式字符按原样输入,本题指出键盘输入为:1,2,3,各个数据之间用,分隔,所以scanf函数中应包含,,选项D中虽然包括,号,但是还包含非格式字符i=、j=和k=,正确答案为选项C。29分析:strcmp(s1,s2)是比较两个字符串的大小,s1s2时值为正数,s130分析:本题中定义了一个220的二维字符数组str,并且初始化为str0= Hello,str1= Beijing,p是指向char型的指针变量,并指向str数组的首地址,strlen(p+20)=strlen (str1)=7。31分析:本题中ps指向符号串Yesn/No,ps+4表示/的地址,故puts(ps+4)输出符号串/No,执行语句*(ps+4)=0后,字符数组s中的符号串为Yesn0No,0是字符串的结束标志,故puts(s)输出Yes。32分析:数据库管理系统一般提供以下3种数据语言(Data Language),来完成它的功能。(1) 数据定义语言(DDL,Data Definition Language)。该语言负责数据的模式定义与数据的物理存取构建。显然D为正确答案。(2) 数据操纵语言(DML,Data Manipulation Language)。该语言负责数据的操纵,包括查询及增、删、改等操作。(3) 数据控制语言(DCL,Data Control Language)。该语言负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能,包括系统初启程序、文件读写与维护程序、存取路径管理程序、缓冲区管理程序、安全性控制程序、完整性检查程序、并发控制程序、事务管理程序、运行日志管理程序、数据库恢复程序等。33分析:目前流行的DBMS均为关系数据库系统,比如ORACLE、Sybase的Power Builder及IBM的DB2、微软的SQL Server等,它们均为严格意义上的DBMS系统。另外有一些小型的数据库,如微软的Visual FoxPro和Access等,它们只具备数据库管理系统的-些简单功能,不是严格意义上的DBMS系统。34分析:A选项abc的表示字符串,与参数类型不一样。B选项fun没有返回值,不能将其用来赋值。D选项第一个32不是字符,与参数类型不一样。35分析:调用sum(&a2)时,a0=a2=3,a-1=a1=2,a1=a3=4,因此a2=6,可以看到sum函数的功能是将数组的一项的值改成其前一项的值与后一项的值之和。36分析:数据库系统的主要目的是尽量减少和避免数据的冗余。数据库存放数据是按数据所提供的数据模式存放的,它能构造复杂的数据结构以建立数据间内在联系与复杂的关系,从而构成数据的全局结构模式。数据库中的数据具有集成、共享的特点,亦即是数据库集中了各种应用的数据,进行统一的构造与存储,而使它们可被不同应用程序所使用。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值,而数据的不一致性指的是同一数据在系统的不同副本处有不同的值。37分析:本题a=9,b=8,c=7,函数调用fun(a,B)的返回值为8,fun(b,c)的返回值为7,所以fun(fun(a,b) ,fun(b,c) )=fun(8, 7)= 7。38分析:分析函数调用即得。39分析:由定义*p=&n2,*q=&n1,p指向n2的地址,q指向n1的地址,即*p=n2,*q=n1,B、C、D选项只是让p 也指向n1的地址,都没有将n1 赋值给n2。40分析:C语言规定,只要在定义函数时不进行存储类型的显式说明,函数的存储类型就隐含为外部类型,即extern型,外部类型允许其他文件中的函数调用。 二、填空题1 分析:t是用来计算12,123,1234,12345这几个值的,因此应填10*t。2 分析:%o是以八进制输出变量i。i=910=118。3 分析:B的ASCII值是66。char型字符以d%格式输出时,输出该字符的ASCII码值。4 分析:新标准C库提供的malloc函数的类型规定为void*类型,需要进行强制类型转换。5 分析:C语言规定如果全局变量与局部变量同名,在局部变量的作用域内全局变量不起作用。调用函数fun(c)时,在fun内部局部变量a起作用,即a=10,执行语句a+=b+得a=a+b+=a+b=10+20=30,执行printf语句输出30;在main函数内执行语句a+=c+;时,a是全局变量,值为5,因此a=a+c=5+20=25,执行printf语句输出为25。6 分析:本题中n1=10=1,n2=110+(20)=10+2=12。7 分析:本题中执行switch(x)语句时,执行case 1,得到a=a+1=1,b=0。因case 1语句中没有break语句,故继续执行case 2得a=a+1=2,b=b+1=1。8 分析:本题考查的是C语言中if语句的语句体。第一个if语句的语句体为t=a,第二个if语句的语句体为t=a。执行第一个if语句时,条件a9 分析:if语句的条件语句为c=a+b=1+3=4,即条件为真,执行语句printf(yesn);,输出结果为yes。10 分析:scanf(%d%*d%d,&i,&j,&k)中%*表示跳过对应的输入项,即跳过了20,j=30,k没有值读取,仍为0。11 分析:本题中数组n有5个元素且初值为0,以下为for循环的执行过程。第次循环:循环前i=1,执行循环语句n1=n1-1*2+

温馨提示

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

评论

0/150

提交评论