第三章作业(第四周)上

实验作业

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;
}





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值