长沙师范学校电子信息工程系-学年度学期《C语言程序设计》试题(5)用于计算机应用技术专业班级考试形式闭卷时量100分钟满分100分得分命题宋碧慧审题阅卷成绩复核阅卷人得分一、选择题(每题3分,共30分,答案填写在以下表格中)题号12345678910答案1.一个C语言程序是由()。A.一个主程序和若干子程序组成B.若干函数组成C.若干过程组成D.若干子程序组成2.已知:char*s=Name\Address;则s所指的字符串的长度为().A.18B.16C.13D.143.若有条件表达林(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是()。A.(exp==0)B.(exp!=0)C.exp==1D.(exp!=1)4.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是()。A.地址传递B.单向值传递C.双向值传递。即由实参传给形参,再由形参传回给实参D.由用户指定传递方式5.以下正确的函数形式是()。A.doublefun1(intx,inty){z=x+y;学号:姓名:班级:系别:装订线(答题不得超过此线)returnz;}B.fun1(intx,y){intz;returnz;}C.fun1(x,y){intx,y;doublez;z=x+y;returnz;}D.doublefun1(intx,inty){doublez;z=x+y;returnz;}6.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是()。A.float型B.int型C.long型D.double型7.以下程序有语法性错误,有关错误原因的正确说法是()。voidmain(){intk;voidprt_char();k=prt_char(G);}A.语句voidprt_char();有错,它是函数调用语句,不能用void说明。B.变量名不能使用大写字母。C.函数原型说明和函数调用语句之间有矛盾。D.函数名不能使用下划线。8.若有如下定义,则下面在scanf函数调用语句中对结构体成员的引用不正确是()。structpupil{charname[20];intage;intsex;}pup[5],*p;A.scanf(%d,p-age);B.scanf(%s,pup[0].name);C.scanf(%d,&pup[0].age);D.scanf(%d,&(pup[1].sex));9.若已有定义int(*p)();则指针p()。A.代表函数的返回值B.指向函数的入口地址C.表示函数的类型D.表示函数返回值的类型10.设x、y均为float型变量,则以下不合法的赋值语句是()。A.++x;B.y=(x%2)/10;C.x*=y+8;D.x=y=0;阅卷人得分二、填空题(每题1分,共10分)1.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=a+8-3的值为。2.C源程序的基本单位是。3.若有定义:charc=10;则变量C中包含的字符个数为。4.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为。5.执行下面的程序片段后,x的值是。i=10;i++;x=++i;6.设a、b、c均是int型变量,则执行以下for循环后,c的值为。for(a=1,b=5;a=b;a++)c=a+b;7.以下do-while语句中循环体的执行次数是。a=10;b=0;do{b+=2;a-=2+b;}while(a=0);8.若有定义:inta[3][2]={2,4,6,8,10,12};,则*(a[1]+1)的值是。9.若a=1,b=2则表达式ab?a:b+1的值是。10.当a=5,b=4,c=2时,表达式样ab!=c的值是。阅卷人得分三、判断题(共10题,每题1分,共10分)()1.程序的执行总是从主函数开始,主函数执行完时,则程序执行结束。()2.控制台标准输入设备一般是指键盘。()3.do-while语句的循环体至少执行一次。()4.循环体中continue语句的作用是结束整个循环的执行。()5.C语言规定,else子句总是与它上面的最近的if配对。()6.chara[]={0,1,2,3,4,5,6}不是正确的数组说明语句。()7.字符串This大于字符串that。()8.在用数组名作为函数实参时,传递的是数组的起始地址。()9.表达式i++与++i在任何场合功能完全相同。()10.在赋值表达式中,赋值号左边的变量和右边的表达式之值的数据类型可以不相同。阅卷人得分四、程序阅读、填空题(共6题,共30分)1.main(){int*p,*q,n;scanf(“%d”,&n);p=(int*)malloc(n*sizeof(int));for(q=p+n-1;q=p;q--)scanf(“%d”,q);for(q=p+n-1;p=q;p++)printf(“%3d”,*p);}当输入数据序列为842651387↙时程序的输出结果为:(5分)2.#includestdio.hvoidmain(){charc;while((c=getchar())!=?)putchar(++c);}当运行以下程序时,从键盘键入right?,则下面程序的运行结果是(5分)。3.intfun(intn){if(n0)returnn*fun(n-1);elsereturn1;}main(){inta=fun(4);printf(″a=%d\n″,a);}程序运行结果:____________________(5分)4.voidmain(void){inta=1,k;for(k=0;k3;k++)printf(%4d,f1(a));}intf1(intx){staticintz=3,y=0;y++;z++;return(x+y+z);}以下程序的运行结果是。(5分)5.下面程序的功能是求1000以内的所有完全数。(说明:一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数,例如:6=1+2+3,6为完全数。)(4分)#includestdio.hvoidmain(void){inta,i,m=0;for(a=1;a=1000;a++){for(①;i=a/2;i++)if((a%i)==0)②;if(m==a)printf(%4d,a);}}6.下面程序的功能是用函数递归方法计算菲波那契数列,请填空完善之。(6分)main(){intn,m;scanf(″%d″,&n);m=①__________________;printf(″%d″,m);}intfibo(n);intn;{if(n==1)②___________________;elseif(n==2)return(1);elsereturn(③_________________);阅卷人得分五、程序设计题(每题10分,共20分)1.写一个判断是否为素数(只能被1和其本身整除)的函数,在主函数中输入一个整数,输出是否是素数的信息。2.编写一个程序,接收从键盘输入的10个整数,实现由小到大排序,并输出。参考答案一、单项选择题(20分)1.~5.BCBBD6.~10.BCABB二、填空题(20分)1.f或1022.函数3.1/1个4.95.126.7107.38.89.310.1三、判断题(15分)√√√××××√×√四、程序运行结果题(20分)1.783156242.sjhiu3.244.68105.①i=1②m+=i6.①fibo(n)②return(0)③fibo(n-2)+fibo(n-1)五、略