第三章作业

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

求自然对数e

#include<iostream>
using namespace std;

int main()
{
	double e=1.0,c=1.0;
	int a;
	for(a=1;c<10e6;a++)
	{
		c*=a;
		e+=1/c;
	}
	cout<<"自然对数为:"<<e<<endl;

	return 0;
}


求圆周率


#include <iostream>
using namespace std;

int main()
{
    int a;
    double P,b;
	b=1;
	P=0;
	for(a=1;a<10e6;a+=2)
	{
	   P+=4*(double)1/a*b;
	   b*=-1;
       
	}
	cout<<"圆周率为:"<<P<<endl;

	return 0;
}



求一数值的范围

#include<iostream>
using namespace std;

int main()
{
	float a; 
	cout<<"请输入一个数:"<<endl;
	cin>>a;
	if(a<10)
	  cout<<a<<"小于10"<<endl;
	else
	 if(10<a&&a<100)
	 	cout<<a<<"is 10 to 100"<<endl;
	else
	  if(100<a&&a<1000)
	  cout<<a<<"is 100 to 1000"<<endl;
	else
	   if(a>=1000)
	    cout<<a<<"大于或等于1000"<<endl;
	 
	   return 0;
}



输出图形为菱形

#include<iostream>
using namespace std;
int main()
{
 int a,b;
 if(a<=4)
 {for(a=1;a<=4;a++)
 {for(b=1;b<=15-2*a;b++) cout<<" ";
 for(b=1;b<=2*a-1;b++) cout<<" *";
 cout<<"\n";
 }
 }
 if(a>4&&a<=7)
 {for(a=5;a<=7;a++)
 {for(b=1;b<=2*a-1;b++) cout<<" ";
 for(b=1;b<=15-a*2;b++) cout<<" *";
 cout<<"\n";
 }
 }
 return 0;
}
//在if中嵌套for语句,利用for语句计算空格的位置,以及*号的位置


计算1^2+2^2+3^2+…+n^2<=1000的最大值n

#include <iostream>
using namespace std;

int main()
{
	int n,s;
	n=1;
	s=0;
	do
	{
		n++;
		s+=n*n;
	}while(s<=1000);
	cout<<"n="<<n<<endl;


	return 0;
}


求解百旺富翁与陌生人各获利

#include<iostream>
using namespace std;


int main()
{
    double a=100000,b=0.01,d=1,k=0,n=0;
	do
	{
		k=k+a;
		n=n+b;
		b=b*2;
		d++;
	}while(d<=30);
	cout<<"百万富翁得到:"<<k<<"元"<<endl
		<<"陌生人得到:"<<n<<"元"<<endl;


	return 0;
}



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

#include<iostream>
using namespace std;

int main()
{
	int j,k,l;
	for(j=0;j<=20;j++)
	for(k=0;k<=33;k++)
	for(l=0;l<=99;l+=3)
	if(5*j+3*k+l/3==100&&j+k+l==100)
		cout<<"鸡翁数量为:"<<j<<"个"<<" "
		    <<"鸡母数量为:"<<k<<"个"<<" "
			<<"鸡雏数量为:"<<l<<"个"<<endl;
	
	return 0;
}
//利用for语句进行列举法时,再加入if语句进行选择。



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

#include<iostream>
using namespace std;

int main()
{ 
	int j,f,t,g,k=0,l,m,n=0;
	cout<<"请输入一个数:";
	cin>>m;
	j=m;
	f=m;
	while(m>0)
	{
		m/=10;
		n++;
	}
	cout<<"它是一个"<<n<<"位数"<<endl;
	cout<<"该数从个位起依次为:";
	for(g=1;g<=n;g++)
	{
		t=f%10;
		f=f/10;
		cout<<" "<<t;
	}
	cout<<endl;
	for(l=0;l<n;l++)
	{
		k=k+(j%10);
		j/=10;
	}
	cout<<"该数值各个位数字之和为:"<<k<<endl;
	
	return 0;
}



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

#include<iostream>
#include<cmath>
using namespace std;

int main()
{ 
	double x,y,D;
	cout<<"横坐标:";
	cin>>x;
	cout<<"纵坐标:";
	cin>>y;
	if(x<0)
		x=-x;
	if(y<0)
		y=-y;
	D=sqrt((x-2)*(x-2)+(y-2)*(y-2));
	if(D<1)
		cout<<"塔高为10米"<<endl;
	else
		cout<<"塔高为0米"<<endl;


	return 0;
}


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

解法一:

#include<iostream>
using namespace std;

int main()
{
	double a,b,n,s=0;
	cout<<"输入一个整数:";
	cin>>n;
	a=1;
	b=1;
	while(b<=n)
	{
		a=a*b;
		s+=a;
		b++;
	}
	cout<<"阶乘和为:"<<s<<endl;

	return 0;
}
//利用while语句实现直到型循环结构


解法二:

#include<iostream>
using namespace std;

int main()
{
	double a=1,b,n,s=0;
	cout<<"输入一个整数:";
	cin>>n;
	for(b=1;b<=n;b++)
	{
		a=a*b;
		s+=a;
	}
	cout<<"阶乘和为:"<<s<<endl;
	
	return 0;
}
//利用for语句进行循环,对比也可发现相对if语句,for语句更为方便



6.猴子吃苹果问题:猴子第一天摘了若干个苹果,当时吃了一半,还不过隐,又多吃了一个。第二天,又吃掉余下的一半,又多吃一个。以后每一天,都是吃掉前一天余下的一半零一个。到第10天,只有一个苹果了。问猴子第一天共摘了多少个苹果?

#include<iostream>
using namespace std;

int main()
{
	int a,b=1,c;
	for(c=1;c<10;c++)
	{
		b=(b+1)*2;
		a+=b;
	}
	cout<<"猴子第一天摘了:"<<b<<"个苹果"<<endl;
	
	return 0;
}


7.计算s[n]=a+aa+aaa+aa...a(n个)的值。其中a是一个数字,n表示a的位数。例如,当a=1,n=5时,则要计算的表达式为

    s[5]=1+11+111+1111+11111

#include <iostream>
using namespace std;

int main()
{
	int a,n,i=1,s=0,t=0;
	cout<<"输入一个数字:";
	cin>>a;
	cout<<"输入它的位数:";
	cin>>n;
	while(i<=n)
	{
	t=t+a;
	s=s+t;
	a=a*10;
	i++;}
	cout<<"计算的结果为: "<<s<<endl;
	
	return 0;
}



8.打印九九乘法表。

#include <iostream>
using namespace std;


int main()
{
	cout<<"九九乘法表"<<endl;
	int i,j,k;
	for(i=1;i<=9;i++)
	{
		for(j=1;j<=i;j++)
		cout<<i<<"*"<<j<<"="<<i*j<<" ";
		cout<<endl;
	}


	return 0;
}

9.两个羽毛队进行单打比赛,各出3个人。甲队为张三、李四、王五3个队员,已队为陈六、赵七、宋八3个队员。现已经抽签决定比赛名单,有人向队员打听比赛名单,张三说他不和陈六打,王五说他不和陈六和宋八打。请编程找出3对比赛名单。

#include<iostream>
using namespace std;
int main()
{
 cout<<"将张三、李四、王五 编号为 a b c"<<endl;
 cout<<"将陈六、赵七、宋八 编号为 A B C"<<endl;
 char i,j,k;
 for(i='A';i<='C';i++)
 for(j='A';j<='C';j++)
 for(k='A';k<='C';k++)
 if(i!=j&&j!=k&&k!=i)
  if(i!='A'&&k!='A'&&k!='C')
 cout<<"a--"<<i<<" "<<"b--"<<j<<" "<<"c--"<<k<<endl;
 return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值