《全国计算机等级二级c语言模拟试题及答案.docx》由会员分享,可在线阅读,更多相关《全国计算机等级二级c语言模拟试题及答案.docx(119页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2011年全国计算机等级二级C语言模拟试题及答案(1)一、填空题1, c语言中基本的数据类型有:、。2、C语言中普通整型变量的类型说明符为,在内存中占 字节,有符号普通整型的数据范围是。3,整数-35在机内的补码表示为。4、执行下列语句int a=8; a+=a-=a*a;后,a的值是。5、有如下语句:char A =,!1 am a student);该字符串的长度是. A3= 6,符号“a”和/的区别是。7、所谓“指针”就是。“&”运算符的作用是。“*”运算符的作用是。8、有如下输入语句:scanf(a=%d,b=%d,c=%d,&a,&b,&c);为使变量a的值为1 b的值为3,c的值为
2、2,从键盘输入数据的正确形式应是 0二、选择题1、设整型变量a为5,使b不为2的表达式是()。A. b=a/2B. b=6-(a)C. b=a%2D. b=a3?2:l2、为了避免嵌套的条件分支语句ifelse的二义性,C语言规定:C程序中的else总是与() 组成配对关系。A.缩排位置相同的ifB.在其之前未配对的ifC.在其之前未配对的最近的ifD.同一行上的if3、以下程序的输出结果是()。int x=10,y=10;printf(44%d %dnM,xy);A. 10 10B. 9 9C. 9 10D. 10 94、设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i个元索
3、的地址 为()。A. P+i*2B. P+(i-l)*2C. P+(i-l)D. P+i5、选出下列标识符中不是合法的标识符的是()。A. hot doB. catlC. _priD. 2ab6、以下程序的输出结果是()。int a=5;float x=3.14;a*=x*(tE, - A);printfC4%fn,(float)a);A. 62.000000B. 62.800000C. 63.000000D. 627、设有说明double(*pl)N;其中标识符pl是()。A.N个指向double型变量的指针。B.指向N个double型变量的函数指针。C. 一个指向由N个double型元素组
4、成的一维数组的指针。D.具有N个指针元素的一维指针数组,每个元素都只能指向double型量。8、在C程序中有如下语句:char *func(int x,int y);它是()。A.对函数fiinc的定义。B.对函数fimc的调用。C.对函数fiinc的原型说明。D.不合法的。9,以下程序的输出结果是()。char str15=,hello!M;printfC%dn”,strien(str);A. 15B. 14C. 7D. 610、分析以下程序的输出结果是()omain()int a=5,b=-l,c;c=adds(a,b);printfT%d”,c);c=adds(a,b);printfi%
5、dn,c); int adds(int x,int y) static int m=0,n=3; n*=+m; m=n%x+y-H-; retum(m); A. 2,3 B. 2,2 C. 3,2 D. 2,411、下列描述中不正确的是()。 A.字符型数组中可能存放字符串。 B.可以对字符型数组进行整体输入、输出。 C.可以对整型数组进行整体输入、输出。 D.不能在赋值语句中通过赋值运算符”对字符型数组进行整体赋值。12、以下程序的输出结果是()。/define Rx) x*x main() int a=6,b=2,c; c=f(a)/f(b); printfT%dn”,c); A. 9 B
6、. 6 C. 36 D. 1813、设有如下定义:int x=10,y=3,z;则语句 printf(%dn”,z=(x%y,x/y);的输出结果是()。 A. 1 B. 0 C. 4 D. 314、定义如下变量和数组:int i; int x33=l,2,3,4,5,6,7,8,9);则语句 for(i=0;iv3;i) printf(”d M,xi2-i);的输出结果是()。 A. 1 5 9B. 1 4 7C. 3 5 7D. 3 6 915、以下对二维数组a进行正确初始化的是()A. int a23=l,2,3,4,5,6;B. int a 3=1,2,3,4,5,6;C. int a
7、2 =1,2,3,4,5,6;D. int a2 =1,2,3,4;16、两次运行下面的程序,如果从键盘上分别输入6和3,则输出结果是()。int x;scanf(n%dM,&x);iRx+5) printf(M%dH,x);else printf(n%dnH,x -);A. 7 和 5B. 6 和 3C. 7 和 4D. 6 和 417、设有如下定义:char *aa2=abcd,ABCD;则以下说法中正确的是()。A)aa数组成元素的值分别是abed和ABCDB)aa是指针变量,它指向含有两个数组元素的字符型一维数组C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址D)a
8、a数组的两个元素中各自存放了字符宜和A的地址18、下列程序的输出结果是()。char *pl=abcd, *p2=ABCD, str50=xyz;strcpy(str+2,strcat(p 1 +2,p2+1);printf(M%s,str);A. xyabcABB. abcABzC. ABabczD. xycdBCD19、下列程序的输出结果是()。int a5=2,4,6,8,10),*P,* *k;p=a; k=&p;printf(M%dM,*(p+);printf(M%dnH,* *k);A. 4 4B. 2 2C. 2 4D. 4 620、不能把字符串:Hello!赋给数组b的语句是(
9、)。A. charB. char b10; b=Hello!”;C. char b10; strcpy(b,nHello!H);D. char b10=MHello!M;三、读程序题1、float 43.1415927;printf(%f,%5.4f,%3.3Rff);则程序的输出结果是 o2、int x=6, y=7;printf(dj,x+);printfp%drT,+y);程序的输出结果是 o3、a=3;a+=(al)?a:l;printf(%d,a);结果是。4、for (a=l,b=l;a=20) break;if(b%3=l)b+=3; continue;b-=5;程序的输出结果a
10、的值为。5、 int y=l, x, *p, a =2,4,6,8,10);p=&al;for(x=0;x3;x+)y + = * (p + x);printf(%dn,y);程序的输出结果y的值是 o四、程序填空题1、从键盘上输入10个数,求其平均值。main()int i;float f,sum;fbr(i=l,sum=O.O;iamax) amax=x;iff ) amin=x;scanfC%f,&x);printfinamax=%fnamin=%fnn,amax,amin); 五、编程题1 .三个整数a、b、c,由键盘输入,输出其中最大的一个数。2 .输出1900-2000年中所有的闰
11、年。每输出3个年号换一行。(判断闰年的条件为下面二者 之一:能被4整除,但不能被100整除。或者能被400整除。)3 .请编一个函数int ftm(int a),它的功能是:判断a是否是素数,若a是素数,返回1;若不 是素数,返回0。A的值由主函数从键盘读入。4 .有N个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩,从键盘上输入N 个学生的信息,要求输出总平均成绩最高的学生信息,包括学号、性别、姓名和平均成绩。参考答案一、填空题整型、实型、字符型。(2) int , 2 , -32768- +32767(3) 1111111111011101 (4) - 112 (5)14, m(6
12、) a”是字符串常量,而R是字符常量。(7)存放地址值的变量或常量,或者答地址。(8)取运算对象的地址。取指针变量所指的内容。(8) a=l,b=3,c=2二、选择题1、C 2、C 3、D 4、B 5、D6、A 7、C 8、C 9、D 10、A11、C 12、C 13、D 14、C 15、B16、C 17、D 18、D 19、C 20、B三、阅读程序题(1) 3.141593,3.1416,3.142 (2) 6, 8 (3) 4 (4) 22 (5) 19四、程序填空题1、scanf(%f,&f); sum+=f;2、fbpen(myfHe,w) fclose(fp);3、x=0.0 x=a
13、min五、编程题1、main()int a,b,c;printf(“请输入三个整数:”);scanfp%d,%d,%d,&a,&b,&c);ifiaB)ififbelse printf(fcmax=%dn,b);else if(aelse printf(44max=%dn,a); 2、#includeMstdio.hMmain()int I,n;fbr(n=0,I= 1900;1=2000;1+)ifU%4=0&【+ 0!=0|I0=0)printfT%d ”,I); n-H-; ifi(n%3=0)printR%); 3、#include”stdio.hint fun(int a)int I
14、;if(a=2) return 1; 1=2;while(a%I) !=0&l=sqrt(float)a)I;if(a%I=O)printRd is not a prime!”,a);return 0; printf(64%d is a prime!”,a);return 1; main() int x;printRn please enter a number:);scannd”,&x);printfi%dn,ftin(x); 4、#includeMstdio.hM#define N 3struct studentlong stu num; char sex;char name15; int
15、 score4;float average; ;main()int Ij,index; float sum,max;struct student stuarrN;fbr(I=0;IN;I+)printflfnplease input %d student infbnnation:nH,I+1);scanfi(,%ld,%c,%s,&stuarrI.stu_num,&stuarrI.sex,stuarrI.name);fbr(j=0J4j+)scanf(M%d,&stuarrI.scorej); fbr(I=0;IN;I+) sum=0.0;fbr(j=0;j4;j-H-)sum+=stuarr
16、I.scorej;stuarrI.average=sum/4.0; max=stuarr0 .average;index=0;fbr(I=l;Imax)max=stuarrI .average;index=I; pHntff总平均成绩最高的学生信息是学号=%ld,性别=%c,姓名=%s,平均成绩=%4.111”跳皿门 index.stu_num,stuarrindex.sex,stuarrindex.name,stuarrindex.average);2011年全国计算机等级二级C语言模拟试题及答案(2)一、填空题1, c语言中普通整型变量的类型说明符为,在内存中占 字节,有符号普通整型的数据
17、范围是。2、C语言中基本的数据类型有:、 o3、设整型变量n的值为2,执行语句n+=n=n*n后,n的值是。4、共用体和结构体的定义格式类似,不同点是。5、有如F输入语句:scana=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1, b的值为3, c的值为2,从键盘输入数据的正确形式应是。6、有语句:char A =I am a student”;该字符串的长度是, A3=。7、符号“a”和的区别。8、下列程序的输出结果是。int ast(int x,int y,int * cp,int * dp) *cp=x+y; *dp=x-y; main() int a=4,b=3,
18、c,d;ast(a,b,&c,&d);printf(H%d,%d/n,c,d); 二、选择题1、以下选项中属于c语言的数据类型是()。A.复合型B.双精度型C.逻辑型D.集合型2、以下说法中正确的是()。A. C语言程序总是从第一个的函数开始执行B.在C语言程序中,要调用的函数必须在main()函数中定义C. C语言程序总是从main。函数开始执行D. C语言程序中的main。函数必须放在程序的开始部分3、选出下列标识符中不是合法的标识符的是()。A. hot doB. catlC. _priD. 2ab4、下列描述中不正确的是()。A、字符型数组中可能存放字符串。B、可以对字符型数组进行整体
19、输入、输出。C、可以对整型数组进行整体输入、输出。D、不能在赋值语句中通过赋值运算符对字符型数组进行整体赋值。5、若已定义:int a9, *p=a;并在以后的语句中未改变p的值,不能表示al地址的表达式 为()。A. p+1B. a+1C. a+D. +p6、设有如下定义:int x=10,y=3,z;则语句 printf(%dn”,z=(x%yMy);的输出结果是()。A. 1B. 0C. 4D. 37、定义如下变量和数组:int i, 乂33=123,4,5,678,9;则下面语句出0=0;15) printfC%d”,x);else printfV%dn”,x -);A. 7 和 5B
20、. 6 和 3C. 7 和 4D. 6 和 4 10、设有如下定义:char *aa2=”abcd”JABCD”;则以下说法中正确的是()。A)aa数组成元素的值分别是“abed”和ABCDB)aa是指针变量,它指向含有两个数组元素的字符型一维数组C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址D)aa数组的两个元素中各自存放了字符尔和A的地址11、以下语句的输出结果是()。int a=-l,b=4,k;k=(+ +aO)&!(b - -=0);printfC%d,%d,%dn”,k,a,b);A. 1,0,4B. 1,0,3C. 0,0,3D. 0,0,412、下列程序的
21、输出结果是()。char *pl=,abcd,t, *p2=HABCDH, str50=Hxyz;strcpy(str+2,strcat(p 1 +2,p2+1);printff%s”,str);A. xyabcABB. abcABzC. ABabczD. xycdBCD13、执行下面的程序后声的值是()。#define SQR(X) X*Xmain() int a=10,k=2,m=l;a/=SQR(k+m)/SQR(k+m);printf(dn”,a); A. 10B. 1C. 9D. 014、设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i个元素的地 址为()。A. P+
22、i*2B. P+(i-l)*2C. P+(i-l)D. P+i15、下列程序执行后输出的结果是()。int d=l;fun (int p) int d=5;d + =p + +;printfi(H%d;,d); main() int a=3;fun(a);d + = a + +;printf(M%dn,d); A. 8, 4B. 9, 6C. 9, 4D. 8, 516表达式:10!=9的值是()。A. trueB,非零值C. 0D. 117、若有说明:int ij=7, *p=&i;,则与i=j;等价的语句是()。A. i= *p;B. *p=*&j;C. i=&j;D. i=* *p;18
23、、不能把字符串:Hello!赋给数组b的语句是()。A. char b10=H,eT,T,o,T;B. char b10; b=HHello!M;C. char b10; strcpy(b,Hello!”);D.char b10=HHello!n;19在C程序中有如下语句:char *fiinc(int x,int y);它是()。A.对函数func的定义。B.对函数fimc的调用。C.对函数ftinc的原型说明。D.不合法的。20、以下程序的输出结果是()。char str15=hello!”;printf(M%dn,strlen(str);A. 15B. 14C. 7D. 6三、阅读程序题
24、1、int x=6, y=7;printf(d-,xH); printfT%dn”,+y); 程序的输出结果是。2、float 氏3.1415927;printf(u%f,%5.4f,%3.3ff,f,f);则程序的输出结果是。3、a=3;a+=(a l)?a: 1; printf(u%d,a);结果是。4、main() int a5=2,4,6,8,10,*P,* *k;p=a; k=&p;printf(d*(p+);printf(%dnM,* *k);程序的输出结果是 o5、 main()int a,b;for (a= 1 ,b= 1 ;a=20) break;if(b%3=l)b+=3;
25、 continue; b=5;程序的输出结果a的值为 o四、程序填空题1、求主次对角线之和。main()static int a 3=9,7,5,1,2,4,6,8;int Ij,sl=0,s2=0;fbr(I=O;I3;I+)forG=0;j3;j+)if()sl=sl+aIj;if( ) s2=s2+aIj;printf(fck%dn%dn,s 1 ,s2);2、从键盘上输入10个数,求其平均值。main()int i;float f,sum;fbr(i=l,sum=0.0;i 7, 1 o二、选择题1、B 2、C 3、D 4、C 5、C6、D 7、C 8、D 9、C 10、D11、D 1
26、2、D 13、B 14、B 15、A16、D 17、B 18、B 19、C 20、D三、阅读程序题(1) 6, 8 (2) 3.141593,3.1416,3.142 (3) 4 (4) 2, 4 (5) 8四、程序填空题1、I=j I+j=2 2、scanfC%f,&f); sum+=f;3、fbpen(myfHe,w) fclose(fp);五、编程题1、main() int a,b,c;printf(“请输入三个整数:);scanf(d,%d,%d”,&a,&b,&c); if(aB)if(belse printfi(4imax=%dn,b);else ififaelse printma
27、x=%dn”,a); 2、#include,stdio.hvmain() int I,a;fbr(I=l;I=10;H-+) scanfp%d”,&a); if(a%7=0)primfC%d”,a); break; printffnot exist); 3、float average(float array ,int n) int I;float aver,sum=arrayO;fbr(I=l;IN;I+)sum=sum4-array I ;aver=sum/n;retum(aver); main() float ave,score10;int I;fbr(I=0;I10;I-H-)scanf
28、(%f,&scoreI);ave=average(score, 10);printfi(n%fnn,ave); 4、 #includeMstdio.h#define N 3struct student long stu num;char sex;char name15;int score4;float average; ;main() int I,j,index;float sum,max;struct student stuarrN;for(I=0;IN;I+) printfifplease input %d student infbrmation:nn,I+1);scanf(ldc,%sM
29、,&stuarrI.stu_num,&stuarrI.sex,stuarrI.name);for(j=0j4y+)scanf(,%dM,&stuarrI .scorej); fbr(I=0;KN;I+) sum=0.0;fbr(j=0J4;j+)sum+=stuarrI. scorej ;stuarrI.average=sum/4.0; max=stuarr0 .average;index=0;fbr(I=l;Imax)max=stuarrI.average; index=I; printf(总平均成绩最高的学生信息是学号=%ld,性别=%c,姓名=%s,平均成绩=%4.lfn”,stuarr
30、index.stu_num,stuarrindex.sex,stuarrindex.name,stuarrindex.average); 2011年全国计算机等级二级C语言模拟试题及答案(3)单项选择题1 .设 int x=l,y=l;表达式(!x+ | y-)的值是A. 0B. 1C. 2D. -12 . main() int n;(n=6*4,n+6),n*2;printf(tin=%dn,n);此程序的输出结果是.A. 30B. 24C. 60D. 483 .若有如下定义,则 是对数组元素的正确的引用。int a10 , *p ;P=a ; p=a ; p=a ; p=a ;A. *&a
31、10B. allC. *(p+10)D. *p4 .设整型变量n的值为2,执行语句“n+=n=n*n; 后,n的值是A. 0B. 4C.4D. 25.以下不能正确定义二维数组的语句是A . int a22=l,2;B. int a2=l,2,3,4;C. int a22=l,2s3;D. int a2=l,2,3,4);6,程序段 的功能是将变量u、s中的最大值赋给变量t oA. iflus) t=u;t=s;B. t=u; if(t ) t=s;C. if(us) t=s;else t=u;D . t=s; if(u ) t=u;7.下列程序段的输出结果是 ovoid main() int
32、k;for (k=l;k=0|b=0) &(a0 |b=0 & b=0)&(a0 & b0) &(a+b010 . C语言中,合法的字符型常数是 oA. AB. A”C. 65D. A11 .设有数组定义:char array卜China”;则数组所占的空间是。A. 4个字节B. 5个字节C. 6个字节D. 7个字节12 .若变量c为char类型,能正确判断出c为小写字母的表达式是 A. a=,a,) | (c=c)D. (c=a) & (cv=z) 13.设有定义:long x=-123456L;则以下能够正确输出变量x值的语句是A. printf(x=%dn”,x)B. printf(x=
33、%ldn”,x)C. printfpx= M,x)D. printf(x=%LDn”,x);14.下列关于指针定义的描述,是错误的。A.指针是一种变量,该变量用来存放某个变量的地址值的。B.指针变量的类型与它所指向的变量类型一致。C.指针变量的命名规则与标识符相同。D.在定义指针时,标识符前的“*”号表示后面的指针变量所指向的内容。15 .已知:int x; int y10;下列 是合法的。A. &xB. &(x+3)C. &5D.&y16 .指出下面正确的输入语句 oA. scanfCa=b=%d,&a,&b);B. scanfT%d,%d,&a,&b);C. scanRc”,c);D. s
34、canfC4% f%dn&f);17 . C语言中以追加方式打开一个文件应选择 参数。A. r”B. 7C. rb”D. “a”18 . Break语句的正确的用法是()。A.无论在任何情况下,都中断程序的执行,退出到系统下一层。B.在多重循环中,只能退出最靠近的那一层循环语句。C.跳出多重循环。D.只能修改控制变量。19 .为表示关系xNyNz,应使用C语言表达式A. (x=y) &(y=z)B. (x=y) AND (y=z)C .(x=y=z)D. (x=z)&(y=z)20 .以下可以作为C语言合法整数的是 oA. 1010BB. 0368C. OXffaD. x2a221 .在函数中
35、默认存储类型说明符的变量应该是 存储类型。A.内部静态B.外部C.自动D.寄存器二.判断题1. C语言源程序文件通过了编译、连接之后,生成一个后缀为.EXE的文件。()2 .在C程序中,函数既可以嵌套定义,也可以嵌套调用。()3 .在C程序中,APH和aph代表不同的变量。()4 .表达式0195是一个八进制整数。()5 .表达式_ya是不合法的C语言标识符。()6 . C程序总是从main()函数的第一条语句开始执行的。()7 . A=7 等价于 a=a-7。()8 .利用iblose函数关闭已打开的文件。()9 .数组名可以作为参数进行传递。()10 . 执行 printff%x, 123
36、45);,输出 12345 .()三、填空1 . C语言的预处理语句以 开头。2 .表达式7+82 & 25 %5的结果是3 .下列程序段是从犍盘输入的字符中统计数字字符的个数,用换行符结束循环。int n=0, ch;ch=getchar();while( ) if ( ) n+;c=getchar( );4 . C语言中putchar(c )函数的功能是。5 . int *p 的含义是.6 .定义用为文件型指针变量的定义方法为 o7 .数组int a34洪定义了 个数组元素。四、读出程序。1 .改正下列程序中不正确的语句。main() int a=8 , b=l;a=a+b;b=a*b;p
37、rintfC,%d, %dM,a,b); 2 .写出下列程序的运行结果。fun(int a, int b) ifi(ab) return (a);Else return (b); main() int x=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printfT%dn”,r); 3 .改正下列程序中不正确的语句。main() int n ;float s=1.0;for(n=10;nl;n-)s=s+l/n;printff%6.1fn,s); 4 .写出下列程序的运行结果。main() int n;For(n=3; n=10; n+) if(n%5= =0) break;
38、 PrintfT%d”,n); 5 .写出下列程序的运行结果。#include “stdio.hmain() int a=l,2,3,-4,5);int m,n,*p;p=&a0; p=&a0;m=*(p+2);n=*(p+4);printfp%d %d %d ,*p,m,n); 五.编程序1 .编程计算下列表达式:s=l!+2!+3!+4!+10!2 .从键盘上输入a与n的值,计算sum=a+aa+aaa+aaaa+(共n项)的和。例a=2, n=4,贝ij sum=2+22+222+2222。3 .求3X3矩阵的主对角线元素之和。4 .从键盘上输入10个数存入一维数组中,求这10数中的最大值与最小值并输出。5 .从键盘上输入若干个字符存入文件write.txt中,遇到回车键输入结束。(用“n”表示回车 键)参考答案单项选择题1 B 2