C++总复习 四编程答案.docx

上传人:b****8 文档编号:9483430 上传时间:2023-02-04 格式:DOCX 页数:26 大小:21.30KB
下载 相关 举报
C++总复习 四编程答案.docx_第1页
第1页 / 共26页
C++总复习 四编程答案.docx_第2页
第2页 / 共26页
C++总复习 四编程答案.docx_第3页
第3页 / 共26页
C++总复习 四编程答案.docx_第4页
第4页 / 共26页
C++总复习 四编程答案.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

C++总复习 四编程答案.docx

《C++总复习 四编程答案.docx》由会员分享,可在线阅读,更多相关《C++总复习 四编程答案.docx(26页珍藏版)》请在冰豆网上搜索。

C++总复习 四编程答案.docx

C++总复习四编程答案

四、编程

红色部分为程序的优化,程序的优化也是占分的。

绿色字是注释,考试时一般不写。

1.eg.3.6

#include

#include//使用数学函数时要包含头文件crnath

#include//使用I/O流控制符要包含头文件iomamp

usingnamespacestd;

intmain()

{

doublea,b,c;

cout<<"pleaseentera,b,c";

cin>a>>b>>C;

if(a+b>c&&b+c>a&&c+a>b)

{//复合语句开始

doubles,area;//在复合语句内定义坐量

s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

cout<

:

fixed)<

cout<<”area="<

}//复合语句结束

elsecout<<”itisnotatrilateral!

”<

return0;

}

2.eg.3.7

#include

usingnamespacestd;

intmain()

{

charch;

cin>>ch;

ch=(ch>='A'&&ch<='Z')?

(ch+32):

ch;//判别ch是否大写字母,是则转换

cout<

return0;

}

3.

法一:

eg.3.10while语句

#include

usingnamespacestd;

intmain()

{

inti=1,sum=0;

while(i<=100)

{sum=sum+i;

i++;

}

cout<<"sum="<

}

法二:

eg.3.11do-while语句

#include

usingnamespacestd;

intmain()

{

inti=1,sum=0;

do

{sum=sum+i;

i++;

}while(i<=100);

cout<<"sum="<

return0;

}

法三:

P76for语句

#include

usingnamespacestd;

intmain()

{

inti,sum=0;

for(i=1;i<=100;i++)

sum=sum+i;

cout<<"sum="<

return0;

}

4.eg.3.12

#include

#include

#include

usingnamespacestd;

intmain()

{ints=1;

doublen=1,t=1,pi=0;

while((fabs(t))>1e-7)//fabs()与abs()都是绝对值的意思

{pi=pi+t;

n=n+2;

s=-s;

t=s/n;

}

pi=pi*4;

cout<<"pi="<

return0;

}

5.eg.3.13

#include

#include

usingnamespacestd;

intmain()

{longf1,f2;

inti;

f1=f2=1;

for(i=1;i<=20;i++)

{cout<

if(i%2==0)cout<

f1=f1+f2;//左边的f1代表第3个数,是第1.2个数之和

f2=f2+f1;//左边的f2代表第4个数,是第2.3个数之和

}

return0;

}

6.eg.3.14

#include

#include

#include

usingnamespacestd;

intmain()

{intm,k,i,n=0;

boolprime;//定义布尔变量prime

for(m=101;m<=200;m=m+2)//判别m是否为素数,m由101变化到200,增量为2

{prime=true;//循环开始时设prime为真,即先认为m为素数

k=int(sqrt(m));//用k代表根号m的整数部分

for(i=2;i<=k;i++)//此循环作用是将m被2~根号m除,检查是否能整除

if(m%i==0)//如果能整除,表示m不是素数

{prime=false;//使prime变为假

break;//终止执行本循环

}

if(prime)//如果m为素数

{cout<

n=n+1;//n用来累计输出素数的个数

}

if(n%10==0)cout<

}

cout<

return0;

}

7.3-2

#include

#include

usingnamespacestd;

intmain()

{floath,r,l,s,sq,vq,vz;

constfloatpi=3.1415926;

cout<<"pleaseenterr,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;

cout<

:

fixed)<

:

right)

<

(2);

cout<<"l="<

cout<<"s="<

cout<<"sq="<

cout<<"vq="<

cout<<"vz="<

return0;

}

8.3-3

#include

usingnamespacestd;

intmain()

{floatc,f;

cout<<"请输入一个华氏温度:

";

cin>>f;

c=(5.0/9.0)*(f-32);//注意5和9要用实型表示,否则5/9值为0

cout<<"摄氏温度为:

"<

return0;

}

9.3-11

#include

usingnamespacestd;

intmain()

{floatscore;

chargrade;

cout<<"pleaseenterscoreofstudent:

";

cin>>score;

while(score>100||score<0)

{cout<<"dataerror,enterdataagain.";

cin>>score;

}

switch(int(score/10))

{case10:

case9:

grade='A';break;

case8:

grade='B';break;

case7:

grade='C';break;

case6:

grade='D';break;

default:

grade='E';

}

cout<<"scoreis"<

return0;

}

10.

#include

usingnamespacestd;

intmain()

{

floatPRICE;

cout<<"pleaseenterpriceofbook:

";

cin>>PRICE;

if(PRICE>50)

cout<<"expensive"<

elseif(PRICE>=20)

cout<<"normal"<

elsecout<<"inexpensive"<

return0;

}

11.类似3-10

#include

usingnamespacestd;

intmain()

{intx,y;

cout<<"enterx:

";

cin>>x;

if(x<=10)

{y=4*x;

cout<<"x="<

}

elseif(x<=20)//10<x≤20

{y=x*(x-1);

cout<<"x="<

}

else//x>20

{y=x+20;

cout<<"x="<

}

cout<

return0;

}

12.试卷第二题第8小题

#include

#include

usingnamespacestd;

voidmain()

{

floata,b,c,t;

cout<<"pleaseentera,b,c:

"<

cin>>a>>b>>c;

if(a

{t=a;a=b;b=t;}

if(a

{t=a;a=c;c=t;}

if(b

{t=b;b=c;c=t;}

cout<

}

13.3-15

#include

usingnamespacestd;

intmain()

{intp,r,n,m,temp;

cout<<"pleaseentertwopositiveintegernumbersn,m:

";

cin>>n>>m;

if(n

{temp=n;

n=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="<

cout<<"LCD="<

return0;

}

14.3-18

#include

usingnamespacestd;

intmain()

{floats=0,t=1;

intn;

for(n=1;n<=20;n++)

{

t=t*n;//求n!

s=s+t;//将各项累加

}

cout<<"1!

+2!

+...+20!

="<

return0;

}

15.3-19、第三题第二小题

#include

usingnamespacestd;

intmain()

{inti,j,k,n;

cout<<"narcissusnumbersare:

"<

for(n=100;n<1000;n++)

{i=n/100;

j=n/10-i*10;

k=n%10;

if(n==i*i*i+j*j*j+k*k*k)

cout<

}

cout<

return0;

}

16.3-20

法一:

#include

usingnamespacestd;

intmain()

{constintm=1000;//定义寻找范围

intk1,k2,k3,k4,k5,k6,k7,k8,k9,k10;

inti,a,n,s;

for(a=2;a<=m;a++)//a是2~1000之间的整数,检查它是否为完数

{n=0;//n用来累计a的因子的个数

s=a;//s用来存放尚未求出的因子之和,开始时等于a

for(i=1;i

if(a%i==0)//如果i是a的因子

{n++;//n加1,表示新找到一个因子

s=s-i;//s减去已找到的因子,s的新值是尚未求出的因子之和

switch(n)//将找到的因子赋给k1,...,k10

{case1:

k1=i;break;//找出的笫1个因子赋给k1

case2:

k2=i;break;//找出的笫2个因子赋给k2

case3:

k3=i;break;//找出的笫3个因子赋给k3

case4:

k4=i;break;//找出的笫4个因子赋给k4

case5:

k5=i;break;//找出的笫5个因子赋给k5

case6:

k6=i;break;//找出的笫6个因子赋给k6

case7:

k7=i;break;//找出的笫7个因子赋给k7

case8:

k8=i;break;//找出的笫8个因子赋给k8

case9:

k9=i;break;//找出的笫9个因子赋给k9

case10:

k10=i;break;//找出的笫10个因子赋给k10

}

}

if(s==0)//s=0表示全部因子都已找到了

{cout<

cout<<"itsfactorsare:

";

if(n>1)cout<1表示a至少有2个因子

if(n>2)cout<<","<2表示至少有3个因子,故应再输出一个因子

if(n>3)cout<<","<3表示至少有4个因子,故应再输出一个因子

if(n>4)cout<<","<

if(n>5)cout<<","<

if(n>6)cout<<","<

if(n>7)cout<<","<

if(n>8)cout<<","<

if(n>9)cout<<","<

cout<

}

}

return0;

}

法二

#include

usingnamespacestd;

intmain()

{intm,s,i;

for(m=2;m<1000;m++)

{s=0;

for(i=1;i

if((m%i)==0)s=s+i;

if(s==m)

{cout<

cout<<"itsfactorsare:

";

for(i=1;i

if(m%i==0)cout<

cout<

}

}

return0;

}

法三

#include

usingnamespacestd;

intmain()

{intk[11];

inti,a,n,s;

for(a=2;a<=1000;a++)

{n=0;

s=a;

for(i=1;i

if((a%i)==0)

{n++;

s=s-i;

k[n]=i;//将找到的因子赋给k[1]┅k[10]

}

if(s==0)

{cout<

cout<<"itsfactorsare:

";

for(i=1;i

cout<

cout<

}

}

return0;

}

17.3-22

#include

usingnamespacestd;

intmain()

{intday,x1,x2;

day=9;

x2=1;

while(day>0)

{x1=(x2+1)*2;//第1天的桃子数是第2天桃子数加1后的2倍

x2=x1;

day--;

}

cout<<"total="<

return0;

}

18.3-23

#include

#include

usingnamespacestd;

intmain()

{floata,x0,x1;

cout<<"enterapositivenumber:

";

cin>>a;//输入a的值

x0=a/2;

x1=(x0+a/x0)/2;

do

{x0=x1;

x1=(x0+a/x0)/2;

}

while(fabs(x0-x1)>=1e-5);

cout<<"Thesquarerootof"<

return0;

}

19.4-1

#include

usingnamespacestd;

intmain()

{inthcf(int,int);

intlcd(int,int,int);

intu,v,h,l;

cin>>u>>v;

h=hcf(u,v);

cout<<"H.C.F="<

l=lcd(u,v,h);

cout<<"L.C.D="<

return0;

}

inthcf(intu,intv)

{intt,r;

if(v>u)

{t=u;u=v;v=t;}

while((r=u%v)!

=0)

{u=v;

v=r;}

return(v);

}

intlcd(intu,intv,inth)

{return(u*v/h);

}

20.4-2

#include

#include

usingnamespacestd;

floatx1,x2,disc,p,q;

intmain()

{voidgreater_than_zero(float,float);

voidequal_to_zero(float,float);

voidsmaller_than_zero(float,float);

floata,b,c;

cout<<"inputa,b,c:

";

cin>>a>>b>>c;

disc=b*b-4*a*c;

cout<<"root:

"<

if(disc>0)

{

greater_than_zero(a,b);

cout<<"x1="<

}

elseif(disc==0)

{equal_to_zero(a,b);

cout<<"x1="<

}

else

{smaller_than_zero(a,b);

cout<<"x1="<

cout<<"x2="<

}

return0;

}

voidgreater_than_zero(floata,floatb)/*定义一个函数,用来求disc>0时方程的根*/

{x1=(-b+sqrt(disc))/(2*a);

x2=(-b-sqrt(disc))/(2*a);

}

voidequal_to_zero(floata,floatb)/*定义一个函数,用来求disc=0时方程的根*/

{

x1=x2=(-b)/(2*a);

}

voidsmaller_than_zero(floata,floatb)/*定义一个函数,用来求disc<0时方程的根*/

{

p=-b/(2*a);

q=sqrt(-disc)/(2*a);

}

21.4-3

#include

usingnamespacestd;

intmain()

{intprime(int);/*函数原型声明*/

intn;

cout<<"inputaninteger:

";

cin>>n;

if(prime(n))

cout<

else

cout<

return0;

}

intprime(intn)

{intflag=1,i;

for(i=2;i

if(n%i==0)

flag=0;

return(flag);

}

22.4-4

#include

usingnamespacestd;

intmain()

{intfac(int);

inta,b,c,sum=0;

cout<<"entera,b,c:

";

cin>>a>>b>>c;

sum=sum+fac(a)+fac(b)+fac(c);

cout<

+"<

+"<

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 其它语言学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1