南京信息工程大学2007-2008C语言期末试卷(B).docx
南京信息工程大学期末试卷空?一逢蝇学年第2学期C学程序设计/程序设计基砒课程试卷(B)本试卷共一页,考试时间四分任课教师I出卷时间2008年6月学院专业班.学号姓名得分注:请将解答写在答题册上,以免误判!一、单项选择题:请将正确答案的序号写在答题册上(每小题1分,共10分)1 .一个C语言程序是由A)一个主程序和若干子程序组成B)函数组成C)若干过程组成D)若干子程序组成2 .下述表达式中,UJ以正确表示XWO或XZI的关系,A>(x>=1.)(x<=O)B)>=<=0C)x>=1.&&x<=0D>(x>=1.)&&(x<=O)3 .己有如下定义和输入语句,若要求a1.,a2,c1.,c2的假分别为10,20.A和B,当从第一列开始输入数据时,正确的输入方式是。iniaI*:charc1.,c2:SCanf(%d%d''Ga1.a2):scanf(%c%c'*,cI.c2);A)I020AB/B)1020/ABZC)1020ABZD)I020ABZ4 .下面四个选项中,均是不合法的用户标识符的选项的是A>Ap_odoB)f1.oatIao_AC>b-agotointD)_123tempINT5,若有代数式3acbc,则不正礴的C语言表达式是()abc*e*3B>3*a*ebcC)3*a*eb*cD>a*ecb*36,下述程序的输出结果是。#inc1.ude<sidio.h>voidmain()intx=-1.,y=4,k:k=+<=O&&!-<=0);pri111.1.'C*od.d."d"'.k.x.y):B)0,1,2D)1.1.2B)是无限循环D)一次也不循环A) 0.0.3C>1.0.37 .下面fo循环谱句.inti,k;for(i=0,k=-kk=1.;i+,k+÷)Primfr*”);A>判断循环结束的条件非法O只循环一次8 .以下各语句中,字符*“abcde”能正确赋值的操作是A)chars5)-*aVb,c,dVe,);B) charts="abcdc":Ochar*s;gc<s(三);D>chars6½canf(44%sw,&s):9 .以下正确的描述是oA)函数的定义可以嵌套,但函数的词用不可以嵌套B)函数的定义不可以嵌套,但函数的两用可以嵌套O函数的定义和函数的调用均不可以做套D画数的定义和函数的调用均可以嵌食10 .下面程序段的运行结果是charaJ='1.anguage,",p:p=a;whi1.e(*p!=,)Primn"%c”.*p32);+;IA>1.ANGUAGEB)1.anguageC) 1.ANGD)IangUAGE二、填空题:(每空2分,共20分)1 .计算机算法可分为和两大类别.2 .更合谙句是用一对界定的语句块.3 .至少执行一次命坏体的循环语句是.4 .设有数组定义:Chararray(="China"则数组array所占的空间为5 .以下程序段的输出结果是0inta32=(1,2,3,4,5.6K(p)2:P=a;printf(%dn,*(*(p+2)+1.);6 .函数调用语句:fun(a,b)Jc,d,e)实参个数为。7 .若有定义#dcfincN3#detincY(n)(N+I)*n)则执行语句z=2*(N+Y);后,Z的值为,8 .若有定义:inta23=4,6,8,10.12);则*(a1卜2)的值是_9 .feof(fp)函数用来判断文件是否结束,如果遇到文件结束,函数位为三、阅读程序:根据下面要求写出结果(每小题4分,共32分)1.若输入的值是-125,写出下面程序的运行结果.#inc1.ude<ma1.h.h>#inc1.udc<stdio.h>voidfun(im);voidmain()(intn:SCanfrPrimfr%d=",n);if(n<0Prin1.f(一"):n=fabs(n>:fun(n>:Jvoidfun(intn)(inthr;for(k=2:k<=sqr1.(n):k+)r=n%k;whi1.e(!r)xintf(44d,k);n=Vk;!f(n>1.>prin1.fm:r=n%k:)>if(n!=1.)printf(fc*%d>otn);)2,写出卜面程序的运行结果。Winc1.ude<stdio.h>intfun(char4);voidmain()char5ta=''abcde'Pri1.Nf('%dm''fin);Iintfun(char*s)char*p=3;whi1.e(tp)p+:return(p-s);I3,下面程序的执行结果是tfinc1.ude<sdk>.h>voidinv(int*,int):voidmain()i11W1OJ=(3.7,9.II,O,65.4.2);inv(aJ0);f)r(i=O;i<IO:i+)printir%d.a11);PrMf(W);voidinv(in1.*x.inin>intt.p.*i.j.m=(n1)Z2:i=x;j=x÷n-1.;P=X+m;fbr(ii<=pji÷÷j-)(hi:*i=*j;*j=t:)I4,下面程序执行的结果是:输入如下数据:1.iZhang1.i1.iWangZhangWangZhangWinc1.ude<stdio.h>Stmctperson(charname)20);intcount:XcadCTPJ=T1.HOJZhang'OjWangM,0;voidInainOintij;char1.cader_name(20J:fbr(i=1.u<=IOJ)(sc<nf(%s"JcadCJnUmC>:fortj=0j<3j)if(strcmp(1.cadcr-nan,1.cadcr(j.nan>c)=O)1.cadcrj.um+÷)for(i=0:i<3:i+)printf(N%5s:%dn"Jcadcr1.i.naine,1.cader(i.c<Hint);I5 .下面程序的运行结果是.#inc1.udc<stdio.h>voidmain()in<i=1.j>=3.j.k=3;in<a(5=(1.4.5):whi1.c(i<=nk>a(i)t+:fbrtj=n-1.j>=i-)a(j+1.=aU:ai)=k;fbr(i=O;i<=n;i+)Printfr%3d”,aiD;I6 .写出下向程序运行的结果.#inc1.ude<stdio.h>voidmain()(intk=I.n=263;do(k*=n%10;n=10;Jwhi1.e(n):printf(*%d,k);I7 .以下程序询出结果是Minc1.ude<stdio.h>voidmain()(intx=1.,y=1.a=1.,b=i;SWicch(X)(case1.swiich(y)(case0:a*+;break;caseI:b+;break:)case2:a+:b+;break;case3:a+;b+;)pfinf(*a=%d.b=i<j'n,a.b);I8,输入6回车后,下面程序的执行结果是一*inc1.ude<s<dio.h>1.ongintfac(int);voidmain()(intn;scanft"%d",n);Pnn1.T'%dWfac(n):I1.ongin(fac(intm)(1.onginif;if(m<0)printf("dataCITOr!f11;e1.seif(m=Om-1)f=1.;e1.sef=fac(m-I)m;returnf;I四、程序填空:(每空2分,共18分)1 .以下程序用来检杳;维数组是否对称(即:对所有i,j都有aiJUJ=aji"。Winc1.ude<s(dio.h>VUidmain。(inta44=11,2,3.4,2.2.5,6.353,7,8,6,7,4);inti,j.found=0:fur(j=0J<4J+)(fbr(i=O;i<4;i+)ift111Hfound=2;break:if(found)break:Iif(found)Printfr不对称W);e1.sePrimfC对称W);I2 .下面程序用“两路合并法”把两个已按升序排列的数组合并成一个升序数组.#inc1.ude<stdio.h>voidmain()(inta(3)=(5.9.1.9);intb5=(12.24.26.37.48):intc110,i=0j=0,k=0;whi1.e(i<3j<5)f(Q1.)(ck三bU;k+;j+;e1.se(ck=ai;k+;i+;JWhiIc()Ic1.k1.=ai;i+;k+;Jwhi1.c(151)(CIk)=Hj):k+:j+:Jfur(i=O:i<k;i+)Printf(“%3d",ci);3 .有15个数按从小到大地序存放在一个数批中,当输入一个数值时,要求用折半查找法找出该数是数组中第几个元素的值:如果该数不在数组中,则品示相应的提示.#inc1.udc<stdio.h>#dCfinCN15voidnain()(inti.num.top.bott.mid,aN);Prinm”请输入15个数(ai>ai1.DW);scanfC%d".&a|0);i=1.;whi1.c(i<N)scanR"%dn.ai);if(a(i<ai-1.)i+:c1.scPrimfr请盅新输入Prin1.fr必须大于dn”.a(i-1.);IIPrimfc1请输入杳找数据:scanf('%d".&num);for(U>p=0.b<(=N-1.:top<=bo1.1.:)!mid=;if(num=amid)(Prinm"%d位于表中第%d个数W.num.mid+1);break:Ie1.seif(num<amid)bo<t=6J;e1.setoo=(71:)if(top>bou)Prin1.fr%d不在我中n*num);I4 .avg函数的作用是计。数组Urray的平均值返回,i再填空使程序完整.f1.oatavg(f1.oatarray10)(inti;oatavgr.sum=0:for(i=1.:i÷+)sum+=12:avgr=sum/10;N1.Umavgr;)五'编程题:完成下面问题的C语言程序(每1题10分,共20分)1 .从左向右读和从右向左读大小都是一样的数,称为回交数,黎程输出