您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > C++经典编程练习题
C++经典编程例题(1)1、(已验证!)计算铁路运费。已知从甲地到乙地,每张票托运行李不超过50公斤时,按每公斤0.13元,超过50公斤,超过部分按每公斤0.2元计算。输入行李重量w,计算运费y.#includeiostreamusingnamespacestd;voidmain(){floatmoney=0,weight;cout请输入货物重量(单位:千克):;cinweight;if(weight0)cout”数据错误!”endl;if(weight=50)money=weight*0.13;elseif(weight50)money=50*0.13+(weight-50)*0.2;cout\n总费用是:moneyendl;}2、(已验证!)根据一元二次方程a*x*x+b*x+c=0求解方程。输入a、b、c的值,求x1、x2的实根.#includeiostream#includecmathusingnamespacestd;voidmain(){doublea,b,c,p,x1,x2,D;cout请输入3个数:endl;couta=;cina;coutb=;cinb;coutc=;cinc;cout方程为:ax^2+bx+c=0endl;D=b*b-4*a*c;if(D0)cout方程无解!endl;if(D==0){p=-b/(2*a);x1=p+sqrt(D)/(2*a);cout方程有两个相同的实根。endl;coutx1=x2=x1endl;}if(D0){p=-b/(2*a);x1=p+sqrt(D)/(2*a);x2=p-sqrt(D)/(2*a);cout方程有两个不同的实根。endl;coutx1=x1endlx2=x2endl;}}3、(已验证!)分别使用for和while求n!.注解n!=1*2*3*...*n,n由键盘输入。For:#includeiostreamusingnamespacestd;voidmain(){inti,n,s;s=1;coutinputn:;cinn;for(i=1;i=n;i++)s=i*s;coutsendl;}While:#includeiostreamusingnamespacestd;voidmain(){inti,n,s;s=1;i=1;coutinputn:;cinn;while(i=n){s=i*s;++i;}coutsendl;}4、(已验证!)百钱买百鸡。1只公鸡5元,1只母鸡3元,3只小鸡1元,现有100元钱要买100只鸡,有什么解法。分别使用三重循环和二重循环来解.鸡翁,鸡婆,鸡雏各:12、4、84只鸡翁,鸡婆,鸡雏各:8、11、81只鸡翁,鸡婆,鸡雏各:4、18、78只鸡翁,鸡婆,鸡雏各:0、25、75只(1).三重循环:#includeiostreamusingnamespacestd;voidmain(){constintcock=20,hen=33,chicken=100;intc,h,ck;for(c=0;c=cock;c++){for(h=0;h=hen;h++){for(ck=0;ck=chicken;ck++){if(((c+h+ck)==100)&&((c*5+h*3+ck/3)==100)&&((ck%3)==0))cout鸡翁,鸡婆,鸡雏各:c、h、ck只endl;}}}}(2).两重循环:#includeiostreamusingnamespacestd;voidmain(){intc,h,ck;for(h=0;h33;h++)for(ck=0;ck100;ck++){c=100-h-ck;if(5*c+h*3+ck/3==100&&ck%3==0&&h+ck=100)cout鸡翁,鸡婆,鸡雏各:c、h、ck只endl;}}5、(已验证!)求所有水仙花数。所谓水仙花数是指三位数,其各位数立方和等于该数。如153=1*1*1+5*5*5+3*3*3.(153370371407)#includeiostreamusingnamespacestd;voidmain(){inta,b,c,d;for(d=100;d1000;d++){a=d/100;//分解出百位b=d/10%10;//分解出十位c=d%10;//分解出个位if(d==a*a*a+b*b*b+c*c*c){coutd;}}coutendl;}6、(已验证!)解数学灯迷。有以下算式ABCD-CDC=ABC,其中ABCD均为一位非负整数,求ABCD的值。(1098)#includeiostreamusingnamespacestd;voidmain(){inta,b,c,d,e;for(e=1000;e10000;e++){a=e/1000;b=e/100%10;c=e/10%10;d=e%10;if(e-(c*100+d*10+c)==a*100+b*10+c){coute;}}coutendl;}7、(已验证!)从键盘输入一个整数,判断此数是否为回文数。所谓回文数就是从左到右读与从右到左读是一样的数。如12321、7887等。#includeiostreamusingnamespacestd;boolifn(intx){intm=0,n;n=x;while(n){m=m*10+n%10;n=n/10;}if(m==x)returntrue;if(m!=x)returnfalse;}voidmain(){inta;cout输入一个数:;cina;if(ifn(a))couta是回文数!endl;elsecouta不是回文数!endl;}8、(已验证!)使用函数计算y=2*x+3,输入x,求y的值。#includeiostreamusingnamespacestd;floaty(intx){return2*x+3;}voidmain(){intx;cout输入X:;cinx;coutY=y(x)endl;}9、(已验证!)使用递归函数,求99+97+95+...+3+1之和。(和是2500。)#includeiostreamusingnamespacestd;intsum(longn,longm){if(n==m)return(m);elsereturn(m+sum(n,m-2));}voidmain(){intn,m;cout输入范围:(n~m):endl;coutn=;cinn;coutm=;cinm;cout从n到m的和为:sum(n,m)endl;}10、(已验证!)已知杨辉三角111121133114641151010511615201561.输出前13行的值.#includeiostreamusingnamespacestd;voidmain(){inta[11],i,j;a[1]=1;for(i=1;i=13;i++){a[i]=1;for(j=i-1;j=2;j--)a[j]=a[j]+a[j-1];for(j=1;j=i;j++)couta[j];cout\n;}}11、(已验证!)约瑟夫问题:n个小孩围成一圈做游戏,给定一个数m,现从s个小孩开始,顺时计数,每数到m,该小孩出列,然后从下个小孩重新数数,数到m时,该小孩出列,如果反复,直到所以小孩出列。(太复杂不会考的!)#includeiostreamusingnamespacestd;intmain(){intN,M;cout请输入N,Mendl;cinNM;int*a=newint[N];for(inti=0;iN;i++){a[i]=i+1;}intcountN=0;intcountM=0;for(i=0;;i++){if(a[i%N]!=-1){countM++;}if(countM==M){couta[i%N]\t;a[i%N]=-1;countN++;countM=0;}if(countN==N){break;}}deletea;return0;}字符串编程:1、(已验证!)输入一个字符串,反向输出其字符,如输入是abcdef,则反向输出fedcba.(1)、利用string流:#includeiostream#includestringusingnamespacestd;stringrstring(strings){if(s.length()==1)returns;else{charc=s[s.length()-1];returnc+rstring(s.substr(0,s.length()-1));}}voidmain(){stringstr;cout输入一个字符串:endl;cinstr;coutstr的反向字符串是rstring(str)endl;}(2)、数组倒序输出(很简单):#includeiostreamusingnamespacestd;voidmain(){charstr[180];intl;cout输入一个字符串:endl;cinstr;l=strlen(str);coutstr的反向字符串是:;for(inti=l-1;i=0;i--)coutstr[i];coutendl;}2、(已验证!)将输入字符串中所有的'C'去掉,输出其他字符。#includeiostreamusingnamespacestd;voidmain(){charstr[180];intl;cout输入一个字符串:endl;cinstr;l=strlen(str);cout过滤后为:;for(inti=0;il;i++)if(str[i]!='c'&&str[i]!='C')coutstr[i];coutendl;}3、(已验证!)输入字符串,判断此字符串是否为回文,如abcd,正数为abcd,反数为dcba,不是回文,而aba,正数是aba,反数也是aba,是回文。#includeiostreamusingnamespacestd;voidmain(){charstr[180],l;inti,t=0;cout输入一个字符串:;cinstr;l=strlen(str);for(i=0;il/2;i++)if(str[i]==str[l-i-1]){t=1;break;}if(t==0)coutstr不是回文!endl;elsecoutstr是回文!endl;}
本文标题:C++经典编程练习题
链接地址:https://www.777doc.com/doc-4347584 .html