福建省C语言二级考试模拟试卷之二一、选择题。(本大题共40个选项,【1】~【40】每个选择项1.5分,共60分)1.属于整型常量的是【1】。【A】(A)12(B)12.0(C)-12.0(D)10E102.char型常量在内存中存放的是【2】。【A】(A)ASCII代码值(B)BCD代码值(C)内码值(D)十进制代码值3.设整型变量a为5,使b不为2的表达式是【3】。【C】(A)b=a/2(B)b=6-(--a)(C)b=a%2(D)b=a3?2:14.执行语句“x=(a=3,b=a--);”后,x、a、b的值依次为【4】。【c】(A)3,3,2(B)3,2,2(C)3,2,3(D)2,3,25.sizeof(double)的结果值是【5】。【b】(A)8(B)4(C)2(D)出错6.设整型变量x的值为35,则表达式“(x&15)&&(x|15)”的值是【6】。【b】(A)0(B)1(C)15(D)357.设整型变量n的值为2,执行语句“n+=n-=n*n;”后,n的值是【7】。【c】(A)0(B)4(C)-4(D)28.设f为实型变量,下列表达式中不是逗号表达式的是【8】。【B】(A)f=3,4,5(B)f=(3,2,1,0)(C)f=3,f2,0(D)f=2,f=19.设有无符号短整型变量i、j、k,i值为013,j值为0x13。执行语句“k=~i|j3;”后,k的值是【9】。【A】(A)06(B)0177776(C)066(D)017776610.指出下列语句中有实际意义的语句是【10】。【D】(A)a||b;(B)a!=b;(C)a+=b;(D)getchar(a);11.在16位PC机上执行下列语句后,a的16进制值是【11】,b的值是【12】,c的值是【13】,d的值是【14】。inta,b,c;longd;b=(a=32767,a+1);c=d=0xffff;【B】(A)0xffff(B)0x7fff(C)0xfffe(D)0x7ffe【D】(A)32767(B)32768(C)0(D)-32768【D】(A)65535(B)32768(C)0(D)-1【B】(A)65535(B)32768(C)0(D)-112.指出下面正确的输入语句是【15】。【B】(A)scanf(a=b=%d,&a,&b);(B)scanf(a=%d,b=%f,&m,&f);(C)scanf(%3c,c);(D)scanf(%5.2f,&f);13.C语言用【16】表达逻辑“真”值。【C】(A)true(B)t或y(C)非零整型值(D)整型值014.下列循环结构中,【17】不是无限循环。【B】(A)for(i=1,s=0;;i++)(B)i=10;s=s+i;while(1){i=i%10+1;if(i10)break;}(C)i=0;(D)i=100;dowhile(i++%2+i%2){i++;++i;}while(i=0);15.执行下列程序段后,x的值是【18】,i的值是【19】。inti,x;for(i=1,x=1;i=20;i++){if(x=10)break;if(x%2==1){x+=5;continue;}x-=3;}【C】(A)6(B)7(C)10(D)14【C】(A)4(B)5(C)6(D)716.下列程序:#includestdio.h#defineN6main(){chars[N];inti=0;for(;iN;s[i]=getchar(),i++);for(i=0;iN;putchar(s[i]),i++);}运行时输入以下三行字符,每行输入都是在该行的首列开始:aCRbCRcdefCR程序输出的结果是【20】。【20】(A)abcdef(B)a(C)a(D)abbccdcdefdef17.下列程序正确的运行结果为【21】。structs{intn;int*m;}*p;intd[5]={10,20,30,40,50};structsarr[5]={100,&d[0],200,&d[1],300,&d[2],400,&d[3],500,&d[4]};#includestdio.hmain(){p=arr;printf(%d\n,++p-n);printf(%d\n,(++p)-n);printf(%d\n,++(*p-m));}【21】(A)101(B)101200202130(C)200D)100101101211018.设有以下一程序段:chars[]=Hello;char*p;p=s;执行完上面的程序段后,*(p+5)的值为【22】。【22】(A)'o'(B)'\0'(C)'o'的地址D)不确定的值19.以下程序输出两个整数中较大的数,两个整数由键盘输入。请根据需填空的项目顺序从对应的选择项顺序组中选择正确内容填入程序的横线内,使其能完成这一操作。#includestdio.hmain(){inta,b,*p1,*p2;p1=(int*)malloc(sizeof(int));p2=【23】malloc(sizeof(int));scanf(%d%d,【24】);if(*p2*p1)*p1=*p2;printf(max=%d\n,【25】);free(p1);free(p2);}【23】(A)int(B)int*(C)(int)(D)(int*)【24】(A)*p1,*p2(B)p1,p2(C)&p1,&p2(D)&a,&b【25】(A)*p1(B)*p2(C)p1(D)p220.以下定义与【26】中的定义等价。int*p[4];【26】(A)intp[4](B)int*p(C)int*(p[4])(D)int(*p)[4]21.若有以下定义和语句,则【27】是对a数组元素的错误引用。inta[12]={0},*p[3],**pp,i;for(i=0;i3;i++)p[i]=&a[i*4];pp=p;【27】(A)a[12](B)p[2][3](C)a[10](D)pp[0][1]22.以下函数调用语句中有【28】个实参。func((a1,a2,a3),(a4,a5));【28】(A)2(B)5(C)1(D)不合法23.#includestdio.hmain(){inta,b,c;a=165,b=65;c=mult(a,b);printf(%d*%d=%d\n,a,b,c);}mult(x,y)intx,y;{return(x*y);}程序运行结果是:【29】,函数调用采用【30】传递数据。【29】(A)0(B)165*65=10725(C)165*65=0(D)程序不正确【30】(A)地址传送方式(B)数据复制方式(C)全局变量(D)内部变量24.#includestdio.hmain(){intf(),(*i)();inta=100,b=500;intc;i=f;c=(*i)(b,a);printf(%d-%d=%d\n,b,a,c);}f(a,b)inta,b;{return(b-a);}程序运行结果是:【31】。【31】(A)500-100=400(B)500-100=-400(C)500-100=0(D)程序有错误25—B.#definePI3.1415926#includestdio.hmain(){printf(PI=%f\n,PI);}程序运行结果为【32】。A)3.141593=3.141593B)PI=3.141593C)3.131593=PID)程序有错误,无结果。26.格式1#include文件名格式2#include文件名下面4个结论,【33】是正确的。【33】(A)格式1中的文件名能带路径,而格式2不能(B)格式1中的文件名不能带路径,而格式2可以(C)如果被包含文件在当前目录下,两种格式都能用(D)如果文件名中不带路径,格式1能搜索当前目录和C编译环境指定的标准目录,而格式2不行。27.使用分别编译方法时,在不同的编译单位之间能传递的变量和函数是【34】。【34】(A)内部变量,内部函数(B)外部static型变量,外部函数(C)外部缺省存储类型变量,外部函数(D)所有变量和函数28.设有一结构体类型变量定义如下:structdate{intyear;intmonth;intday;}structworklist{charname[20];charsex;structdatebirthday;}person;若要对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是:【35】(A)year=1976(B)birthday.year=1976(C)person.birthday.year=1976(D)person.year=197629.设有一联合体变量定义如下:uniondata{longw;floatx;inty;charz;};uniondatabeta;执行下面赋值语句后,正确的联合体变量beta的值是【36】。beta.w=123456;beta.y=888;beta.x=3.1416;beta.z='*';【36】(A)123456(B)888(C)3.1416(D)'*'30.整数字输出函数putw(32767,fpoint)的功能是:【37】。【37】(A)读取fpoint指针所指文件中的整数字32767。(B)将两字节整数32767,输出到文件fpoint中。(C)将两字节整数32767输出到fpoint所指的文件中。(D)从文件fpoint中读取整数字32767。31.以读写方式打开一个已有的文本文件file1,下面fopen函数正确的调用方式是:【38】。【38】(A)FILE*fp(B)FILE*fpfp=fopen(file1,r)fp=fopen(file1,r+)(C)FILE*fp(D)FILE*fpfp=fopen(file1,rb)fp=fopen(file1,rb+)32--.下列程序的运行结果为【39】。#includestdio.hunionp{inti;charc[2];}x;main(){x.c[0]=13;x.c[1]=0;printf(%d\n,x.i);}【39】(A)208(B)14(C)13(D)20933.运行下面程序后的w值为【40】。main(){intw=2,k;for(k=0;k3;k++){w=f(w);printf(%d\n,w);}}f(x)intx;{inty=0;staticz=3;y++;z++;return(x+y+z);}【40】(A)20(B)7(C)28(D)13二、请正确填充下面的过程或程序的划线部分,使其完成所要求的功能:(本大题共20个空,每个空2分,共40分。请将答案写在答题卡对应栏中,答在试卷上不得分)一、完成下面的程序,使它能够输出101~1000之间的所有素数。#includestdio.hmain(){inti;for(i=101;i=1000;i++)if(isprime(【1】))printf(%d,i);printf(\n);}#include【2】isprime(n)intn;{inti;for(i=2;i=sqrt(n);i++)if(【3】)return(0);return(【4】);}#includestdio.h#includemath.hdoubles(fun,a,b)double(*fun)(),a,b;{doublet,h;inti,n=100;t=0.5*(【5】(a)+【6】(b));h=(b-a)/(double)(n);for(i=1;i=n-1;i++)t=t+【7】;t=t*【8】;return(【9】);}doublef(x)doublex;{return(x*x+sin(x)+2.0);}main(){doubley,(*fx)();fx=【10】;y=s(fx,0.0,4.0);printf(%f\n,y);}