您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 华工网络教育,《高级语言程序设计C++》作业
一、分析程序,写输出结果1.#includeiostream.h#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';}答:static变量只会第一次初始化为0,之后保留就是上一次的值输出468103.#includeiostream.hintfun(intn){if(n==0)return1;return2*fun(n-1);}voidmain(){inta=5;coutfun(a)endl;}答:fun是递归函数如果是0就返回1,如果不是0就返回2*f(n-1),展开就是求2的n次方结果为:324.#includeiostream.hvoidmain(){char*cp=word;for(inti=0;i4;i++)coutcp+i'\t';}答:cp是指向word的字符指针cp+i表示每次cp之后第i个字符的指针cout表示输出字符指针只想的字符串,遇到’\0\’后停止答案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+(double)1/(i*i*i);couts=sendl;}4.函数create从键盘输入整数序列,以输入0为结束。按输入顺序建立一个以head为表头的单向链表。structnode{intdata;node*next;};create(node*head){node*p,*q;p=newnode;cinp-data;q=p;while(p-data){if(head==NULL)head=p;elseq-next=p;q=p;p=newnode;cinp-data;}q-next=NULL;deletep;}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=100&&z=0)//检查z的范围coutx=xy=yz=zendl;}}三、程序设计1.编写函数输出以下形状的图形,其中构成图形的数字和输出的行数通过参数传送。1222333334444444答:#includeiostream.hvoidmain(){inti,n;for(i=0;i5;i++){for(n=0;n2*i-1;n++){couti;}coutendl;}}2.请编程序,输入两个正整数啊a和b(ab),输出a、b之间所有整数的因数(除1和本身)。每行输出数据不超过10个。例如,若输入a为6,b为8,则输出格式要求如下:thefactorsof6:23thefactorsof7:nofactorthefactorsof8:24答:#includeiostreamUsingnamespacestd:Viodmain(){inta,b;boolx;cinabfor(inti=a;i=b;i++){cout“thefactorsof”i“:”endl;x=false;for(intj=2;ji;j++){if(i%j==0)coutj``,x=true}if(x)contendl;elsecont“nofactors”endl;}}3.请编程序,找出1至99之间的全部同构数。同构数是这样一组数:它出现在平方数的右边。例如:5是25右边的数,25是625右边的数,所以5和25都是同构数。答:#includeiostreamUsingnamespacestd:Viodmain(){for(inti=1;i=99;i++){if((i*i-i)%10==0)couti``;}}4.编写一个程序,实现如下功能:(1)从键盘输入aopb。其中a,b为数值;op为字符,限制为+、-、*、/。(2)调用函数count(op,a,b),计算表达式aopb的值。由主函数输出结果。答:#includeiostreamUsingnamespacestd:doubleconut(charop,doublea,doubleb){swith(op){case’+’:returna+b;case’-’:returna–b;case’*’:returna*b;case’/’:returna/b;default:return0;}}viodmain(){doublea,b;charop;cinaopb;coutcount(op,a,b)endl;}5.编写一个程序,实现如下功能:(1)输入k(100)个整数到数组x[100]中;(2)计算k个数的平均值及大于平均值的元素个数。答:#includeiostream#includeiterator#includefunctional#includeutility#includevector#includenumeric#includealgorithmUsingnamespacestd:voidmain(){istream_iteratordoubleitr(cin);vectordoublev(itr,istream_iteratordouble());doubled=0;size_tk=0d=accumulate(V.begin(),V.end(),d)/v.size();k=coumt_if((V.begin(),v,end(),bind2nd(lessdouble(),d));coutd’/t’kendl;输入完成之后按Ctrl+D表示输入完成6.定义函数voidreversion(intary[],intsize);逆置数组ary的元素。例如实参数组原来为[1,5,3,2,6,8,9,4],调用函数reversion后变成为[4,9,8,6,2,3,5,1]。答:#includeiostream#includeiteratorUsingnamespacestd:Viodreversion(intany[],intsize){int*a=ary,*b=ary+size-1,t;while(ab){t=*a,*a=*b;*b=1;a++,b++;}}viodmain(){inta[5]={1,2,3,4,5};copy(a,a+5,ostream_iteratorint(cout,””));coutendl;reversion(a,5)copy(a,a+5,ostream_iteratorint(cout,””));}7.数组a包含50个整数,把a中所有的后项除以前项之商取整后存入数组b(即b[i]=a[i]/a[i-1],并且b[50]=a[20]/a[1]),最后按每行5个元素的格式输出数组b。答:#includeiostream.hvoidmain(){inta[50],b[50];inti,j=0;//j用来控制换行for(i=1;i=50;i++){cout\nInputa[i]:;cina[i];}for(i=1;i=50;i++){if(i!=50)b[i]=a[i]/a[i-1];elseb[i]=a[20]/a[1];}for(i=0;i=50;i++){if(j!=5)cout\n;coutb[i];}}8.编程输出所有不超过100的其平方具有对称性质的正整数(也称回文数)。输出格式如下:numbersquare112439111212248426676答:#includeiostream.hvoidmain(){inti;longtext(inti);//判断i的i^2是不是回文数的函数for(i=4;i=100;i++){if(text(i)!=0)cout\nitext(i);}}longtext(inti){longsum,k,sum1=0;sum=i*i;k=sum;while(k0){sum1=sum1*10+k%10k=k/10;}if(sum1==sum)returni*i;elsereturn0;}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返回大于平均值的元素个数。答:voidcount(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;}
本文标题:华工网络教育,《高级语言程序设计C++》作业
链接地址:https://www.777doc.com/doc-5159434 .html