1…………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线…………学院专业班级学号姓名武汉理工大学考试试卷(B卷)2011~2012学年1学期高级语言程序设计课程时间120分钟64学时,4学分,闭卷,总分100分,占总评成绩70%年月日题号一二三四五六合计满分201010201030100得分一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将所选代码填写在下面表格中的对应位置。错选、多选或未选均无分。123456789101.下列选项中,可以用作用户定义的合法标识符的是A._123B.foo~barC.caseD.3var2.设有intx=2,y,z;执行z=y=x++;后变量z的值是A.0B.1C.2D.33.设有inta=3;表达式a+=a*=a*=a的值是A.3B.9C.81D.1624.设有定义char*s=″\ta\017bc″;则指针变量s指向的字符串在内存中所占的字节数是A.5B.6C.9D.105.设有定义inti=0;执行语句“while(i++5);”后,变量i的值为A.1B.5C.6D.76.设有定义inta[20];则与元素a[4]等价的表示为A.a+4B.*a+4C.*(a+4)D.*(a+16)7.设有定义inti,*p;使p指向i的赋值语句是A.p=&i;B.*p=&i;C.*p=i;D.p=*&i;8.设int(*p)(inta);,p的含义是A.指向一维数组的指针变量B.指向二维数组的指针变量C.指向一个整型变量的指针变量D.指向整型函数的指针变量得分29.设intb[][5]={1,2,3,4,5,6,7};,则元素b[1][2]的值是A.0B.2C.6D.710.已知函数func的原型是doublefunc(double*pd,int&ri);变量x和y的定义是doublex;inty;把x和y分别作为第一参数和第二参数来调用函数func,正确的调用语句是A.func(x,&y);B.func(&x,y);C.func(&x,&y);D.func(x,y);二、填空题(本大题共5小题,每空1分,共10分)请在每小题的空格中填上正确答案,错填、不填均无分。1.C++语言的头文件与源程序文件扩展名分别是___________和_____________。2.C++中,用于输出表达式值的标准输出流对象是__________,用于从键盘上为变量输入值的标准输入流对象_________。3.从一条函数原型语句“intfun1(void);”可知,该函数的返回值类型为______,该函数带有______个参数。4.C++中,变量的存储类型有自动变量、_______________、_______________和寄存器变量。5._______________语句是先执行循环体,然后检查循环条件;_______________或for语句是先检查循环条件,再执行循环体。三、判断题(本大题共5小题,每小题2分,共10分)下面的说法正确的在题号前括号内打“√”;错误的打“x”。()1.不同类型的变量在内存中占用存储空间的大小是一样。()2.break语句只能用在循环体中。()3.在函数体内定义的变量称局部变量,局部变量只能被本函数引用。()4.一维数组的数组名是一个地址常量,表示数组首元素的地址。()5.返回值类型、参数个数和参数类型都相同的函数也可以重载。四、程序阅读题(本大题共4小题,每小题5分,共20分)请将下面各程序的输出填写下划线处。1.#includeiostream.hintmain(){inti,s=0;for(i=1;i6;i++)s+=i*i;couts=sendl;return0;}输出:得分得分得分32.#includeiostream.hintmain(){inta[8]={36,73,48,14,55,40,32,66};intb1,b2,i;b1=b2=a[0];for(i=1;i8;i++){if(a[i]b1){b2=b1;b1=a[i];}elseif(a[i]b2)b2=a[i];}coutb1b2endl;return0;}输出:3.#includeiostream.hintmain(){inta[10]={76,83,54,62,40,75,80,92,77,84},b[5]={60,70,80,90,101};intc[5]={0},i,j;for(i=0;i10;i++){j=0;while(a[i]=b[j])j++;c[j]++;}for(i=0;i5;i++)coutc[i]'';coutendl;return0;}输出:4.#includeiostream.h#includestring.hvoidreverse(char*s){char*t,ch;for(t=s+strlen(s)-1;st;s++,t--){ch=*s;*s=*t;*t=ch;}}intmain(){chars1[10]=123456;reverse(s1);couts1endl;return0;}输出:____________________4五、程序填空题(本大题共2小题,每空2分,共10分)请在程序中的下划线处填空,将程序补充完整。1.下面程序运行后,输出二维数组b的最小值(-30)。#includeiostreamusingnamespacestd;intfun(inta[][4]);intmain(){intb[3][4]={{1,3,-5,7},{2,4,-6,8},{10,20,-30,40}};coutfun(________)endl;//(1)return0;}intfun(inta[][4]){inti,j,tem;tem=a[0][0];for(i=0;i3;i++)for(j=0;j4;j++)if(___________________)tem=a[i][j];//(2)return(tem);}2.把从键盘上输入的一个大于等于3的整数分解为质因子的乘积。如输入24时得到的输出结果为“2223”,输入50时得到的输出结果为“255”,输入37时得到的输出结果为“37”。#includeiostreamusingnamespacestd;intmain(){intx;cout请输入一个整数,若小于3则重输:;docinx;while(___________);//(1)inti=2;do{while(___________){//(2)couti;x/=i;}__________;//(3)}while(ix);if(x!=1)coutx;coutendl;return0;}…………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线…………得分5六、程序编写题(本大题共3小题,每小题10分,共30分)1.编写一个程序,输出一维数组a的最大元素值和最小元素值。要求在程序中定义一个一维数组a并赋初值(如inta[8]={36,25,48,14,55,20,47,82};),输出“Min=14,Max=82”。2.求1+1/3+1/5+1/7+…的前100项之和。3.下面程序的功能是输入n(n0)个学生的成绩,保存在一个单向链表中,计算他们的平均成绩。请阅读程序并编写Student*create(intn);函数。#includeiostreamusingnamespacestd;structStudent{intscore;Student*next;};Student*create(intn);floatfun(Student*head);intmain(){intn;Student*p;cout请输入学生人数:;cinn;p=create(n);coutfun(p)endl;return0;}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;}Student*create(intn)//请在下面写你的函数得分6武汉理工大学考试试题答案(B卷)2011~2012学年1学期高级语言程序设计课程一、单项选择题(本大题共10小题,每小题2分,共20分)12345678910ACDBCCADDB二、填空题(本大题共5小题,每空1分,共10分)1.HCPP2.coutcin3.int04.静态变量外部变量5.do…whilewhile三、判断题(本大题共5小题,每小题2分,共10分)1.(x)2.(x)3.(√)4.(√)5.(x)四、程序阅读题(本大题共4小题,每小题5分,共20分)1.s=552.73663.213314.654321五、程序填空题(本大题共2小题,每空2分,共10分)1.(1)b(2)a[i][j]tem2.(1)x3(2)x%i==0(3)i++六、程序编写题(本大题共3小题,每小题10分,共30分)1.#includeiostreamusingnamespacestd;intmain(){inta[8]={36,25,48,14,55,20,47,82};intmin,max;min=max=a[0];for(inti=1;i8;i++){if(a[i]min)min=a[i];if(a[i]max)max=a[i];}coutMin=min,Max=maxendl;return0;}7…………装订线………………装订线内不要答题,不要填写信息………………装订线…………2.#includeiostream.hintmain(){intn;doubles=0;for(n=1;n=100;n++)s=s+1.0/(2*n-1);cout“s=sendl;return0;}3.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;}8