实验作业
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;
}
#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;
}