1淮海工学院10–11学年第2学期C语言程序设计期中考试试卷题号一二三四五总分得分单项选择题答题表1234567891011121314151617181920一、单项选择题(共20题,每题1分,共20分,答案填写在单项选择题答题表中)1.以下叙述中正确的是()。A)C程序的基本组成单位是语句B)C程序中的每一行只能写一条语句C)简单C语句必须以分号结束D)C语句必须在一行内写完在2.一个C程序是由____________。A)一个主程序和若干个子程序构成B)一个或多个函数构成C)若干过程组成D)若干子程序组成3.以下选项中正确的定义语句是____________。A)doublea;b;B)doublea=b=7;C)doublea=7,b=7;D)double,a,b;4.计算机能直接执行的程序是()。A)C源程序B)目标程序C)汇编程序D)可执行程序5.下列符号可以作为变量名的是____________。A)+aB)*pC)_DAYD)nextday6.设c是字符变量,则以下表达式正确的是____________。A)c=666B)c='c'C)c=cD)c=abcd7.以下说法正确的是____________。A)输入项可以为一个实型常量,如scanf(%f,3.5)B)只有格式控制没有输入项也能进行正确输入,如scanf(%d)C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(%4.2f,&f)D)当输入数据时,必须指定变量的地址,如scanf(%f,&f)8.若a,b,c均定义为整型,要给它们输入数据,正确的输入语句是____________。A)read(a,b,c);B)scanf(%d%d%d,a,b,c);C)scanf(%D%D%D,a,b,c);D)scanf(%d%d%d,&a,&b,&c);9.若有if(w)–x;else++y;则其中与w等价的表达式是____________。A)w==lB)w==0C)w!=lD)w!=010.为了避免嵌套的if-else语句的二义性,C语言规定else总是与____________组成配对关系。A)缩排位置相同的ifB)在其之前未配对的ifC)在其之前最近的未配对的ifD)同一行上的if11.选择出合法的if语句(设intx,a,b,c;)____________。A)if(a==b)x++;2B)if(a=b)x++;C)if(ab)x++;D)if(a=b)x++;12.若变量已正确定义为int型,要通过语句scanf(%d,%d,%d,&a,&b,&c);给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(凵代表一个空格符)()。A)凵凵凵1,2,3回车B)1凵2凵3回车C)1,凵凵凵2,凵凵凵3回车D)1,2,3回车13.C语言中while和do-while循环的主要区别是____________。A)do-while的循环体至少无条件执行一次B)while的循环控制条件比do-while的循环控制条件严格C)do-while允许从外部转到循环体内D)do-while的循环体不能是复合语句14.以下关于数组的描述正确的是____________。A)数组的大小是固定的,但可以有不同类型的数组元素B)数组的大小是可变的,但所有数组元素的类型必须相同C)数组的大小是固定的,所有数组元素的类型必须相同D)数组的大小是可变的,可以有不同类型的数组元素15.以下关于字符数组的描述中错误的是____________A)字符数组可以存放字符串B)字符数组中的字符串可以整体输入和输出C)可以在赋值语句中通过赋值运算符=对字符数组整体赋值D)不可以用关系运算符对字符数组中的字符串进行比较16.若有定义语句:chars[10]=123\n\0\45670;,则strlen(s)的值是__________。A)9B)7C)3D)417.在C语言程序中,下列叙述正确的是____________。A)函数的定义可以嵌套,但函数的调用不可以嵌套B)函数的定义不可以嵌套,但函数的调用可以嵌套C)函数的定义和调用都可以嵌套D)函数的定义和调用均不可以嵌套18.以下叙述中错误的是________。A)用户定义的函数中可以没有return语句B)用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值C)用户定义的函数中若没有return语句,则应当定义函数为void类型D)函数的return语句中可以没有表达式19.在声明一个结构体类型时系统分配给它的存储空间是____________。A)该结构体变量中第一个成员所需存储空间B)该结构体变量中最后一个成员所需存储空间C)该结构体变量中所有成员所需存储空间的总和D)结构体类型本身并不占用存储空间,即系统并不给结构体类型分配存储空间20.已知函数调用f(1,'k'+5,g(1,2,3)),则函数f定义中的形参个数为_________个。A)2B)3C)4D)5二、填空题(共15空,每空1分,共15分)1.C编译器的功能是___*.c--*.obj_________。2.表达式9/5+4的值是____5________。表达式3*(4+5)的值是___27_________。3.判断整型变量n是否是偶数的逻辑表达式是_n%2==0__________。4.程序的三种基本控制结构分别是_顺序__、_分支__和_循环_。5.C语言中的循环控制语句有while、do…while和___for_______语句三种。6.计算数组的存储空间可以使用sizeof运算符,计算数组a的存储空间的表达式是__sizeof(a)__________。计算数组a的元素个数的表达式是____sizeof(a)/sizeof(a[0])___。7.在函数中可以利用__return_语句返回函数计算结果8.若有定义inta[]={1,2,3,4,5,6},则数组a的大小为____6___,引用数组a的最后一个元素的表达式是__a[5]_________。9.C语言使用关键字__break___定义立即结束本次循环体的执行。10.读取一行文本的字符串处理函数是_gets()/scanf(%s,)_。3三、程序分析题(共5题,每题5分,共25分)1.写出以下程序的运行结果(假定程序已包含正确的头文件)。#includestdio.hmain(){intx=1,y=0;if(!x)y++;elseif(x==0)if(x)y+=2;elsey+=3;printf(%d\n,y);}y=02.写出以下程序的运行结果(假定程序已包含正确的头文件)。main(){intn=1,fact=1;while(n=5){fact=fact*n;++n;}printf(%d\n,fact);}5X4X3X2X1=1203.写出以下程序的运行结果(假定程序已包含正确的头文件)。main(){inta[10]={1,2,3,4,5};printf(%d\n,a[4]+a[9]);}5+0=54.写出以下程序的运行结果(假定程序已包含正确的头文件)。#includestdio.hintfun(){staticintx=1;x*=2;returnx;}main(){inti,s=1;for(i=1;i=3;i++)s*=fun();printf(%d\n,s);}645.写出以下程序的运行结果(假定程序已包含正确的头文件)。intfun(intn){intm;m=4*n;returnm;}main(){intk=50,s;s=fun(k);printf(%d\n,s);}200四、程序填空题(共10空,每空2分,共20分)1.下面的程序计算整数n的因子的和,请填空。#includestdio.hvoidmain(){inti,n,sum;printf(n=);scanf(%d,_&n___);/*读取整数n*/sum=__0___________;4for(i=1;i=n;++i)if(n%i==0)_sum+=i__________________;printf(sum=%d\n,__sum____);}2.下面的程序中定义的函数fun计算数组元素的最大值,请填空intfun(intb[10]){intmax,i;max=__b[0]_;/*b[0]~b[9]都可以的*/for(i=1;i10;__i++___)if(__b[i]max__)max=b[i];/*maxb[I]*/return__max___;}voidmain(){intm,a[10]={56,32,78,99,12,43,31,67,90,17};m=fun(a);/*调用函数fun*/printf(Max=%d\n,m);}五、程序设计题(共2小题,共20分)1.编写一个程序,输入一个整数n,输出大于n的最小的素数。例如输入12,程序应输出13;若输入24,程序应输出29。(本题8分)#includestdio.h#Includemath.hintisPrime(intn);intmain(void){intn;inti;printf(Inputn:);scanf(%d,&n);for(i=n+1;;i++)if(isPrime(i)){printf(%d\n,i)break;;}return0;}intisPrime(intn){inti;for(i=2;Isqrt(n);i++)if(n%i==0)return0;return1;}2.编写一个名为min的函数计算三个整数a,b和c的最小值;然后编写main函数调用该函数计算大小为5的一维数组的最小值并输出。(本题12分)intmin(inta,intb,intc);intmain(void){inta[5]={};printf(Theminoneofthearrayis:%d\n,min(min(a[0],a[1],a[2]),a[3],a4));return0;}intmin(inta,intb,intc){if(ab&&ac)5returna;if(ba&&bc)returnb;if(ca&&cb)returnc;}intmin(inta,intb,intc){if(ab&&ac)returna;if(bc)returnb;elsereturnc;}intmin(inta,intb,intc){intm;if(ab)m=a;elsem=b;If(mc)returnm;elsereturnc;}