2011-2012第二学期C语言期末试卷一、选择题:(每小题1分,共20分)1、一个C程序的执行是从(A)。A.本程序的main函数开始,到main函数结束B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C.本程序的main函数开始,到本程序文件的最后一个函数结束D.本程序文件的第一个函数开始,到本程序main函数结束2、在C语言中,每个语句必须以(D)结束。A.回车符B.冒号C.逗号D.分号3、C语言规定:在一个源程序中,main函数的位置(C)。A.必须在最开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后4、以下选项中,(D)是不正确的C语言字符型常量。A.'a'B.'\x41'C.'\101'D.a5、若x、i、j和k都是int型变量,则计算下面表达式后,x的值是(C)。x=(i=4,j=16,k=32)A.4B.16C.32D.526、在以下一组运算符中,优先级最低的运算符是(D)。A.*B.!=C.+D.=7、了避免嵌套的if-else语句的二义性,C语言规定else总是与(C)组成配对关系。A.缩排位置相同的ifB.在其之前未配对的ifC.在其之前尚未配对的最近的ifD.同一行上的if8、为表示关系x≥y≥z,应使用C语言表达式(A)A.(x=y)&&(y=z)B.(x=y)AND(y=z)C.(x=y=z)D.(x=y)||(y=z)9、若变量已正确说明为int类型,要给a、b、c输入数据,以下正确的输入语句是(D)A.read(a,b,c)B.scanf(“%d%d%d”,a,b,c);C.scnaf(“%D%D%D”,&a,&b,&C);D.scanf(“%d%d%d”,&a,&b,&c);10、执行语句scanf(%d,%d,&m,&n);使m和n的值分别为1和2,正确输入是(C)A.12B.12C.1,2D.1211、main(){inti=10,j=1;printf(%d,%d\n,i--,++j);}执行后输出结果是(B)A.9,2B.10,2C.9,1D.10,112、C语言中while和do-while循环的主要区别是(A)A.do-while的循环体至少无条件执行一次B.while的循环控制条件比do-while的循环控制条件严格C.do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句13、下面有关for循环的正确描述是(D)A.for循环只能用于循环次数已经确定的情况B.for循环是先执行循环体语句,后判断表达式C.在for循环中,不能用break语句跳出循环体D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来14、以下正确的描述是(B)A.continue语句的作用是结束整个循环的执行B.只能在循环体内和switch语句体内使用break语句C.在循环体内使用break语句或continue语句的作用相同D.从多层循环嵌套中退出时,只能使用goto语句15、以下对C语言函数的有关描述中,正确的是(A)。A.调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B.C函数既可以嵌套定义又可以递归调用C.函数必须有返回值,否则不能使用函数D.C程序中有调用关系的所有函数必须放在同一个源程序文件中16、以下正确的函数定义是(D)。A.doublefun(intx,inty)B.doublefun(intx,y){z=x+y;returnz;}{intz;returnz;}C.fun(x,y)D.doublefun(intx,inty){intx,y;doublez;{doublez;z=x+y;returnz;}returnz;}17、程序的三种基本结构是(B)。A.顺序结构,循环结构,递归结构B.顺序结构,循环结构,选择结构C.选择结构,循环结构,递归结构D.顺序结构,选择结构,递归结构18、有以下程序片段,请问执行后的输出结果是(D)inti;for(i=1;;i++);printf(“%d”,i++);A.1B.2C.3D.陷入死循环,无输出结果19、有以下程序段:inti,j;for(i=0;i5;++i)for(j=0;j5;++j)printf(“*”);则执行以上的程序片段后,输出‘*’个数是(C)A.15B.10C.25D.2020、switch(表达式)语句中的“表达式”,允许的类型是(C)A.float,intB.float,int,charC.int,charD.char,double二、填空题(每小题2分,共24分)1、每个源程序有且只有一个main函数,系统总是从该函数开始执行C语言程序。2、C语言源程序文件的扩展名是.cpp。3、C语言中的实型变量分为两种类型,它们是float和double。4、C控制语句有9种。5、C语言本身不提供输入输出语句,其输入输出操作是由函数来实现的。6、C语言共提供了三种用于实现循环结构的流程控制语句,它们是while、dowhile和for。7、函数调用时,若形式参数和实际参数均为变量名时,传递方式为值;8、C语言变量的存储类别有自动变量auto、static、extern和寄存器变量register。9、、设inti,j;for(i=5;i0;i--)for(j=0;j4;j++){…}则循环体执行次数是__20__。三、程序填空(每小题2分,共14分)1、学生成绩的字每等级和分数范围如下:字母等级分数范圈A90~100B80~89C70~79D60~69E0~59其它字母输入错误输入字母等级之后,输出相应的分数范围。#includestdio.hmain(){charscore;scanf(%c,&score);switch(score){case'A':printf(A:90~100\n);break;case'B':printf(B:80~89\n);break;case'C':printf(C:70~79\n);break;case'D':printf(D:60~69\n);break;case'E':printf(E:0~59\n);break;default:printf(输入错误\n);}}2、输入字母,如果是大写,转换为小写输出,反之转换为大写输出。#includestdio.hmain(){charch;scanf(%c,&ch);if(ch='a'&&ch='z')ch=ch-32;elseif(ch='A'&&ch='A')ch=ch+32;putchar(ch);}3、输出1—100间偶数的和#includestdio.hmain(){inti,sum;scanf(%d,%d,&i,&sum);for(i=2;i=100;i++)sum=sum+i;printf(%d,sum);return0;}四、写出程序运行结果(每小题4分,共12分)1、#includestdio.hvoidmain(){intnum=0;while(num=2){printf(%d,num);num++;}}0122、#includestdio.hintx;voidcude(){x=x*x*x;}voidmain(){x=5;cude();printf(%d\n,x);}1253、main(){inti;for(i=1;i=4;i++)printf(“*”);}****五、编写程序(每小题15分,共30分)1、输入三角形的三边长a,b,c,输出其面积area。提示:area=)(*)(*)(cpbpap,p=(a+b+c)/2#includestdio.h#includemath.hintmain(){floata,b,c,area,p;scanf(%f,%f,%f,&a,&b,&c);p=(a+b+c)/2;area=sqrt((p-a)*(p-b)*(p-c));printf(theareais%5.2f\n,area);return0;}2、输出九九乘法表#includestdio.hintmain(){inti,j;for(i=1;i=9;i++){for(j=1;j=i;j++)printf(%d*%d=%d\t,j,i,i*j);if(i=j)printf(\n);}return0;}