《C++经典编程练习题.docx》由会员分享,可在线阅读,更多相关《C++经典编程练习题.docx(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上C+经典编程例题(1)1、(已验证!)计算铁路运费。已知从甲地到乙地,每张票托运行李不超过50公斤时,按每公斤0.13元,超过50公斤,超过部分按每公斤0.2元计算。输入行李重量w,计算运费y.#include using namespace std;void main()float money=0,weight;coutweight;if (weight0)cout”数据错误!”endl;if (weight 50)money = 50 * 0.13 + (weight - 50) * 0.2;coutn总费用是:moneyendl;2、(已验证!)根据一元二次方程
2、a*x*x+b*x+c=0求解方程。输入a、b、c的值,求x1、x2的实根.#include #include using namespace std;void main()double a,b,c,p,x1,x2,D;cout请输入3个数:endl;couta;coutb;coutc;cout方程为:ax2+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=x10)p=-b/(2*a);x1=p+sqrt(D)/(2*a
3、);x2=p-sqrt(D)/(2*a);cout方程有两个不同的实根。endl;coutx1=x1endlx2=x2endl;3、(已验证!)分别使用for和while求n!.注解n!=1*2*3*.*n,n由键盘输入。For:#include using namespace std;void main()int i,n,s;s=1;coutn;for (i=1;i=n;i+)s=i*s;coutsendl;While:#include using namespace std;void main()int i,n,s;s=1;i=1;coutn;while(i=n)s=i*s;+i;cout
4、sendl;4、(已验证!)百钱买百鸡。1只公鸡5元,1只母鸡3元,3只小鸡1元,现有100元钱要买100只鸡,有什么解法。分别使用三重循环和二重循环来解.鸡翁,鸡婆,鸡雏各:12、4、84只鸡翁,鸡婆,鸡雏各:8、11、81只鸡翁,鸡婆,鸡雏各:4、18、78只鸡翁,鸡婆,鸡雏各:0、25、75只(1).三重循环:#include using namespace std;void main()const int cock=20,hen=33,chicken=100;int c,h,ck;for(c=0;c=cock;c+)for(h=0;h=hen;h+)for(ck=0;ck=chicke
5、n;ck+)if(c+h+ck)=100)&(c*5+h*3+ck/3)=100)&(ck%3)=0)cout鸡翁,鸡婆,鸡雏各:c、h、ck只endl;(2).两重循环:#includeusing namespace std;void main()int c,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
6、*5*5+3*3*3.(153 370 371 407)#include using namespace std;void main()int a,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)#include using namespace std;void main()int a,b,c,d,e;f
7、or (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等。#include using namespace std;bool ifn(int x)int m=0,n;n=x;while(n)m=m*10+n%10;n=n/10; if(m=x)return true;if(m!=x)return false;v
8、oid main( )int a;couta;if(ifn(a)couta是回文数!endl;elsecouta不是回文数!endl;8、(已验证!)使用函数计算y=2*x+3,输入x,求y的值。#include using namespace std;float y(int x)return 2*x+3;void main()int x;coutx;coutY=y(x)endl;9、(已验证!)使用递归函数,求99+97+95+.+3+1之和。(和是2500。)#include using namespace std;int sum(long n,long m)if(n=m)return(m
9、);elsereturn(m+sum(n,m-2);void main()int n,m;cout输入范围:(nm):endl;coutn;coutm;cout从n到m的和为:sum(n,m)endl;10、(已验证!)已知杨辉三角1111211331146411510 10 511615 20 15 61.输出前13行的值.#include using namespace std;void main()int a11,i,j;a1=1;for(i=1;i=2;j-)aj=aj+aj-1;for(j=1;j=i;j+)coutaj ;coutn;11、(已验证!)约瑟夫问题:n个小孩围成一圈做
10、游戏,给定一个数m,现从s个小孩开始,顺时计数,每数到m,该小孩出列,然后从下个小孩重新数数,数到m时,该小孩出列,如果反复,直到所以小孩出列。(太复杂不会考的!)#includeusing namespace std;int main()int N,M;cout请输入N,MNM;int *a=new intN;for(int i=0;iN;i+)ai=i+1;int countN=0;int countM=0;for(i=0;i+)if(ai%N!=-1)countM+;if(countM=M)coutai%Nt;ai%N=-1;countN+;countM=0;if(countN=N)br
11、eak;delete a;return 0;字符串编程:1、(已验证!)输入一个字符串,反向输出其字符,如输入是abcdef,则反向输出fedcba.(1)、利用string流:#include#include using namespace std;string rstring(string s)if(s.length()=1)return s;elsechar c=ss.length()-1;return c+rstring(s.substr(0,s.length()-1);void main()string str;cout输入一个字符串:str;coutstr的反向字符串是rstrin
12、g(str)endl;(2)、数组倒序输出(很简单):#includeusing namespace std;void main()char str180;int l;cout输入一个字符串:str;l=strlen(str);coutstr=0;i-)coutstri;coutendl;2、(已验证!)将输入字符串中所有的C去掉,输出其他字符。#includeusing namespace std;void main()char str180;int l;cout输入一个字符串:str;l=strlen(str);cout过滤后为:;for (int i=0;il;i+)if (stri!=c & stri!=C)coutstri;coutendl;3、(已验证!)输入字符串,判断此字符串是否为回文,如abcd,正数为abcd,反数为dcba,不是回文,而aba,正数是aba,反数也是aba,是回文。#include using namespace std;void main( )char str180,l;int i,t=0;coutstr;l=strlen(str);for(i=0;il/2;i+)if(stri=strl-i-1)t=1;break;if(t=0)coutstr不是回文!endl;elsecoutstr是回文!endl;专心-专注-专业