考试题型一、单项选择题(30分)二、填空题(20分)三、阅读程序写结果(20分)四、编程序题(30)复习题一一、选择题1.下列说法中正确的是。A.C语言程序由主函数和0个或多个函数组成B.C语言程序由主程序和子程序组成C.C语言程序由子程序组成D.C语言程序由过程组成2.执行语句“x=(a=3,b=a--)”后,x,a,b的值依次为。A.3,3,2B.3,2,2C.3,2,3D.2,3,23.设有inti=010,j=10;则printf(%d,%d\n,++i,j--);的输出的是。A.11,10B.9,10C.010,9D.10,94.设a、b为字符型变量,执行scanf(a=%c,b=%c,&a,&b);后使a为'A',b为'B',从键盘上的正确输入是。A.'A''B'B.'A','B'C.A=A,B=BD.a=A,b=B5.已知intx=12,y=3;执行下述程序后,变量x的值是____。do{x/=y--;}while(xy);A.1B.2C.3D.程序运行有错误6.C语言中while和do-while循环的主要区别是。A.do-while的循环体至少无条件执行一次B.while的循环控制条件比do-while的循环控制条件严格C.do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句7.设x和y均为int型变量,则执行下面的循环后,y的值为。for(y=1,x=1;y=50;y++){if(x=10)break;if(x%2==1){x+=5;continue;}x-=3;}A.2B.4C.6D.88.以下正确的说法是____。A.用户若需调用标准函数,调用前必须重新定义B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义C.系统根本不允许用户重新定义标准函数D.用户若需要调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调9.若调用一个函数,且此函数中没有return语句,则关于该函数正确的说法是___。A.没有返回值B.能返回若干个系统默认值C.能返回一个用户所希望的函数值D.返回一个不确定的值10.已知函数定义如下:floatfun1(intx,inty){floatz;z=(float)x/y;return(z);}主调函数中有inta=1,b=0;可以正确调用此函数的语句是____。A.printf(%f,fun1(a,b));B.printf(%f,fun1(&a,&b));C.printf(%f,fun1(*a,*b));D.printf(%f,fun1(b,a));11.宏定义:#definePI31.14159中,宏名PI代替______。A.单精度B.双精度C.常量D.字符串12.若有以下数组说明,则数值最小和最大的元素下标分别是。inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};A.1,12B.0,11C.1,11D.0,1213.以下合法的数组定义是。A.inta[3][]={0,1,2,3,4,5};B.inta[][3]={0,1,2,3,4};C.inta[2][3]={0,1,2,3,4,5,6};D.inta[2][3]={0,1,2,3,4,5,};14.函数调用:strcat(strcpy(str1,str2),str3);的功能是。A.将字符串str1复制到字符串str2中后再连接到字符串str3之后。B.将字符串str1连接到字符串str2之后再复制到字符串str3之后。C.将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后。D.将字符串str2连接到字符串str1之后再将字符串str1复制到字符串str3中。15.设有二维数组定义如下,则不正确的数组元素引用是。inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};A.a[2][3]B.a[a[0][0]][1]C.a[7]D.a[2][‘c’-‘a’]16.若用数组名作为函数调用时的实参,则实际上传递给形参的是。A.数组首地址B.数组的第一个元素值C.数组中全部元素的值D.数组元素的个数17.以下对指针变量进行操作的语句,正确的选项是。A.int*p,*q;q=p;B.inta,*p,*q;q=&a;p=*q;C.inta=b=0,*p;p=&a;b=*p;D.inta=20,*p,*q=&a;p=q;18.若有以下定义和语句:ints[4][5],(*ps)[5];ps=s;则对s数组元素的正确引用形式是。A.ps+1B.*(ps+3)C.ps[0][2]D.*(ps+1)+319.当说明一个共用体变量时系统分配给它的存储容量是。A.共用体中最后一个成员所需的存储容量B.共用体中第一个成员所需的存储容量C.成员中占存储量最大者所需的存储容量D.各成员所需存储容量的总和20.有定义如下:structstudent{intage;charnum[8];}stu[3]={{20,200401},{21,200402},{10,200403}};structstudent*p=stu;以下选项中引用结构体变量成员的表达式错误的是。A.(p++)-numB.p-numC.(*p).numD.stu[3].age二、填空题1.设a=3,b=2,c=1,则ab的值为,abc的值为。2.若w,x,y,z,m均为int型变量,则执行下面程序段后的m值是。w=1;x=2;y=3;z=4;m=(wy)?w:x;m=(my)?m:y;m=(mz)?m:Z;3.下面程序的输出结果是____。#includestdio.hmain(){inta=1,b=0;do{switch(a){case1:b=1;break;case2:b=2;break;default:b=0;}b=a+b;}while(!b);printf(a=%d,b=%d,a,b);}4.下面程序的输出结果是____。#includestdio.hmain(){intx,i;for(i=1;i=100;i++){x=i;if(++x%2==0)if(++x%3==0)if(++x%7==0)printf(%d,x);}}5.下面程序的输出结果是____。#includestdio.hintfunc(inta,intb){intc;c=a+b;return(c);}voidmain(){intx=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf(%d\n,r);}6.下面程序的输出结果是____。#includestdio.hvoidmain(){intx=1;voidf1(),f2();f1();f2(x);printf(%d\n,x);}voidf1(void){intx=3;printf(%d,x);}voidf2(x)intx;{printf(%d,++x);}7.程序中有定义:#defineS(r)r/rinta=4,b=3,area;则表达式area=S(a+b)的值为_______。三、程序完善题1.以下程序的功能是计算分段函数y的值。请完善程序。#includestdio.hvoidmain(){intx,c,m;floaty;scanf(“%d”,&x);if((1))c=-1;4020205.020101010000xxxxxxyelsec=(2);switch(c){case–1:y=0;break;case0:y=x;break;case1:y=10;break;case2:case3:y=-0.5*x+20;break;default:y=-2;}if((3))printf(“y=%f”,y);elseprintf(“error\n”);}2.有以下程序段:s=1.0;for(k=1;k=n;k++)s=s+1.0/(k*(k+1));printf(%f\n,s);填空完成下述程序,使之与上述程序的功能完全相同。s=0.0;(1);k=0;do{s=s+d;(2);d=1.0/(k*(k+1));}while((3));printf(%f\n,s);3.根据以下嵌套的if语句说给条件,填写switch语句,使它完成相同的功能。(假设score的取值在1~100之间。)if语句:if(score60)k=1;elseif(score70)k=2;elseif(score80)k=3;elseif(score90)k=4;elseif(score=100)k=5;switch语句:switch((1)){(2):k=1;break;case6:k=2;break;case7:k=3;break;case8:k=4;break;(3):k=5;}4.输入2个整数,输出它们的最小公倍数和最大公约数。请完善程序。#includestdio.hvoidmain(){intm,n,gbs,gys;scanf((1));for(gbs=m;(2);gbs=gbs+m);gys=(3);printf(“gbs=%d\tgys=%d\n”,gbs,gys);}5.下面函数的功能是判断一个数是否为素数。请完善程序。voidf(intm){intm,i,k;k=__(1)__;for(i=2;i=_(2)__;i++)if(__(3)__)break;if(__(4)__)printf(“是素数”);elseprintf(“非素数”);}6.一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。请完善程序。voidfun(longx){longge,shi,qian,wan;wan=(1);qian=___(2)__;shi=___(3)___;ge=x%10;if(__(4)__)printf(thisnumberisahuiwen\n);elseprintf(thisnumberisnotahuiwen\n);}四、程序设计题1.编写程序计算分段函数y值。2.编写程序,输入一个字符串,求该字符串的有效长度。要求不能使用系统函数。3.编写程序实现,将键盘输入的一个十进制整数转换为2进制数并输出。参考答案:一、选择题123456789100010xexxeyxxACBDDACBAD11121314151617181920DBBCCACCCD二、填空题1、102、13、a=1,b=24、25675、216、3217、7三、程序完善题1、x0x/10x402、d=1k++k=n3、score/10case0,1,2,3,4,5:default4、“%d%d”,&m,&ngbs%n!=0m*n/gbs5、m/2km%i==0i=k6、x/10000(x%10000)/1000(x%100)/10wan==ge&&qian=shi四、程序设计题1、#includestdio.hvoidmain(){floatx,y;scanf(“%f”,&x);if(x0)y=exp(-x);elseif(x==0)y=1;elsey=-exp(x);printf(“%f”,y);}2、#definemax20;voidmain(){charstr[max];intlen;scanf(“%s”,str);for(len=0;str[len]!=0;len++);printf(“%d”,len);}3、#includestdio.hvoidmain(){unsignedn;charstr[10],t;intk,i,j;printf(“pleaseinput:”);scanf(“%u”,&n);for(i=0;n!0;i++){str[i]=n%2+’0’;n/=2;}str[i]=’\0’;printf(“theresultis:”)