一、分析程序,写输出结果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;}}792.#includeiostream.hvoidfun();voidmain(){inti;for(i=1;i5;i++)fun();coutendl;}voidfun(){staticinta;intb=2;a+=2;couta+b'\t';}468103.#includeiostream.hintfun(intn){if(n==0)return1;return2*fun(n-1);}voidmain(){inta=5;coutfun(a)endl;}324.#includeiostream.hvoidmain(){char*cp=word;for(inti=0;i4;i++)coutcp+i'\t';}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;1m=n;while(2m){k*=m%10;s+=m%10;3m/=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=s+(1.0/(n*n*n);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)break;z=3*x+2*y-5)/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;voidprintFactor(inti);voidmain(){intnumA,numB;coutInputTwoNumbers:endl;cinnumAnumB;for(inti=numA;i=numB;i++){printFactor(i);}}voidprintFactor(inti){coutFACTORSOFi:endl;int*fact=newint();intn=0;for(intk=2;ki;k++){if(i%k==0){fact[n]=k;n++;}}if(n==0){coutNOFACTORendl;}else{for(intj=0;jn;j++){coutfact[j];if((j+1)%10==0){coutendl;}}coutendl;}}3.请编程序,找出1至99之间的全部同构数。同构数是这样一组数:它出现在平方数的右边。例如:5是25右边的数,25是625右边的数,所以5和25都是同构数。#includeiostreamusingnamespacestd;intmain(){longx,y,i=10;intflag=0;for(x=1;x100;x++){y=x*x;while(y/i!=0){if(y%i==x){flag=1;break;}i=i*10;}if(flag==1)coutx''yendl;flag=0;i=10;}return0;}4.编写一个程序,实现如下功能:(1)从键盘输入aopb。其中a,b为数值;op为字符,限制为+、-、*、/。(2)调用函数count(op,a,b),计算表达式aopb的值。由主函数输出结果。#includeiostreamusingnamespacestd;templatetypenameTTCOUNT(charop,Ta,Tb){switch(op){case'+':return(a+b);break;case'-':return(a-b);break;case'*':return(a*b);break;case'/':return(a/b);break;default:coutError.endl;break;}}intmain(){inta,b;charop;cinaopb;if(op=='/'&&b==0){coutInputError.endl;}coutResultisCOUNT(op,a,b)endl;system(pause);return0;}5.编写一个程序,实现如下功能:(1)输入k(100)个整数到数组x[100]中;(2)计算k个数的平均值及大于平均值的元素个数。#includeiostream.hfloataverage(int[],int);intnum(int[],int);voidmain(){intk,i,x[100];floatave;for(k=0;k100;k++){cini;if(i==0){break;}x[k]=i;}ave=average(x,k);cout平均值aveendl;cout大于平均值的元素个数num(x,k)endl;}floataverage(intu[],intk){inta,sum=0;for(a=0;ak;a++)sum+=u[a];return(float)sum/k;}intnum(intu[],intk){intb,c,m=0;intave=average(u,k);for(c=0;ck;c++){if(u[c]ave)m++;}returnm;}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){inti;inttemp;for(i=0;isize/2;i++){temp=ary[i];ary[i]=ary[size-i];ary[size-i]=temp;}}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%10;k=k/10;}if(sum1==sum)returni*i;elsereturn0;}9.编写程序,打印如下杨辉三角。111121133114641#includestdio.hvoidmain(){inta[5][5],i,j;for(i=0;i5;i++){for(j=5;j=i;j--)printf(%2c,'');/*两个空格*/for(j=0;j=i;j++){if(i==j||j==0)a[i][j]=1;elsea[i][j]=a[i-1][j]+a[i-1][j-1];printf(%3d,a[i][j]);/*%3d后一个空格*/if(i==j)printf(\n);}}}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;}