第三章作业(第四周)上

来源:互联网 发布:网购网络诈骗 编辑:程序博客网 时间:2024/04/28 06:11

实验作业

1.完成课本每一个编程题。要求先画出流程算法图或N-S图,然后编程实现,有可能的话使用两种以上方法;

2.编程求“百钱百鸡”问题。(鸡翁一值钱五,鸡母 一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?)

3.编程输入一个整数,计算它是几位数字,分别输出每一位数字,并输出各个数位上数字之和。

4.在一个平面上,有四个圆柱形塔,塔底圆心坐标分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),塔半径为1,塔高为10米,塔外无建筑物。编程,输入任一个点平面坐标,求该点建筑物的高度。

5.编程计算s=1!+2!+3!+......n!(其中n为整数,n!表示计算n阶乘),要求使用两种以上的方法。

答:

1、

(01)顺序结构程序举例


#include<iostream>using namespace std;int main(){int a,b,result;cout<<"please input two numbers:";cin>>a;cin>>b;result=3*a-2*b+1;cout<<"the result  is:"<<result<<endl;return 0;}

(02)

#include<iostream>#include<cmath>using namespace std;int main(){double a,b,c,x1,x2,disc,p,q;cout<<"请输入方程三个系数a,b,c 的值:";cin>>a>>b>>c;disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;cout<<"方程的根为:"<<x1<<'\t'<<endl;return 0;}

(03)习题4

#include<iostream>#include<iomanip>using namespace std;int main(){int n,p=1;double q,e=1;do{q=1;n=1;for(n=1;n<=p;n++){q*=n;}e=e+1/q;p++;}while(1/q>=0.000001);cout<<"e="<<setprecision(8)<<e<<endl;return 0;}


(04)习题5

#include<iostream>#include<iomanip>using namespace std;int main(){double n=1,s=1,pi;do{if(n<0)n=(-1)*n+2;elsen=(-1)*(n+2);s=s+1/n;}while(n<=100000000&&n>=-100000000);pi=s*4;cout<<"圆周率π="<<setprecision(10)<<pi<<endl;return 0;}

(05)


(06)习题8

#include<iostream>#include<iomanip>using namespace std;int main(){cout<<setfill(' ')<<setw(12)<<"*"<<endl<<setw(14)<<"* * *"<<endl<<setw(16)<<"* * * * *"<<endl<<setw(18)<<"* * * * * * *"<<endl<<setw(16)<<"* * * * *"<<endl<<setw(14)<<"* * *"<<endl<<setw(12)<<"*"<<endl;return 0;}


(07)习题9

#include<iostream>using namespace std;int main(){int n=0,s=0;do{n++;s=s+n*n;}while(s<=1000);n=n-1;cout<<"满足题目条件的最大的n值为:"<<n<<endl;return 0;}



2、百鸡问题

#include<iostream>using namespace std;int main(){int x,y,z,n=1;for(x=0;x<=20;x++){for(y=0;y<=33;y++){z=100-x-y;if(x*5+y*3+z/3.0==100){cout<<"第"<<n<<"种方案:"<<"鸡翁"<<x<<"只  "<<"鸡母"<<y<<"只  "<<"鸡雏"<<z<<"只"<<endl;n++;}};};return 0;}

3、数位问题

#include<iostream>using namespace std;int main(){long int numb,a=0,n,t,m,u,s=0;cout<<"请输入一个整数:";cin>>numb;for(n=numb;n>=1;a++){n=n/10;}cout<<"您输入的数是一个"<<a<<"位数"<<endl<<"您输入的数由低位到高位的各个数为:";m=numb;while(m>1){t=m%10;a=a-1;if(a==0)break;cout<<t<<"、";m=m/10;u=t;s=s+u;};s=s+m;cout<<m<<endl<<"您输入的数各个数位上数字之和为:"<<s<<endl;return 0;}

4、求建筑物高度

#include<iostream>#include<math.h>using namespace std;int main(){float x,y;cout<<"请输入横坐标:";cin>>x;cout<<"请输入纵坐标:";cin>>y;cout<<"您输入的坐标为:("<<x<<","<<y<<")"<<'\n';x=fabs(x);y=fabs(y);if((x-2)*(x-2)+(y-2)*(y-2)<=1)cout<<"该建筑物高度为10米!"<<endl;elsecout<<"该建筑物高度为0米!"<<endl;return 0;}


5、求s=1!+2!+3!+......n!(其中n为整数,n!表示计算n阶乘)

方法1

#include<iostream>using namespace std;int main(){int n,p,q,s=0;cout<<"请输入n的值:";cin>>n;q=n;p=n;for(;p>=1;p--){n=p;q=p;for(n=n-1;n>=1;n--){q=q*n;}s=s+q;}cout<<"计算结果:s=1!+2!+3!+......+n!="<<s<<endl;return 0;}


方法2

#include<iostream>using namespace std;int main(){long int n,s=0,q,p=1;cout<<"请输入n:";cin>>n;q=n;if(n==1)cout<<"计算结果:s=1!+2!+3!+......+n!="<<n<<endl;else{do{n=q;p=1;do{p=p*n;n=n-1;}while(n>0);s=s+p;q=q-1;}while(q>1);s=s+1;cout<<"计算结果:s=1!+2!+3!+......+n!="<<s<<endl;}return 0;}





0 0