1…………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线…………学院专业班级学号姓名武汉理工大学考试试卷(A卷)2011~2012学年1学期高级语言程序设计课程时间120分钟64学时,4学分,闭卷,总分100分,占总评成绩70%年月日题号一二三四五六合计满分201010201030100得分一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将所选代码填写在下面表格中的对应位置。错选、多选或未选均无分。123456789101.下列选项中,可以用作用户定义的合法标识符的是A._out2B.defineC.stu&3D.5_example2.若x=1,y=2,执行y+=x++后,y的值为A.1B.2C.3D.43.设有定义intx=1,y=2,z;执行z=xy?x+2:y-2后,变量z的值是A.0B.1C.2D.34.设有定义chars[10]=″\ta\017bc″;则字符串s的长度为A.5B.7C.9D.105.设有定义intn=0;执行语句“while(n++=2);”后,变量n的值为A.1B.2C.3D.46.设有定义inta[5];则a数组中首元素的地址可以表示为A.&aB.aC.a+1D.&a[1]7.设变量m定义为“intm=7;”,则定义变量p的正确语句为A.intp=&m;B.int*p=&m;C.int&p=*m;D.int*p=m;8.已知某应用系统中已经定义了函数fun,其原型是intfun(char='A');则下列函数中,可以在同一系统中进行重载的是A.intfun();B.intfun(char);C.intfun(char,int);D.intfun(char,double=0.0);得分29.数组定义为inta[2][3]={1,2,3,4,5,6},值为1的数组元素是A.a[0][0]B.a[1][1]C.a[1][2]D.a[2][3]10.定义一个指向具有5个元素的一维整型数组的指针变量的正确方法为A.int*p[5];B.int*p;C.int(*p)[5];D.int*p[][5];二、填空题(本大题共5小题,每空1分,共10分)请在每小题的空格中填上正确答案,错填、不填均无分。1.C++中的每条基本语句以_______作为结束符,每条复合语句以______作为结束符。2.在函数外定义的变量称为______变量,若没有被初始化则系统隐含对它赋初值_____。3.声明或定义一个内联函数时,必须在函数开始使用保留字_____________。当不需要函数返回值时,则应把该函数类型定义为__________。4.在一个循环体中,可以用____________语句退出循环,还可以用________________语句结束本次循环。5.C++中,语句“inti=5,*p=&i;”中的“*”是__________符,而语句“cout*p;”中的“*”是____________符。三、判断题(本大题共5小题,每小题2分,共10分)下面的说法正确的在题号前括号内打“√”;错误的打“x”。()1.C++程序中的变量,必须先定义(声明),才能使用。()2.表达式3*5/2与表达式3/2*5等价,即两个表达式的值相等。()3.while循环语句的循环体至少执行一次。()4.在一个函数内定义的变量只在本函数范围内有效。()5.引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。四、程序阅读题(本大题共4小题,每小题5分,共20分)请将下面各程序的输出填写下划线处。1.#includeiostreamusingnamespacestd;intmain(){inta[8]={6,19,4,12,20,5,18,25};int*p;for(p=a;pa+8;p++)if(*p10)cout*p;coutendl;return0;}输出:得分得分得分32.#includeiostream.hintmain(){inta[4][4],i,j,s=0;for(i=0;i=3;i++)for(j=0;j=3;j++)a[i][j]=i+j;for(i=1;i4;i++)for(j=1;j=i;j++)s=s+a[i][j];couts=sendl;return0;}输出:3.#includeiostreamusingnamespacestd;intf(int);intmain(){inti,sum=0;for(i=1;i=3;i++)sum=sum+f(i);coutsum=sumendl;return0;}intf(intx){autointy=1;staticintz=2;y++;z++;returnx+y+z;}输出:4.#includeiostream.hintmain(){ints1=0,s2=0;for(inti=1;i=9;i++)if(i%2)s1+=i;elses2+=i;couts1''s2endl;return0;}输出:4五、程序填空题(本大题共2小题,每空2分,共10分)请在程序中的下划线处填空,将程序补充完整。1.下面程序的功能是主函数通过调用average函数计算数组中各元素的平均值。#includeiostreamusingnamespacestd;floataverage(int*p,intn);intmain(){inti,a[5]={2,4,6,8,10};floatavg;avg=average(_______,5);//(1)cout平均值=avgendl;return0;}floataverage(int*p,intn){inti;floatsum=0.0;for(i=0;in;i++)sum=sum+_____________;//(2)return(__________);//(3)}2.下面程序的功能是输出2至99之间的所有质数(质数是只能被1和它本身整除的正整数)。#includeiostream#includecmathusingnamespacestd;intmain(){inti,n,temp;for(n=2;___________;n++){//(1)temp=sqrt(n);for(i=2;i=temp;i++)if(n%i==0)______________;//(2)if(itemp)coutn;}coutendl;return0;}…………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线…………得分5六、程序编写题(本大题共3小题,每小题10分,共30分)1.编写一个完整的程序。输入一个班35个学生某门课程的考试成绩,统计并输出全班学生平均分和大于等于60分的人数。2.函数doublefact(intn)计算n的阶乘。请写出fact的递归函数和非递归函数。(注:递归函数和非递归函数各5分)得分63.下面程序的功能是输入n(n0)个学生的成绩,保存在一个单向链表中,计算他们的平均成绩。请阅读程序并编写floataver(Student*head);函数。#includeiostreamusingnamespacestd;structStudent{intscore;Student*next;};Student*create(intn);floatfun(Student*head);intmain(){intn;Student*p;cout请输入学生人数:;cinn;p=create(n);coutfun(p)endl;return0;}Student*create(intn){Student*p1,*head;inti;head=NULL;for(i=1;i=n;i++){p1=newStudent;cinp1-score;p1-next=head;head=p1;}returnhead;}floatfun(Student*head)//请在下面写你的函数7…………装订线………………装订线内不要答题,不要填写信息………………装订线…………武汉理工大学考试试题答案(A卷)2011~2012学年1学期高级语言程序设计课程一、单项选择题(本大题共10小题,每小题2分,共20分)12345678910ACAADBBCAC二、填空题(本大题共5小题,每空1分,共10分)1.;(或分号)}2.全局变量03.inlinevoid4.breakcontinue5.说明运算三、判断题(本大题共5小题,每小题2分,共10分)1.(√)2.(x)3.(x)4.(√)5.(√)四、程序阅读题(本大题共4小题,每小题5分,共20分)1.6452.s=243.sum=244.2520五、程序填空题(本大题共2小题,每空2分,共10分)1.(1)a(2)*(p+i)(或p[i])(3)sum/n2.(1)n100(2)break六、程序编写题(本大题共3小题,每小题10分,共30分)1.#includeiostreamusingnamespacestd;intmain(){inti,n=0,s=0,x;for(i=1;i=35;i++){cinx;if(x=60)n++;s=s+x;}coutAverageiss/35endl;coutPassedisnendl;return0;}82.doublefact(intn)//非递归函数{inti;doublep=1.0;for(i=1;i=n;i++)p=p*i;returnp;}doublefact(intn)//递归函数{if(n==1)return1;elsereturnn*fact2(n-1);}3.floatfun(Student*head){Student*p;intn;floatsum=0.0;p=head;n=0;while(p!=NULL){n++;sum=sum+p-score;p=p-next;}returnsum/n;}9