《C++程序设计题解与上机指导_习题程序.pdf》由会员分享,可在线阅读,更多相关《C++程序设计题解与上机指导_习题程序.pdf(128页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C+程序设计题解与上机指导习题程序习 题 iXtl-5#include using namespace std;int main()(coutThisMnisn;cout,a ,C+n;coutHprogram.;return 0;Xtl-6#include using namespace std;int main()(int a,b,c;a=10;b=23;c=a+b;coutHa+b=H;coutc;coutendl;return 0;)Xtl-7#include using namespace std;int main()(int a,b,c;int f(int x,int y,int
2、z);c in a b c;c=f(a,b,c);coutcendl;return 0;)int f(int x,int y,int z)(int m;if(xy)m=x;else m=y;if(zm)m=z;retum(m);Xtl-8#include using namespace std;int main()(int a,b,c;cin a b;c=a+b;couta+b=Ha+bendl;return 0;Xtl-9#include using namespace std;int main()(int a,b,c;int add(int x,int y);cin a b;c=add(a
3、,b);coutHa+b=M c e n d l;return 0;)int add(int x,int y)int z;z=x+y;retum(z);习 题 二Xt2-3#include using namespace std;ini main()char c I=a,c2=,b,c3=cc4=10 r,c5=116;coutc I c 2 c 3 n,;cout,tb c4,t*c5*n;return 0;)Xt2-4#include using namespace std;int main()charcl=C,c2=+,c3=+,;coutnI say:“vvckvc2vc3*V;cou
4、tnttHHe says:C+is very interesting!H,n*;return 0;Xt2-7#include using namespace std;int main()int i,j,m,n;i=8;j=10;m=+i+j+;n=(+i)+(+4j)+m;c o u t i t,j,t,m t,n en d l;return 0;)Xt2-8#include using namespace std;int main()char cl=C,c2=h;c3=*i,c4=n,c5=a;cl+=4;c2+=4;c3+=4;c4+=4;c5+=4;coutpass word is:cl
5、 c 2 c 3 c 4 c 5 e ndl;return 0;习 题 三Xt3-2#include#include using namespace std;int main()float h,r,l,s,sq,vq,vz;const float pi=3.1415926;coutHplease enter r,h:;cin r h;l=2*pi*r;s=r*r*pi;sq=4*pi*r*r;vq=3.0/4.0*pi*r*r*r;vz=pi*r*r*h;coutsetiosflags(ios:fixed)setiosflags(ios:right)setprecision(2);coutl=
6、nsetw(10)lendl;coutHs=nsetw(10)sendl;cout sq=nsetw(10)sqendl;cout nvq=nsetw(10)v q e ndl;cout,vz=,setw(10)vzendl;return 0;Xt3-3#include using namespace std;int main()float c,f;coutvv”请输入一个华氏温度:cinf;c=(5.0/9.0)*(f-32);注意5 和 9 要用实型表示,否则5/9值为0coutcv”摄氏温度为:n c en d l;return 0;);Xt3-4#include using names
7、pace std;int main()char cl,c2;coutvv”请输入两个字符cl,c2:H;cl=getchar();将输入的第一个字符赋给clc2=getchar();将输入的第二个字符赋给c2coutvv”用 putchar函数输出结果为:;putchar(cl);putchar(c2);coutendl;coutv”用 cout语句输出结果为:;coutc 1 c2endl;return 0;Xt3-4-l#include using namespace std;int main()char cl,c2;coutvv”请输入两个字符cl,c2:;cl=getchar();将输
8、入的第一个字符赋给clc2=getchar();将输入的第二个字符赋给c2coutcv”用 putchar函数输出结果为:;putchar(cl);putchar(44);putchar(c2);coutendl;coutv”用 cout语句输出结果为:;coutc 1 H,nc2endl;return 0;Xt3-5#include using namespace std;int main()char cl,c2;intil,i2;定义为整型cout”请输入两个整数il,i2:“;cin il i2;cl=il;c2=i2;cout”按字符输出结果为:vclvv,vvc2vendl;retu
9、rn 0;)Xt3-8#include using namespace std;int main()int a=3,b=4,c=5,x,y;cout(a+bc&b=c)endl;cout(allb+c&b-c)endl;cout(!(ab)&!clll)endl;cout(!(x=a)&(y=b)&0)endl;cout(!(a+b)+c-l&b+c/2)endl;return 0;Xt3-9-l#include using namespace std;int main()int a,b,c;coutnplease enter three integer numbers:1;c in a b
10、c;if(ab)if(bc)coutHmax=n c;elsecout,max=,b;else if(ac)coutmax=,c;elsecout,max=,a;coutendl;return 0;)Xt3-9-2#include using namespace std;int main()int a,b,c,temp,max;coutplease enter three integer numbers:1;c in a b c;temp=(ab)?a:b;/*将 a 和 b 中的大者存入temp中*/max=(tempc)?temp:c;/*将 a 和 b 中的大者与c 比较,最大者存入ma
11、xcout,max=,m axendl;return 0;Xt3-10#include using namespace std;int main()int x,y;coutenter x:n;cinx;if(xl)y=x;coutx=,x n,y=x=M y;)else if(x 10)/IWxVIOy=2*x-l;cout,x=,x u,y=2*x-l=n y;)elsex210y=3*x-l 1;co u t x=x n,y=3*x-ll=y;coutendl;return 0;Xt3-ll#include using namespace std;int main()float score
12、;char grade;coutplease enter score of student:1;cinscore;while(score 100llscore0)coutndata error,enter data again.;cinscore;)switch(int(score/10)case 10:case 9:grade=Abreak;case 8:grade=,B,;break;case 7:grade=,C,;break;case 6:grade=,D;break;default:grade=TE;)coutscore is n sc o re,grade is Mgradeend
13、l;return 0;)Xt3-12#include using namespace std;int main()long int num;int indiv,ten,hundred,thousand,ten_thousand,place;/*分别代表个位,十位,百位,千位,万位和位数*/coutenter an integer(099999):“;cinnum;if(num9999)place=5;else if(num999)place=4;else if(num99)place=3;else if(num9)place=2;else place=l;coutplace=placeendl
14、;/计算各位数字ten_thousand=num/10000;thousand=(int)(num-ten_thousand*10000)/1000;hundred=(i nt)(num-ten_thousand*10000-thousand*1000)/100;ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);coutHoriginal order:M;switch(place)c
15、ase5:coutten_thousand,thousand,hundred,te n n,nindivendl;coutnreverse order:;coutindivtenhundredthousandten_thousandendl;break;case 4:coutthousand,hundred,te n ,indivendl;coutnreverse order:n;coutindivtenhundredthousandendl;break;case 3:couthundred,te n,indivendl;coutnreverse order:,;coutindivtenhun
16、dredendl;break;case 2:coutten,/,indivendl;coutreverse order:;coutindivtenendl;break;case 1:couti nd i v e ndl;coutnreverse order:;coutindi vendl;break;)return 0;Xt3-13-1#include using namespace std;ini main()long i;i 为利润float bonus,bon 1 ,bon2,bon4,bon6,bonl0;bonl=100000*0.1;bon2=bon 1 +100000*0.075
17、;bon4=bon2+100000*0.05;bon6=bon4+100000*0.03;bon10=bon6+400000*0.015;coutenter i:M;cini;if(i=100000)bonus=i*0.1;elseif(i=200000)bonus=bon l+(i-l 00000)*0.075;else if(i=400000)bonus=bon2+(i-200000)*0.05;elseif(i=600000)bonus=bon4+(i-400000)*0.03;else if(i=1000000)bonus=bon6+(i-600000)*0.015;elsebonus
18、=bon 10+(i-l 000000)*0.01;coutbonus=,bonusendl;return 0;/利润为 万元时的奖金利润为20万元时的奖金利润为40万元时的奖金利润为60万元时的奖金利润为100万元时的奖金利润在10万元以内按10%提成奖金利润 在 10万元至20万时的奖金利润在20万元至40万时的奖金利润在40万元至60万时的奖金利润在60万元至100万时的奖金利润在100万元以上时的奖金Xt3-13-2#include using namespace std;int main()longi;float bonus,bon 1 ,bon2,bon4,bon6,bon 10;
19、int c;bon 1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon 10=bon6+400000*0.015;coutenter i:u;cini;c=i/100000;if(c10)c=10;switch(c)case 0:bonus=i*0.1;break;case 1:bonus=bon 1 +(i-100000)*0.075;break;case 2:case 3:bonus=bon2+(i-200000)*0.05;break;case 4:case 5:bonus
20、=bon4+(i-400000)*0.03;break;case 6:case 7:case 8:case 9:bonus=bon6+(i-600000)*0.015;break;case 10:bonus=bon 10+(i-1000000)*0.01;)cout,bonus=,bonusendl;return 0;Xt3-14#include using namespace std;int main()int t,a,b,c,d;coutHenter four numbers:1;c in a b c d;co u t a=a,b=n b n,c=u c ,d=n d e n d l;if
21、(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(ad)t=a;a=d;d=t;if(bc)t=b;b=c;c=t;if(bd)t=b;b=d;d=t;if(cd)t=c;c=d;d=t;coutthe sorted sequence:endl;c o u t a H,c H,dendl;return 0;)Xt3-15#include using namespace std;int main()int p,r,n,m,temp;coutplease enter two positive integer numbers n,m:;cinnm;if(nm)temp=n;n
22、=m;m=temp;把大数放在n 中,小数放在m 中)p=n*m;先将n 和 m 的乘积保存在p 中,以便求最小公倍数时用while(m!=0)求n 和 m 的最大公约数r=n%m;n=m;m=r;)cout,HCF=,n en d l;coutLCD=np/nendl;/p 是原来两个整数的乘积return 0;Xt3-16#include using namespace std;int main()char c;int Ietters=0,space=0,digit=0,other=0;coutenter one line:vvendl;while(c=getchar()!=n)if(c=
23、a&cv士 zllc A&c=Z)letters+;else if(c=*)space+;else if(oO1&c=9)digit+;elseother+;)coutnletter:,le tte rs,space:n sp a c e n,digit:,d ig it,other:Hotherendl;return 0;)Xt3-17#include using namespace std;int main()int a,n,i=l,sn=O,tn=O;couta,n=:M;cin a n;while(i=n)tn=tn+a;赋值后的tn 为 i 个 a 组成数的值sn=sn+tn;赋值后
24、的sn 为多项式前i 项之和a=a*10;+i;)couta+aa+aaa+.=Hsnendl;return 0;Xt3-18#include using namespace std;int main()float s=0,t=l;int n;for(n=l;n=20;n+)t=t*n;求 n!s=s+t;/将各项累加coutH 1 !+2!+.+20!=sendl;return 0;Xt3-19#include using namespace std;int main()inti,j,k,n;coutnarcissus numbers are:nendl;for(n=100;n1000;n+
25、)i=n/100;j=n/10-i*10;k=n%10;if(n=i*i*i+j*j*j+k*k*k)co u t n coutendl;return 0;)Xt3-2O-1#include using namespace std;int main()const int m=1000;/定义寻找范围int kl,k2,k3,k4,k5,k6,k7,k8,k9,kl0;int i,a,n,s;for(a=2;a=m;a+)n=0;2 是 21000之间的整数,检查它是否为完数1 1用来累计a 的因子的个数s=a;s 用来存放尚未求出的因子之和,开始时等于afor(i=l;il)coutk l u
26、,k2;/nl 表示 a 至少有 2 个因子if(n2)coutH,nk3;/n2表示至少有3 个因子,故应再输出一个因子if(n3)coutn,nk4;/n3表示至少有4 个因子,故应再输出一个因子if(n4)coutH,nk5;/以下类似if(n5)coutn,nk6;if(n6)coutn,nk7;if(n7)cout8)coutV k9;if(n9)coutn;klO;coutendlendl;)return 0;)Xt3-20-2#include using namespace std;int main()int m,s,i;for(m=2;m1000;m4-+)s=0;for(i=
27、l;im;i-H-)if(m%i)=0)s=s+i;if(s=m)coutm is a 完数”vendl;coutHits factors are:;for(i=l;im;i+)if(m%i=0)c o u t iH M;coutendl;)return 0;Xt3-20-3#include using namespace std;int main()intkll;int i,a,n,s;for(a=2;a=l 000;a+)n=0;s=a;for(i=l;ia;i+)if(a%i)=0)n+;s=s-i;kn=i;/将找到的因子赋给)if(s=0)co u t an is a 完数”vven
28、dl;cout*its factors are:;for(i=l;in;i+)coutkin,r;coutknendl;)return 0;)Xt3-21#include using namespace std;int main()int i,t,n=20;double a=2,b=l,s=0;for(i=l;i=n;i+)s=s+a/b;t=a;a=a+b;/将前一项分子与分母之和作为下一项的分子b=t;/将前一项的分子作为下一项的分母)coutsum=sendl;return 0;Xt3-22#include using namespace std;int main()int day,xl
29、,x2;day=9;x2=l;while(day0)xl=(x2+l)*2;/第 1 天的桃子数是第2 天桃子数加1后的2 倍x2=x1;day;)cout,total=,x lendl;return 0;Xt3-23#include#include using namespace std;int main()float a,x0,xl;coutnenter a positive number:1;cina;/输入a 的值x0=a/2;x 1=(x0+a/x0)/2;dox0=xl;xl=(x0+a/x0)/2;)while(fabs(xO-x 1)=le-5);coutThe square
30、root of a n is”vvx Ivvendl;return 0;)Xt3-24#include using namespace std;int main()int i,k;for(i=0;i=3;i+)/输出上面 4 行*号for(k=0;k=2*i;k+)cout,*n;/输出*号coutendl;输出完一行*号后换行)for(i=0;i=2;i+)/输出下面 3 行*号for(k=0;k=4-2*i;k+)cout*;输出*号coutendl;/输出完一行*号后换行)return 0;Xt3-25#include using namespace std;int main()char
31、 i,j,k;/*i 是 a 的对手;j 是 b 的对手;k 是 c 的对手*/for(i=,X,;i=Z,;i+)for(j=X;j=Z;j+)if(i!=j)for(k=,X;k=Z;k+)if(i!=k&j!=k)if(i!士 X&k!=X&k!=,Z,)cout,A-,i M B-M j,C-H k en d l;return 0;)习 题 皿Xt4-1#include using namespace std;int main()int hcf(int,int);int lcd(int,int,int);int u,v,h,l;cinuv;h=hcf(u,v);coutnH.C.F=h
32、endl;l=lcd(u,v,h);coutL.C.D=lendl;return 0;int hcf(int ujnt v)int t,r;if(vu)t=u;u=v;v=t;while(r=u%v)!=0)u=v;v=r;return(v);)int lcd(int u,int vjnt h)retum(u*v/h);)Xt4-2#include#include using namespace std;float xl,x2,disc,p,q;int main()void greater_than_zero(float,float);void eq ual_to_zero(fl oat,fl
33、 oat);void smaller_than_zero(float,float);float a,b,c;coutHinput a,b,c:;c in a b c;disc=b*b-4*a*c;coutnroot:nendl;if(disoO)(greater_than_zero(a,b);cout,xl=,x l,x 2=,x2endl;)else if(disc=0)equal_to_zero(a,b);coutxl=n x 1 0 时方程的根*/x l=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);)void equal_to_zero(fl
34、oat a,float b)/*定义一个函数,用来求 disc=0 时方程的根*/xl=x2=(-b)/(2*a);)void smaller_than_zero(float a,float b)/*定义一个函数,用来求 disc0 时方程的根*/(p=-b/(2*a);q=sqrt(-disc)/(2*a);)Xt4-3#include using namespace std;int main()int prime(int);/*函数原型声明*/int n;coutinput an integer:;cinn;if(prime(n)c o u t n M is a prime.endl;el
35、seco u t n is not a prime.endl;return 0;)int prime(int n)int flag=l,i;for(i=2;in/2&flag=1 ;i+)if(n%i=0)flag=O;retum(flag);Xt4-4#include using namespace std;int main()int fac(int);int a,b,c,sum=O;coutenter a,b,c:H;c in a b c;sum=su m+fac(a)+fac(b)+fac(c);c o u t a 1!+n b n!+c H!=,sum endl;return 0;)i
36、nt fac(int n)int f=l;for(int i=l;i=n;i+)f=f*i;return f;Xt4-5#include#include using namespace std;int main()double e(double);double x,sinh;coutenter x:K;cinx;sinh=(e(x)+e(-x)/2;cout,sinh(x)=sinhendl;return 0;)double e(double x)return exp(x);Xt4-6#include#include using namespace std;int main()double s
37、olut(double,double,double,double);double a,b,c,d;coutHinput a,b,c,d:;c in a b c d;coutHx=Msolut(a,b,c,d)endl;return 0;)double solut(double a,double b,double c,double d)double x=l,x0,f,fl;dox0=x;f=(a*x0+b)*x0+c)*x0+d;fl=(3*a*x0+2*b)*x0+c;x=x0-f7f 1;)while(fabs(x-xO)=le-5);return(x);Xt4-7#include#incl
38、ude using namespace std;int main()void godbaha(int);int n;coutHinput n:M;cinn;godbaha(n);return 0;)void godbaha(int n)int prime(int);int a,b;for(a=3;a=n/2;a=a+2)if(prime(a)b=n-a;if(prime(b)co u t n ,=,a +,bendl;)int prime(int m)int i,k=sqrt(m);for(i=2;ik)return 1;else return 0;Xt4-8#include using na
39、mespace std;int main()int x,n;float p(int,int);cout,input n&x:;cin n x;coutn=,n,x=,xendl;cout,P,n n(x)=,p(n,x)endl;return 0;)float p(int n,int x)if(n=0)return(l);else if(n=l)return(x);elsereturn(2*n-l)*x*p(n-l),x)-(n-l)*p(n-2),x)/n);Xt4-9#include using namespace std;int main()void hanoi(int n,char o
40、ne,char two,char three);int m;coutinput the number of diskes:;cinm;coutHThe steps of moving,m M disks:uendl;hanoiCm/A/BVC*);return 0;)void hanoi(int n,char one,char two,char three)将n 个盘从one座借助two座,移到three座void move(char x,char y);if(n 1)move(one,three);elsehanoi(n-1,one,three,two);move(one,three);ha
41、noi(n-1,two,one,three);)void move(char x,char y)c o u t x,yendl;Xt4-10#include using namespace std;int main()void convert(int n);int number;coutHinput an integer:M;cinnumber;coutHoutput:nendl;if(number0)coutM-n;number=-number;)convert(number);coutendl;return 0;)void convert(int n)int i;char c;if(i=n
42、/10)!=0)convert(i);c=n%10+,0;coutn n c;Xt4-ll#include using namespace std;int main()int f(int);int n,s;coutinput the number n:u;cinn;s=f(n);coutThe result is M s en d l;return 0;)int f(int n)(;if(n=l)return 1;elsereturn(n*n+f(n-1);)Xt4-12#include#include using namespace std;#define S(a,b,c)(a+b+c)/2
43、#define AREA(a,b,c)sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(S(a,b,c)-c)int main()float a,b,c;cout*input a,b,c:M;c in a b c;if(a+bc&a+cb&b+ca)cout,area=,AREA(a,b,c)endl;elsecoutIt is not a triangle!Mendl;return 0;Xt4-14#include using namespace std;/#define LETTER 1int main()char c;cinc;#if LETTERif(c
44、=,a,&c=A*&c=Z)c=c+32;#endifcoutcendl;return 0;Xt4-15#inciude using namespace std;#define CHANGE 1int main()char ch 40;coutinput text:vendl;gets(ch);#if(CHANGE)for(int i=0;i=a&chiA,&chiZr)chi4-=l;else if(chi=z,llchi=Z,)chi-=25;)#endifcoutoutput:endlchendl;return 0;Xt4-16filel#include using namespace
45、std;int a;int main()extern int power(int);int b=3,c,d,m;coutenter an integer a and its power m:uendl;cinam;c=a*b;c o u t a,*,b ,=,c en d l;d=power(m);c o u t a,*m,=,d en d l;return 0;Xt4-16file2extern int a;int power(int n)int i,y=l;fbr(i=l;i=n;i+)y*=a;return y;习 题 五Xt5-1#include#include using names
46、pace std;#include int main()int i,j,n,a101;for(i=l;i=100;i+)ai=i;al=0;for(i=2;isqrt(l 00);i+)for(j=i+l;j=100;j+)if(ai!=0&a|j!=0)if(aj%ai=0)aj=O;coutendl;for(i=l,n=0;i=100;i+)if(ai!=0)coutsetw(5)aiM u;n+;if(n=10)coutendl;n=0;coutendl;return 0;Xt5-2#include using namespace std;/#include int main()int
47、i j,min,temp,all;coutenter data:endl;for(i=l;i=10;i+)coutvva vvi”二 ;cinaij;输入10个数coutendlThe original numbers:vvendl;for(i=l;i=10;i+4-)coutaincoutendl;for(i=l;i=9;i+)/输出这10个数以下8 行是对10个数排序min=i;for(j=i+l;jaj)min=j;temp=ai;ai=amin;amin=temp;以下3 行将ai+la10中最小者与ai对换coutendlThe sorted numbers:nendl;for(i=
48、l;i=10;i+)/输出已排好序的10个数coutaiH M;coutendl;return 0;Xt5-3#include using namespace std;int main()int a33,sum=0;inti,j;coutnenter data:Mendl;for(i=0;i3;i+)for(j=0;j3;j+)cinaij;for(i=0;i3;i+)sum=sum+aii;cout,sum=,sum endl;return 0;Xt5-4#include using namespace std;int main()intall=1,4,6,9,13,16,19,28,40,
49、100);int num,ij;coutnarray a:endl;for(i=0;ia9)a101=num;elsefor(i=0;inum)for(j=9;j=i;j-)aj+l=aj;ai=num;break;coutnNow,array a:endl;for(i=0;ill;i+)coutaicoutendl;return 0;Xt5-5#include using namespace std;int main()const int n=5;int an,i,temp;cout,enter array a:endl;for(i=0;in;i+)cinai;coutnarray a:ne
50、ndl;for(i=0;in;i+)coutain n;for(i=0;in/2;i+)循环的作用是将对称的元素的值互换 temp=ai;ai=an-i-l;an-i-l=temp;coutendl Now,array a:endl;fbr(i=0;in;i+)coutaincoutendl;return 0;Xt5-6#include#include using namespace std;int main()const int n=I 1;inti,j,ann;fbr(i=l;in;i+)aii=l;ail=l;)for(i=3;in;i+)for(j=2;j=i-l;j+)aiU=ai-