《大学计算机二级C语言考试福建省计算机二级c语言模拟卷试题汇总.docx》由会员分享,可在线阅读,更多相关《大学计算机二级C语言考试福建省计算机二级c语言模拟卷试题汇总.docx(86页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第12章福建省 C 语言等级笔试模拟试卷12.1要点导读 C语言二级等级考试的笔试时间为120分钟,题型有选择题与填空题两种。选择题每题1.5分,共40题,满分60分;填空题每空2分,共20空,满分40分。 C语言笔试的选择题每题提供A、B、C、D四个答案供考生选择,四个答案中只有一个是正确的,考生需用铅笔在答题卡上对应位置涂黑所选答案的字母。 C语言笔试的填空题答案,考生须清楚地写在答题纸上,每空可能有多种写法,人工判卷时会正确处理。 考生在完成选择题时,可采用排除法,先否定干扰性小的答案,对相似而又把握不定的答案,即干扰性强的答案,务必仔细分辨。 对填空题,考生首先要看请题意,在题意的指导
2、下,读懂程序,联系上、下语句,然后再着手填写。12.2试卷(1)12.2.1 选择题(本大题共40个选项,1】【40】每个选择项1.5分,共60分)1 .下列属于C语言的是1.1 A) printf(%dn,a)B)#include C) a=b;b=c;c=a;D)/* This is a program */2 .设有语句intx=2,y=3;,则表达式x=(y=3)的值是2】。3 2A)0B)1C)2D)34 . C语言的下列运算符中,优先级最高的运算符是【3】。5 3A)+B)+=C)|D)!=6 .已知A的ASCII码的十进制值为65, O的ASCII码的十进制值为48,则以下程序运
3、行结果是【4】。main() charchl,ch2;chl=A+53;ch2=A+63;pri n tf(n %d,%cn *,ch l,ch2);)4 A) 67,DB) C,DC) C,68D) 67,687 .在C程序中,设一表达式含有ini、long、unsigned和char类型的常数和变量,则表达式的最后运算结果是5,这四种类型的转换规律是6L56A) intB) charC) unsignedD) longA) int-unsigned-long-charC) char-int-unsigned-longB) char-int-long-unsignedD) char-unsi
4、gned-long-int6,若a、b均为整数且a#b, bWO,则表达式a/b*b+a%b的值是7o7 A) aC) a被b除的余数部分B) bD) a被b除商的整数部分7.下列语句中,符合C语言语法的赋值语句是171。8 A) a=7+b+c=a+7;C) a=7+b,b+,a+7;B) a=7+b+=a+7;D) a=7=b,c=a+7;8.为表示x2y2z,须用的C语言表达式为1919 A) (x=y)&(y=z)C) x=y=zB) (x=y)AND(y=x)D) (x=y)&(y=z)10 inta,b;,用语句 scanf(%d%d”,&b);输入 a、b 值时,不能作为输入数据
5、分隔符的是10110 A)空格B)回车D)Tab10.以下程序的运行结果是I1L main() inta=-l,b=4,k;k=(a+=0)&(! b5) printf(H%dn,a);else printf(n%dnn,a-);D) 一个不合法的表达式 则输出结果是【14】。14 A) 7B) 4C)D)14.以下程序运行后,a的值是【15】。 main() int a,b;for(a= l,b=2;a=20) break;if(b%3=l) b+=3; continue; b+=5;15 A) 10B) 9C)D)15.以下程序段的运行结果是【16】。int x=3;doprintf(n%
6、3d, x-=2);while(!(-x);16 A) 1B) 30C)死循环D)1 -216.下列程序段中,非死循环的是【17】。17 A) int i=100;while( 1) i=i% 100+1;if(i=100) break;)B) int k=0;doC) int s=10;while(+s%2+s%2)+k;while(k=0);printf(Hdnn,k);s+;17.设已定义chars=NameAddress023n;,则字符串所占的字节数是【18】。18 A) 19B) 15C) 18D) 1418.以下程序段的运行结果是【19】。main() int a=2,4.6,8
7、,10,y=l,x;for(x=0;x3;x+) y+=ax+l;printf(%dn,y);19 A)17B)18C)19D)2019.已定义char c=Fujian; inti;,则下列函数调用中错误的是【20】。20 A) printf(%s,c);B) for(i=0;i8;i+) printf(%c,ci);C) puts(c);D) for(i=0;i8;i+) puts(ci);20 定义char x8; inti;,为了给该数组赋值,下列语句正确的是【2121 A) x8=Turbo C;B) x=Turbo C;C) x=Turbo C;D) for(i=0;i7;i+)
8、xi=getchar();21 下程序运行结果是【22】。main() charaD5=ABCD,1234,abed,5678,EFGH);int i;for(i=0;i3;i+) printf(%s,ai);22 A) AlaB) ABCD1234abcdC) ABCD) ABCD1234abcd5678EFGH22.设inta4=0,0;,则下列描述错误的是:【23】。23 A)数组a的每个元素都可得到初值0B)二维数组a的第一维大小为1C)数组a的行数为1D)只有元素a0和可得到初值0,其余元素均得不到初值023.设有下列语句,则【24】是对a数组元素的不正确引用,其中0Wi10。int
9、 all 0=0,1,2,34,5,6,7,8,9,*p=a;24 A) ap-aB)*(&ai)C) piD)*(*(a+i)24.若有以下程序:main char ch=I am student!,*p;p=ch;printf(%xn,p);printf(%xn,p+9);其中有两个printf(),如果第一个printf()运行结果是ffd6,则第二个printf()运行结果是【25】。25 A) ffdfB) ffe8C) ffd6D) ffcf25.以下程序的运行结果是【26】。main() int i;char aanPXW/cVdVeVf;char (*p)3=aa;for(i=
10、0;iy?4-+x:+y;prinlf(d,%d,%dn”,x,y,z);31 A)1,2,3 B)1,3,3 C)2,3,3 D)2,2,331.若有以下程序段,则z的二进制值是【32】。int x=3,y=2,z;z=xAy2;32 A)0000000000001011B)0000000000000100C)0000000011110100D)000000000000000132.以下程序段的运行结果是【33】。 main() int i=4,j;j=i;pic(i+2*j-2;*);putchar(n);for(j-=2;j=0;j-)pic(3-j/1);pic(i+2*j, putc
11、har(n);)pic(int len,char c)int k;for(k=1;k=len;k+)putchar(c);)B)D)33 A)*33.指出以下程序所指处的运行结果。 void fl (int x,int y,int *sum)*sum=x+y;;+x;+y;void f2(int a,ini b,int *product)*product=a*b;a+二b;b-=a;main() int a=10,b=20,c=100,(*f)();f=fl;(*D(a,b,&c);/*运行结果是34 */运行结果是35 */printf(n%d,%d,%dna,b,c);f=f2;(*f)(
12、a,b,&c);printf(n%d,%d,%dn,a,b,c);34 A)11,21,100B)11,21,30C)10,20,30D)11,21,3335 A)30,-10,300B)30,-10,200C)33,-12,231D)10,20,20034.以下程序中的循环执行了【36】次。# define N 2# define M N+l# define NUM (M+l)*M/2 main() int i,n=0;fbr(i=0;iNUM;i+) n+;primf(dn”,n);36 A)5B)6C)8D)935.编译预处理命令以37结尾。37 A);B).C)0D)回车键36.若定义
13、如下结构,则能打印出字母M的语句是【38】。struct person char name9; int age;struct person class10=,Wujun,20,Liudan,23,MalingH,21,zhangming0;38 A) printf(M%cnH,class3.name);B) printf(%cn”,class.name0);C) printf(cn”,class.name。);D) printf(M%cnclass3.namel);37.以下程序段的运行结果是【39】。enum weekday aa,bb=2,cc,dd,ee week=ee;printf(M
14、%dnH,week);39 A) eeB)5C)2D)438.以下程序的功能是【40】。#include main() FILE *fp;long int n;fp=fopen(,wj.txt,rbn);fseek(fp,O,SEEK_END);n=ftell(fp);fclose(fp); printf(kT,n);40 A)计算文件wj.txt的起始地址B)计算文件wj.txt的终止地址C)计算文件wj.txt的长度D)将文件指针定位到文件末尾12.2.2 填空题(本大题共20个空,每个空2分,共40分。请将答案写在答题卡对应栏中,答在试卷上不得分)1 .以下程序的运行结果是(1L mai
15、n()float a=365.7189;int b=12,c;c=(int)a+b;printf(Ha=%.2f,b=%d,c=%dn,a,b,c);2 .堆栈是一种先进后出的数据结构。以下程序模拟堆栈。#define N 10 main()int aNJ;int i,*p=a;while(pa) printf(H%d3);/*出栈*/3 .将指定的字符串用冒泡排序法从大到小排序。 main() char *str=*Visual FoxproM,4;int n,i;n=5;while(n1)for(i=0;in;i+) if(stristri+l) temp=stri; stri=stri+
16、l; stri+l=temp; printf(n%sn,str);4 .以下程序的功能是将用户运行程序时键入的参数作为字符串连接起来#include main(int argc,char *argv) int i;fbr(i=1;iargc-l;i+) strcat (argvl,6);printf(M%snH,argv1);5 .以下程序的运行结果是71#define PR(ar) printf(d”,ar)main()intj, a=1,3,5,7,9,11,15),*p=a;for(j=3,j;j-)case Lease 2:PR(*p+);break;6 .以下程序实现从10个数中找出
17、最大值和最小值。int max,min;find_max_min(int *p,int n)max=min=*p;for(q=p;q*q) min=*q;main()int i,num10;printf(Input 10 numbers:);for(i=0;i10;i+) scanf(n%dn,&numi);find_max_min(10,10);printf(,max=%d,num=%dn,max,min);7 .以下程序是将1到9这9个数字分成三个3位数,要求第一个3位数正好是第二个3位数的二倍,是第三个3位数的三倍(重复的数应剔除)。根据题意,只要确定第一个3位数后,再计算另外两个数,而
18、第一个3位数可设置在(111-333)范围内。int a9;main()int m;for(m=111;mv=333;m+)if(ok(m,a)&ok(2*m,a+3)&ok(3*m,11)printf(,%d,%d,%dn,m,2*m,3*m);ok(int t,int *z)/*分解t,存入z指向的三个数组元素,若满足,要求返回1*/int *pl,*p2;for(p 1=z;p 1z+3;p 1+)*pl=t%10;/*分解整数 m*/t=12;for(p2=a;p2pl;p2+)/*查询分解出的数字是否重复*/if(*pl=0|13)return 0;14;8 .以下程序的运行结果是如
19、下矩阵。矩阵中的每个元素的形成规律是:正对角线和其对角线以上的元素其值为1,其他元素值为:行下标-列下标+1。1111121111321114321154321main()int ij,a55;for(i=0;i=4;i+)for(j=0;j5;j+)if(15)ai|j=l;else 16;for(i=0;i5;i+)for(j=0;jy不成立,取+y的值,而+x不需要计算,所以x 为原值1,y为3, z也为3。32 A分析:求位运算时,要化为二进制形式。x (=3)的二进制数为00000011, y (=2)的二进制数为00000010,移位运算符“”的优先级高于异或运算符“八”,所以先进
20、行y2运算,得到00001000,再与x按位异或,得到00001011(高8位全为0,略去)。33 D分析:在main函数中多次调用pic函数,pic函数根据不同的数据,输出不同个数的*【34C 35 D分析:本题是函数指针变量f的应用。若=门,则f就指向fl函数的入口地址,而(*f)(a, b,&c)等价于fl(a,b,&c)函数的调用。若f=f2,则f指向f2函数的入口地址,此时(*f)(a, b,&c)又等价于f2(a, b,&c)函数的调用。【36】C分析:在for循环中表达式iNUM进行宏展开为i(M+l)*M/2f(N+l+l)*N+l/2f (2+l+l)*2+l/2f 8。37
21、1 D分析:C语言规定。【38】B分析:M字母在class结构数组的class.nameO中,注意结构成员的表示方法。【39】B分析:枚举中,每个枚举常量可由系统给定,也可由用户设置,但遵守后一枚举常量为前一枚举常量加1的原则。bb由用户设定为2, cc为3, dd为4, ee为5。40 C分析:fseek函数是源文件指针移动的函数,fseek(fp,0, SEEK_END)表示源文件指针从文件尾移动0个字节,因而文件指针当前是指向文件尾。ftell函数是用来测定该文件指针当前的位置,也即文件尾位置,所以它表示了文件wj.txt的文件长度。2.填空题:(每题2分,所有答案均区分大小写)I J
22、a=365.72,b=12,c=377分析:a是实型变量,经(int)a强制转换为整型与b整型变量相加,赋给c整型变量,a 本身仍为实型变量。2 a+N分析:用p指针变量指向a数组,通过p的移动,将数据依次压入数组各元素的地址中, a0的数据先得到,然后依次得到al、a2元素的值,p指针变量一直下移指向最后一个元素即a9为止。3 *(-p)分析:p指针指向最后一个元素,利用while循环与输出函数,经-p操作,先输出a9,然后依次输出a,a0。4 temp分析:在程序中有temp变量在使用,因而必须先定义。5 strlen(str)分析:本题是排序题,必须对其所有元素遍历,因此,就需要知道所给
23、字符串的长度。6 argvi+l分析:本题考查带参数的main函数,其参数由命令行输入的字符串决定,argc是输入字符串的个数(其中第一个字符串必须是该文件名),argv是指针数组,每个元素都是一个输入的字符串。7 103分析:for循环的初值是从3开始的,所以首先执行case3,输出p指针变量指向的首元素I,但随后该元素值要减1。当j为2时,p指向的仍是首元素,只是其值已变为0;随后 p下移指向al元素。当j为1时,输出al的值3, p指针又要下移指向a,但此时j已为0,循环结束,所以本题的输出为103。8 p+n分析:max、min变量为全局变量,初值都具有num数组的nun0值(p指针变
24、量指向 I num数组),而q指针变量与p都指向num数组,在for循环中,p指针指向不变,而q指针变量移动,直到后一个数组元素为止,所以,p+n是q的判断条件。9 max*q得到提示。10 num分析:因为形参是p指针变量,所对应的实参必然是数组名或指针变量,而主函数中并无指针变量,所以就一定是数组名了。11 a+6分析:根据题目要求,每一个数是由3位组成,在第二个数中已看到是a+3,第三个数必然是a+6。12 t/10分析:因为p指针变量指向a数组,需要将整数m右边的一位数存放在a数组的对应元素中,所以,t在不断变化,取t/10才能用t%10不断取出右边的一位数。13 *p2=*pl分析:
25、为排出重复出现的数字。14 return 1分析:与【13】相反,当不是重复数字,则是所需的数,返回值为真。15 inext分析:让p不断指向下一个结点,它是本结点的结构指针变量next,其成员用,next表示。12.3试卷(2)12.3.1 选择题(本大题共40个选项,1】40每个选择项1.5分,共60分)1 .在C语言中,用户能使用的合法标识符是Do1 A)姓名B)-xyzC)5iD) For2.执行语句 printf(dn,strlen(abcx41n);的输出结果是22 A)5C) abcAB)7D) abcx413.在C语言中,合法的字符常量是3o【3】 A)字B)“AC)ABCD)
26、x414. C语言中简单数据类型包括414 A)整型、实型、字符型B)整型、实型、逻辑型C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型5.在C语言中,不合法的实型常量是【515 A)-0.123B)-.123C)-1.23e-lD)-123e-3.06.以下关于C语言变量的叙述,错误的是【6】。6 A)变量名必须由字母或下划线开头B)变量按所定义的类型存放数据C)不同基本类型的变量之间不能混合运算D)变量的类型确定了变量的取值范围7.以下整数值中,不正确的八进制或十六进制数是7L7 A)0x9aB)012C)-0x3AD)0908.下列i、j、k均为整型变量,选项中不正确的C语言赋值语
27、句是818 A)i+l=k;B) i = j = k =1;C) i=j+=+k;D) j = i+l =i+;9.以下程序的运行结果是91 main() int a=l, b=2, c;c = a=b?a:b;printf(,%dnn, c);9 A)0B)1C)2D)310 设E为表达式,以下与dowhile(E);不等价的语句是【10】。10 A) do while(!E=0);C) do while(E=0);11.设以下程序段中的变量都是int类型 sum=pad=5;pAd=sum+,pAd+,+pAd; printf(H%dn*pad);11 A)7C)512.以下程序的输出结果
28、为【12】。main() int i=59;printf(H%5o,%-10d,%xnH, i, i, i);12 A)73,59,3bC)00073,59,3B13.以下程序的运行结果是【13】。main() unsigned a =0x3ef, b;b = a 2;printf(,%x,%xnn, a, b);13 A)3ef,fbC) fbc,3ef14 下程序的运行结果是【14】。main() int a, b, c;B) do while(E0|E0);D) do while(E!=0);则输出的结果是【11】。B)6D)4B)073,59,0x3bD)73,59,3BB)3ef,f
29、bcD) fbc,fbca = b = c =1;if(a+|+b ) C+;printf(n%d,%d,%dn”,a, b, c);14 A)2,1,2B)1,2,1C)2,2,2D)2,2,115.以下在定义一维数组a的同时,给a数组所有元素赋初值0,正确的语句是【15】。15 A)int a8=0;B)int a8=0,0,0,0,0,0,0,0;C)inta8=;D)int a8=0;16 .以下对C语言字符数组描述:【16,是正确的。16 A)可以用length函数计算字符数组中字符串的长度B)使用printf函数整体输出字符数组中的字符串时,遇到字符、(V结束输出C)可以在赋值语句中通过赋值运算符“二”对字符数组整体赋值D)字符数组只能存放字符串,不能存放字符17 .有以下程序:main() int c;while (c=getchar()!=*n) switch2) case 0:case 1 : putchar(c+4);case 2 : putchar(c+4); break;