您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 华南理工2017《高级语言程序设计C++》平时作业
一、分析程序,写输出结果1.#includeiostream.h201709#includemath.hvoidmain(){intm,k,i;for(m=1;m=10;m+=2){k=m/3;for(i=2;i=k;i++)if(m%i)coutm;}}解:m的取值为1,3,5,7,9对应k的取值为0,1,1,2,3,第二个for循环:只有当k=2和k=3时才执行,当k=2,i=2,m%i等于1为真,输出m为7当k=3,i=2,m%i等于1为真,输出m为9,i=3,m%i等于0为假,无输出结果为:792.#includeiostream.hvoidfun();voidmain(){inti;for(i=1;i5;i++)fun();coutendl;}voidfun(){staticinta;intb=2;a+=2;couta+b'\t';}解:主函数循环4次调用fun();fun()函数内定义了静态局部变量a,所以a的值会保持到下一次调用。结果为:4,6,8,103.#includeiostream.hintfun(intn){if(n==0)return1;return2*fun(n-1);}voidmain(){inta=5;coutfun(a)endl;}解:fun()函数用递归求出2的n次方,结果为:324.#includeiostream.hvoidmain(){char*cp=word;for(inti=0;i4;i++)coutcp+i'\t';}解:主函数4次循环中,第一次输出cp+i,此时cp指向“word”的第一个字符,所以输出“word”,之后cp依次往后移一个位置,输出此位置及后面的字符结果为:wordordrdd二、.根据程序功能填空。1.程序把10个数存储到一维数组a中,并求该数组中最大值。#includeiostream.hvoidmain(){intmax;inta[10]={76,55,95,87,85,83,65,90,77,85};int*p=a;max=*p;for(;p&a[10];p++)if(*pmax)max=*p;coutmax=maxendl;}2.下面程序的功能是输出1至100之间每位数字的乘积大于每位数的和的数。例如,45两位数字的乘积为4×5=20,和为4+5=9。#includeiostream.hvoidmain(){intn,k=1,s=0,m;for(n=1;n=100;n++){k=1;s=0;m=n;while(m0){k*=m%10;s+=m%10;m=m/10;}if(ks)coutn'\t';}}3.程序对输入的n求s=1+1/23+1/33+…+1/n3。#includeiostream.hvoidmain(){doubles;inti,n;coutn=;cinn;s=0;for(i=1;in;i++)s=s+/(i*i*i);couts=sendl;}4.函数create从键盘输入整数序列,以输入0为结束。按输入顺序建立单向链表并返回表头。structnode{intdata;node*next;};node*create(){node*head,*p,*q;p=newnode;head=p;cinp-data;while(p){q=p;p=-data;q-next=p;cinp-data;}if(head==p)head=NULL;elsep=0;;returnhead;}5.以下程序求方程的全部整数解:3x+2y-7z=5(0≤x,y,z≤100)#includeiostream.hvoidmain(){intx,y,z;for(x=0;x=100;x++)for(y=0;y=100;y++){if((z=3*x+2*y-5)%7)continue;z=z/7;//求出z的值if(z=0&&z100)//检查z的范围coutx=xy=yz=zendl;}}三、程序设计1.编写函数输出以下形状的图形,其中构成图形的数字和输出的行数通过参数传送。1222333334444444答:voidPrintFigure(intnum,introw){inti,j,k;num=num-row+1;for(i=1;i=row;i++){j=2*i-1;for(k=1;k=j;k++)coutnum;num++;coutendl;}}2.请编程序,输入两个正整数啊a和b(ab),输出a、b之间所有整数的因数(除1和本身)。每行输出数据不超过10个。例如,若输入a为6,b为8,则输出格式要求如下:thefactorsof6:23thefactorsof7:nofactorthefactorsof8:24答:#includeiostream.h#includemath.hvoidout(inta,intb){inti,j,count;for(i=a;i=b;i++){count=0;printf(\nthefactorof%d\n,i);for(j=2;ji;j++){if(i%j==0){printf(%s%d,(count==0?:,),j);count++;}}if(count==0)printf(nofactor);}}3.请编程序,找出1至99之间的全部同构数。同构数是这样一组数:它出现在平方数的右边。例如:5是25右边的数,25是625右边的数,所以5和25都是同构数。答:#includeiostreamusingnamespacestd;voidmain(){inti,j,k;k=10;for(i=1;i=99;i++){if(i==k)k*=10;j=i*i;if(j%k==i)couti;}coutendl;}4.编写一个程序,实现如下功能:(1)从键盘输入aopb。其中a,b为数值;op为字符,限制为+、-、*、/。(2)调用函数count(op,a,b),计算表达式aopb的值。由主函数输出结果。答:#includestdafx.h#includeiostreamusingnamespacestd;classcal{public:intadd(intx,inty)//加法定义函数{returnx+y;}intsub(intx,inty)//减法定义函数{returnx-y;}intmul(intx,inty)//乘法定义函数{returnx*y;}intdiv(intx,inty)//除法定义函数{if(y==0)cout0不能作除数endl;elsereturnx/y;}};intmain(){calc;//定义对象intx,y;charID;cout请输入要计算的两个数及运算符,中间用空格隔开比如23+endl;cinxyID;switch(ID){case'+':coutc.add(x,y)endl;break;case'-':coutc.sub(x,y)endl;break;case'*':coutc.mul(x,y)endl;break;case'/':coutc.div(x,y)endl;};return0;}5.编写一个程序,实现如下功能:(1)输入k(100)个整数到数组x[100]中;(2)计算k个数的平均值及大于平均值的元素个数。答:#includeiostream.hvoidmain(){Intx[100],k,i,n;Doublesum=0.0,ave;coutHowmanyData?\n;cink;for(i=0;ik;i++){cinx[i];sum+=x[i];}ave=sum/k;n=0;for(i=0;ik;i++)//求大于平均值的元素个数if(x[i]ave)n++;coutaverage=ave\n;coutTherearenelementslargethanaverage.\n;}6.定义函数voidreversion(intary[],intsize);逆置数组ary的元素。例如实参数组原来为[1,5,3,2,6,8,9,4],调用函数reversion后变成为[4,9,8,6,2,3,5,1]。答:voidreversion(intary[],intsize){inttemp;for(inti=0;isize/2;i++){temp=ary[i];ary[i]=ary[size-1-i];ary[size-1-i]=temp;}}7.数组a包含50个整数,把a中所有的后项除以前项之商取整后存入数组b(即b[i]=a[i]/a[i-1],并且b[0]=a[0]/a[49]),最后按每行5个元素的格式输出数组b。答:#includestdio,hvoidmain(){inta[50],b[5],i,,j;printf(请输入50个数);for(i=0;i50;i++);scanf(%d,&a[i]);for(i=9;i0;i-2){for(j=0;j5;j++)b[j]=a[i]%a[i-1];}for(j=0;j5;j++)for(i=1;i5;i++)printf(%d,b[i];printf(\n);}8.编程输出所有不超过100的其平方具有对称性质的正整数(也称回文数)。输出格式如下:numbersquare112439111212248426676答:#includestdio.hIntmainvoidIntj=0;For(i=0;j100;j++)If(m[j]!=m[i])Break;If(j=i)Printf(n,n*n);}Returno;}9.编写程序,打印如下杨辉三角。111121133114641答:#includeiostream#includeiomanipusingnamespacestd;voidmain(){constintm=5;inta[m][m];for(inti=0;im;i++){a[i][0]=1;a[i][i]=1;}for(intj=2;jm;j++){for(intk=1;kj;k++)a[j][k]=a[j-1][k-1]+a[j-1][k];}for(inti=0;im;i++){coutsetw(m-i);for(intj=0;j=i;j++)couta[i][j];coutendl;}}10.定义一个函数,计算长度为k的整型数组元素的平均值及大于平均值的元素个数。调用函数的语句为:count(a,k,ave,num);其中a是数组名,k是数组元素个数,ave返回的平均值,num返回大于平均值的元素个数。答:#includeiostream.hcount(a,k,&ave,&num){intcount=0,sum=0;inti;for(i=0;ia;i++){sum+=a[i];}ave=(float)sum/(float)a;for(i=0;ia;i++){if(a[i]ave)count++;}num=count;
本文标题:华南理工2017《高级语言程序设计C++》平时作业
链接地址:https://www.777doc.com/doc-4483869 .html