1…………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线…………学院专业班级学号姓名武汉理工大学考试试卷(A卷)2017~2018学年1学期高级语言程序设计课程时间120分钟56学时,3.5学分,闭卷,总分100分,占总评成绩70%年月日题号一二三四五六合计满分28241830100得分一、单项选择题(本大题共14小题,每小题2分,共28分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将所选代码填写在下面表格中的对应位置。错选、多选或未选均无分。12345678910111213141.下列选项中,不能..定义为用户标识符的是A._0B._intC.MainD.sizeof2.C++语言中运算对象必须是整型的运算符是A./B.%=C.=D.=3.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是A.1B.2C.2.0D.2.54.设有inta=3;则执行完表达式a+=a-=a*a后,a的值是A.-12B.-3C.6D.95.设有intx,y,t;,则执行语句:x=y=3;t=++x||++y;后,y的值为A.1B.2C.3D.46.设有inta=3;则执行语句:while(n--6)coutn;后,输出结果是A.876B.8765C.987D.98767.下列数组定义中,不正确...的是A.inta[2][3];B.intb[][3]={0,1,2,3};C.intc[100][100]={0};D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}}得分28.在函数调用语句func(rec1,rec2+rec3,(rec4,rec5));中,含有的实参个数是A.2B.3C.4D.59.对于基类型相同的两个指针变量之间,不能进行的运算是A.B.=C.+D.-10.设有定义语句chars[]=159,*p=s;则执行语句:for(inti=1;i=2;i++)cout(*p++);后的输出结果是A.12B.15C.16D.5911.若有inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是A.*p+9B.*(p+8)C.p+8D.*p+=912.函数默认参数在函数原型中说明,默认参数必须放在参数序列的A.前部B.中部C.后部D.两端13.设函数int&max(int&,int&)返回两参数中较大者,如有定义inta=10,b=15;在执行max(a,b)++后,a,b值分别为A.10,15B.11,15C.10,16D.1l,1614.设有charch[]={abc\0def},*p=ch;,则执行cout(p+4)endl;语句的输出结果是A.0B.0defC.dD.def二、程序阅读题(本大题共6小题,每小题4分,共24分)请将下面各程序的输出填写在下划线处。1.#includeiostream.hintmain(){ints=0,t=1,i;for(i=1;i5;i++){t=t*i;s+=t;}coutsendl;return0;}输出:2.#includeiostream.hintmain(){intm,n;m=63;n=14;while(m!=n){while(mn)m-=n;while(nm)n-=m;}coutmendl;return0;}输出:得分33.#includeiostream.hintmain(){inta[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};inti=0,j=0,s=0;while(i++4){if(i==2||i==4)continue;j=0;do{s+=a[i][j];j++;}while(j4);}coutsendl;return0;}输出:4.#includeiostreamusingnamespacestd;intfun(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}intmain(){inti,s=0;for(i=0;i3;i++)s+=fun(i);coutsendl;return0;}输出:5.#includeiostreamusingnamespacestd;intwork(inta,intb){if(a%b)returnwork(b,a%b);elsereturnb;}intmain(){ints;s=work(20,12);coutsendl;return0;}输出:6.#includeiostream.hintmain(){char*s=12134;intk=0,a=0;while(s[k]!='\0'){if(k%2==0)a=a+(s[k]-'0'+1);elsea=a+(s[k]-'0');k++;}coutaendl;return0;}输出:4三、程序填空题(本大题共2小题,每空3分,共18分)1.下面程序执行后,按从小到大的顺序输出用0至9之间的不同的数字组成的全部三位数(从102到987共648个)。请填空将程序补充完整。#includeiostream.hintmain(){inti,j,k,cnt=0;for(i=1;i=9;i++)for(j=0;j=9;j++)if(__________)continue;//(1)elsefor(k=0;k=9;k++)if(____________________)//(2){cout__________;//(3)cnt++;}coutendlcntendl;return0;}2.函数fun的功能是:根据所给的年、月、日,计算出该日是这一年的第几天,并作为函数值返回。例如,函数fun(2016,10,11)的返回值为285,表示2016年10月11日是该年的第285天。请填空将函数补充完整。intfun(intyear,intmonth,intday){inttable[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};ints=0,i;for(i=1;i__________;i++)//(1)s=s+__________;//(2)s=s+day;if((________________________________________)&&month2)//(3)s=s+1;returns;}…………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线…………得分5四、程序编写题(本大题共3小题,每小题10分,共30分)1.编写程序:输入两个正整数a,b(ab),求连乘积a×(a+1)×(a+2)×...×(b-1)×b的末尾有多少个0?例如,输入1164,输出12。2.编写一个函数intfun(intx),该函数的功能是求正整数x的逆序数。例如,函数fun(1234)的返回值为4321。得分63.编写doubleaverage(LinkListhead)函数,使得下列程序运行后,输出3.2。#includeiostream.hstructNode{intdata;Node*next;};typedefNode*LinkList;doubleaverage(LinkListhead);Node*creat(inta[],intn){LinkListhead,p,q;head=NULL;for(inti=0;in;i++){p=newNode;p-data=a[i];p-next=NULL;if(head==NULL){head=p;q=p;}else{q-next=p;q=p;}}returnhead;}intmain(){inta[6]={4,1,2,3,6,5};LinkListhead;head=creat(a,6);coutaverage(head)endl;return0;}doubleaverage(LinkListhead){}7…………装订线………………装订线内不要答题,不要填写信息………………装订线…………武汉理工大学考试试题答案(A卷)2017~2018学年1学期高级语言程序设计课程一、单项选择题(本大题共14小题,每小题2分,共28分)1234567891011121314DBCACADBCBBCCD二、程序阅读题(本大题共6小题,每小题4分,共24分)1.332.73.924.215.46.14三、程序填空题(本大题共2小题,每空3分,共18分)1.(1)j==i(2)k!=i&&k!=j(3)100*i+10*j+k2.(1)month(2)table[i](3)year%4==0&&year%100!=0||year%400==0四、程序编写题(本大题共3小题,每小题10分,共30分)1.#includeiostreamusingnamespacestd;intmain(){inti,a,b,t,two=0,five=0;cinab;for(i=a;i=b;i++){t=i;while(t%2==0){two++;t=t/2;}while(t%5==0){five++;t=t/5;}}cout(twofive?five:two)endl;return0;}82.intfun(intx){intsum=0;while(x!=0){sum=sum*10+(x%10);x=x/10;}returnsum;}3.doubleaverage(LinkListhead){intn=0,s=0;LinkListp;if(head==NULL)return0;p=head;while(p-next){s=s+p-data;n++;p=p-next;}return1.0*s/n;}9