兰州城市学院2011-2012学年第一学期考试试卷AC语言程序设计注意事项:1.请考生按要求在试卷装订线内填写姓名、学号和年级专业。2.请仔细阅读各种题目的回答要求,在规定的位置填写答案。3.不要在试卷上乱写乱画,不要在装订线内填写无关的内容。4.满分100分,考试时间为120分钟。题号一二三四五总分统分人得分一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,每小题2分,共20分)请将答案填在下面的表格中:123456789101.完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为(D)A.连接、编译B.连接、运行C.编译、运行D.编译、连接2.下列说法正确的是(B)A.一个c语言程序并非总是从主函数位置开始执行的B.一个c语言程序有且只有一个主函数C.函数可以嵌套定义,不可以嵌套调用D.程序函数的位置不可以任意得分评分人3.下面是合法C语言标识符的是(D)A.2A_K;B._M+N;C.–M3;D.AC_2;4.下列格式符中,可以用于控制字符输出的是(D)A.%dB.%fC.%oD.%c5.设x、y、z和k都是int型变量,则执行表达式x=(y=4,z=16,k=30)后,x的值是(C)A.4;B.16;C.30;D.50;6.执行语句“for(i=1,s=0;i=5;i++)s+=i;”后,变量s、i的当前值是(B)A.10,5B.15,6C.15,5D.10,67.若有定义intx,*p;,则以下正确的赋值表达式是(B)A.p=x;B.p=&x;C.*p=&x;D.*p=*x;8.以下对结构体类型变量的定义中,不正确的是(C)A.typedefstructaaB.#defineAAstructaa{intn;AA{intn;floatm;floatm;}AA;}stud;AAstud;C.structD.struct{intn;{intn;floatm;floatm;}aa;}stud;structaastud;9.有如下函数调用语句:func(rec1,rec2+rec3,(rec4+rec5));函数调用语句中,含有的实参个数是(A)A.3B.4C.5D.以上均不是10.对于以下宏定义:#defineSQ(x)x*x#defineQQ(x,y)SQ(x)-SQ(y)宏调用QQ(2*3,2+3)执行后值为(C)A.25B.11C.43D.以上均不是二、填空题(每空2分,共20分)1.设inta=5,c=32;floatb=2.5;,表达式b+c/a的值为___8.5___。2.若x和a均是int型变量,则计算x=(a=4,6*2)后x的值是12__。3.设a=3,b=4,c=5。则a+bc&&b==c的值为0___。4.有如下程序段:intk=10;while(k=0)k=k-1;则循环体语句执行_0_次。5.inti=0,s=0;while(in)s+=i++;等价于inti,s;for(__i=0_,s=0___;__in______;__s+=i++______);6.将p说明为字符数组指针,数组大小为10,应写_char(*p)[10]_;7.对于int*p,*q,i=5,j=6;,执行:p=&i;q=p;p=&j;输出结果(*p)=____6___,(*q)=___5_____。得分评分人三、程序阅读题(请写出程序的输出结果。每题6分,共30分)1.#includestdio.hmain(){inti,j,m,n;i=8;j=10;m=++i;n=j++;printf(″%d,%d,%d,%d″,i,j,m,n);}输出结果:9,11,9,102..#includestdio.hmain(){inti;for(i=3;i10;i++){if(i*i/201)break;printf(%d;,i);}printf(\n);}输出结果:3,4,5,63.#includestdio.hintfac(intn)得分评分人{staticintf=1;f=f*n;return(f);}main(){inti;for(i=2;i=5;i++)printf(“%d!=%d\n”,i,fac(i));}输出结果:2!=23!=64!=245!=1204.#includestdio.hmain(){chars[]=“ABCD”,*p;for(p=s+1;*p!=’\0’;p++)printf(“%s\n”,p);}该程序的输出结果是:BCDCDD5.#includestdio.hintf(char*s){intk=0;while(*s)k=k*10+*s++-‘0’;return(k);}main(){inta;a=f(“1234”);printf(“a=%d\n”,a);}该程序的输出结果是:1234四、根据下列各编程题题意填空(每空2分,共10分)1、用for循环打印147101316192225,其语句应为:for(i=1;i=9;i++)printf(“%3d”,_3*i-2__);2、程序A如下:intf(intn){if(n=1)returnn;elsereturnf(n-1)+f(n-2);}等价于程序B:intf(intn){Intt0,t1,t_____;t0=0;t1=1;t=n;while(__n=2__){t=__t0+t1____;t0=t1;t1=t;得分评分人n--;}return__t____;}五、编程题(第1题8分,第2题12分,共20分)1.求分数序列:2/1,3/2,5/3,8/5,13/8,21/13,…,的前20项之和。1.#includestdio.hmain(){intn,t;floata=2,b=1,s=0;for(n=1;n=20;n++){s=s+a/b;t=a;a+=b;b=t;}printf(“thetotalis%f\n”,s);}2.输入5个字符串,从中找出最大的字符串并输出。要求:用二维字符数组存放这5个字符串,用指针数组元素分别指向这5个字符串,用一个二级指针变量指向这个指针数组。2.#includestdio.hmain(){chara[5][80],*p[5],**q,**max;inti;for(i=0;i5;i++)p[i]=a[i];for(i=0;i5;i++)gets(p[i]);max=&p[0];q=&p[1];for(i=1;i5;i++,q++)if(strcmp(*max,*q)0max=q;puts(*max);}得分评分人