50道C++编程练习题及解答

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

150道C/C++编程练习题1、输入3个数,求最大值intmain(){inta,b,c,m;cinabc;m=a;if(bm)m=b;if(cm)m=c;coutm;}2、编程序,求方程ax2+bx+c=0的根#includeiostream#includecmathusingnamespacestd;intmain(){doublea,b,c,d,x1,x2;cinabc;if(a==0)if(b==0)couterror\n;elsecoutx=-c/bendl;else{d=b*b-4*a*c;if(fabs(d)=1e-6)coutx1=x2=-b/(2*a)endl;elseif(d1e-6){x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);coutx1=x1,x2=x2endl;}elsecout方程无实根\n;}}3、输入一个成绩,打印相应的等级intmain(){inta;cina;if(a=90)coutA;elseif(a=80)coutB;elseif(a=70)coutC;elseif(a=60)coutD;elsecoutE;}4、输入3个double类型的值,判断这3个值是否可以表示一个三角形的三条边。intmain(){doublea,b,c;cinabc;if(a+bc&&b+ca&&c+ab)cout可以构成三角形;elsecout不可以构成三角形;}5、输入20个数,求其最大、最小和平均值intmain(){inti;inta,max,min,s;cina;max=min=a;s=a;for(i=1;i20;i++){cina;if(amax)max=a;if(amin)min=a;s=s+a;}coutmax,min,s/20.0endl;}6、输入若干个数,设输入的第一个数为后面要输入的数的个数,求平均值及最大值。intmain(){inta,m,s=0;cinn;cina;m=a;s=a;for(inti=1;in;i++){cina;s+=a;if(am)m=a;}cout平均值:(double)s/n,最大值:mendl;}27、输入若干个数,输入-999表示结束,求平均值及最大值。#includeiostream#includeiomanip#includecstdlibusingnamespacestd;intmain(){intn,count,sum,max;doubleave;count=0;cinn;sum=0;max=n;while(n!=-999){sum=sum+n;if(nmax)max=n;count++;cinn;}if(count!=0){ave=static_castdouble(sum)/count;coutsetiosflags(ios::fixed)setprecision(2);cout平均值为:ave最大值为:maxendl;}}8、求和s=1*1+2*2+3*3+...+100*100intmain(){inti,t;doubles=0;for(i=1;i=100;i++){t=i*i;s=s+t;}}9、印度国王的奖励,求和s=20+21+22+...+263intmain(){doublet=1,s=0;for(inti=0;i=63;i++){s=s+t;t=2*t;}couts/1.4e8endl;}10、求和s=1!+2!+3!+...+10!intmain(){inti;longt,s;t=1;s=0;for(i=1;i=10;i++){t=t*i;s=s+t;}}11、求e=1+1/1!+1/2!+1/3!+...intmain(){inti;doublet,e;i=1;t=1;e=1;while(t=1e-7){t=t/i;e=e+t;i=i+1;}coute;}12、求PI值,PI/4=1-1/3+1/5-1/7+...intmain(){inti,k;doublepi,t;i=1;t=1;pi=0;k=1;while(fabs(t)1e-8){pi=pi+t;i=i+2;k=-k;t=double(k)/i;}cout4*pi;}13、求PI值,PI/2=1+1/3+1/3*2/5+1/3*2/5*3/7+...#includeiostream#includecstdlibintmain(){inti,j;doublepi,t;i=0;j=1;t=1;pi=0;3while(t1e-18){pi=pi+t;i=i+1;j=j+2;t=t*i/j;}coutsetprecision(17)2*pi;}14、输入20个数,统计其中正数、负数和零的个数。intmain(){inta,n=0,m=0,s=0;for(inti=1;i=20;i++){cina;if(a0)n++;elseif(a0)m++;elses++;}coutnms;}15、输入若干个整数,计算其中的奇数之和与偶数之和,假设输入0表示结束。intmain(){inta,n=0,m=0;cina;while(a!=0){if(a%2==0)n+=a;;elsem+=a;cina;}coutnm;}16、写一函数,计算x的y次方(假设x、y都为正整数)。intpow(intx,inty){ints=1;for(inti=1;i=y;i++)s=s*x;returns;}17、求水仙花数(一个三位数,其各位数字立方和等于该数字本身)intmain(){inti,a,b,c;for(i=100;i=999;i++){a=i/100;b=i/10%10;c=i%10;if(i==a*a*a+b*b*b+c*c*c)coutiendl;}}intmain(){inti,a,b,c;for(a=1;a=9;a++)for(b=0;b=9;b++)for(c=0;c=9;c++){i=a*100+b*10+c;if(i==a*a*a+b*b*b+c*c*c)coutiendl;}}18、编写一个函数,确定一个整数是否为完全数(一个数,等于他的因子之和)。用这个函数确定和打印1到1000之间的所有完全数。intperfect(intn){inti,s=1;for(i=2;i=n/2;i++)if(n%i==0)s=s+i;if(s==n)return1;elsereturn0;}intmain(){intn;for(n=2;n=1000;n++)ifperfect(n)coutnendl;}19、写一函数,求斐波那契数列的第n项。intfib(intn){inti,f1,f2,f;if(n==1||n==2)return1;f1=1;f2=1;for(i=3;i=n;i++){f=f1+f2;4f1=f2;f2=f;}returnf;}20、写一个函数,取一个整数值并返回将此整数的各数字反序的数值intreverse(intn){ints=0;while(n){s=s*10+n%10;n/=10;};returns;}21、写一个函数,将一个整数的各位数字的反序打印voidshow(intn){while(n){coutn%10;n/=10;};}voidshow(intn){if(n10)coutn;else{coutn%10;show(n/10);}}22、写一个函数,将一个整数的各位数字的按顺序打印出来voidshow(intn){intk=1,m=n;while(m10){k*=10;m/=10;}while(n){coutn/k;n%=k;k/=10;};}voidshow(intn){inta[10],i=0;while(n){a[i]=n%10;n/=10;i++;}for(intj=i-1;j=0;j--)couta[j];}voidshow(intn){if(n10)coutn;else{show(n/10);coutn%10;}}23、求一个整数的各位数之和的函数intsum(intn){ints=0;while(n){s+=n%10;n/=10;};returns;}24、写一函数,判断某个数是否素数,以及求1-1000之内的素数#includeiostream#includecmath#includestdlib.husingnamespacestd;boolisprime(intn){floatk=sqrt(float(n));for(inti=2;i=k;i++)if(n%i==0)returnfalse;returntrue;}intmain(){for(intn=2;n=1000;n++)if(isprime(n))coutsetw(5)n;}525、用筛法求1-1000之内的素数#includeiostream#includecmath#includestdlib.h#includeiomanipusingnamespacestd;intmain(){inti,k,a[1001];for(i=2;i=1000;i++)a[i]=1;floats=sqrt(float(1000));for(i=2;i=s;i++)if(a[i]==1){k=2*i;while(k=1000){a[k]=0;k=k+i;}}for(i=2;i=1000;i++)if(a[i]==1)coutsetw(5)i;}26、判断某一年是否闰年的函数boolIsLeapYear(inty){return(y%4==0&&y%100!=0)||(y%400==0);}27、写一个函数,交换两个整型变量的值voidswap(int*p,int*q){intt;t=*p;*p=*q;*q=t;}voidswap(int&a,int&b){intt;t=a;a=b;b=t;}28、求两个数的最大公约数,欧几里德算法(辗转相除法)intgcd(intm,intn){intk;while(n!=0){k=m%n;m=n;n=k;}returnm;}intgcd(intm,intn){intk;while((k=m%n)!=0){m=n;n=k;}returnn;}intgcd(intm,intn){while(m!=n){if(mn)m=m-n;elsen=n-m;}returnm;}29、求两个数的最小公倍数intlcm(intm,intn){intt,s;if(mn){t=m;m=n;n=t;}s=m;while(s%n!=0)s=s+m;}intlcm(intm,intn){returnm*n/gcd(m,n);}30、百钱买百鸡问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,百钱买百鸡,问鸡翁、母、雏各几何?intmain(){intcock,hen,chick;for(cock=0;cock=20;cock++)for(hen=0;hen=33;hen++){chick=100-cock-hen;if(5*cock+3*hen+chick/3.0==100)coutsetw(4)cocksetw(4)hensetw(4)chickendl;}}31、编一程序,输入一行字符串,统计其中的小写英文字母的个数。intmain()6{chars[100];cin.getl

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功