第三章作业(第四周)上
2014-03-30 10:08
190 查看
实验作业
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)顺序结构程序举例
![](https://img-blog.csdn.net/20140330103051109?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzkyNjU4Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
(02)
![](https://img-blog.csdn.net/20140330105625796?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzkyNjU4Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
(03)习题4
![](https://img-blog.csdn.net/20140331123639359?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzkyNjU4Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
(04)习题5
![](https://img-blog.csdn.net/20140331183513406?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzkyNjU4Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
(05)
(06)习题8
![](https://img-blog.csdn.net/20140331183649171?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzkyNjU4Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
(07)习题9
![](https://img-blog.csdn.net/20140331183756140?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzkyNjU4Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2、百鸡问题
![](https://img-blog.csdn.net/20140331230401765?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzkyNjU4Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
3、数位问题
![](https://img-blog.csdn.net/20140330190707000?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzkyNjU4Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
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;
else
cout<<"该建筑物高度为0米!"<<endl;
return 0;
}
5、求s=1!+2!+3!+......n!(其中n为整数,n!表示计算n阶乘)
方法1
![](https://img-blog.csdn.net/20140330233921593?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzkyNjU4Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
方法2
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; else n=(-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;
else
cout<<"该建筑物高度为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; }