第三章作业

第三章 结构化程序设计学习要求和实验

n      学习要求

掌握输入/出流的使用。

掌握结构化程序设计过程和方法。

掌握选择/分支结构程序,循环程序设计方法,熟知分支和循环语句,并灵活运用。

初步掌握一些常规题型算法

进一步积累程序调试经验。

n      实验作业

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阶乘),要求使用两种以上的方法。

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

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

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

8.打印九九乘法表。

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

10.积累调试程序经验,收集错误信息原因(每个同学收集3-5条错误信息原因,并输入电脑形成文字)。

n      作业要求

网上提交各个程序和相关要求的文字。

可以分两个博客文章来交。前5个题和后5个题各放到一个博客文章中提交。

 

/***********************
**  习题5:求e的近似值  **
***********************/

#include<iostream>  
#include<iomanip>  
using namespace std;  
int main()  
{  
  
    int i,n;  
    double e=1,a=1;  
    for(i=1;i<=10;i++)  
    {  
        for(n=1;n<=i;n++)  
        {  
            a*=n;  
        }  
        e+=1/a;  
        a=1;  
    }  
    cout<<"e="<<fixed<<setprecision(6)<<e<<endl;  
    return 0;  
}  


 

/**********************
**习题6:求π的近似值**
**********************/
#include<iostream>
#include<iomanip>
using namespace std;

int main()
{  
    long double i,pi=0,a=1;  
    for(i=1;i<=1E7;i=i+2)  
    {  
        pi+=4*1/i*a;  
        a*=-1;  
    }  
    cout <<"π ="<<fixed<<setprecision(6)<<pi<<endl;  

    return 0;  
}


 

/**********************
****习题7:数值分类****
**********************/
#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
	int a;
	cout<<"请输入任意实数"<<endl;
	cin>>a;
	if (a<10) cout<<a<<" a is less than 10"<<endl;
	else if (a>=10&&a<100) cout<<a<<" a is 10 to 100"<<endl;
	else if (a>=100&&a<1000) cout<<a<<" a is 100 to 1000"<<endl;
	else  cout<<a<<" a is more than 1000"<<endl;
        return 0;
}


/**********************
****习题8:************
**********************/
#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
	cout<<"       *"<<endl;
	cout<<"     * * *"<<endl;
	cout<<"   * * * * *"<<endl;
	cout<<" * * * * * * * "<<endl;
	cout<<"   * * * * *"<<endl;
	cout<<"     * * *"<<endl;
	cout<<"       *"<<endl;
	return 0;
}


/**********************
******习题9:求n*******
**********************/
#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
	int n=1,m=1;
	while(m<=1000)
	{
	n++;
	m+=n^2;
	}
	cout<<"满足条件的n的最大值为"<<n-1<<endl;
	return 0;
}


/***********************
****习题10:亏本买卖****
***********************/
#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
	cout<<"陌生人给了百万富翁"<<10*30<<"万元钱"<<endl;
	double a=0;
	int b=1,n;
		for(n=1;n<=30;n++)
		{	
			a+=0.01*b;
			b*=2;
		}
	cout<<"百万富翁给了陌生人"<<fixed<<setprecision(4)<<a/10000<<"万元钱"<<endl;
}


/***********************
***习题11:九九乘法表***
***********************/
#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
	int i,j;
	for(i=1;i<=9;i++)
	{
		for(j=1;j<=i;j++)
			cout<<j<<"*"<<i<<"="<<i*j<<"\t";//"\t"横向跳到下一制表位置
		cout<<endl;
	}
	
}


/***********************
*****功能:百钱百鸡*****
***********************/
#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
	int a,b,c;
	for(a=0;a<=20;a++)
		for(b=0;b<=33;b++)
			for(c=0;c<=300;c++)
				if(a+b+c==100&&5*a+3*b+c/3==100)
					cout<<"鸡翁数为"<<a
					<<"鸡母数为"<<b
					<<"雏鸡数为"<<c<<endl;
				return 0;
}


/***********************
******第三章第3题******
***********************/
#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;

int main()
{
	int n,i=0,sum=0;
	double a,b;
	cout<<"请输入任意一个正整数"<<endl;
	cin>>a;
	b=a;
	while(b>=1)
	{
		b/=10;
		i++;
	}
	cout<<fixed<<setprecision(0)<<a<<"为"<<i<<"位数字"<<endl;
	cout<<"各个位上的数字分别为";

	for(i>1;i--;)
	{
		b=b*10;
		n=b;
		b=b-n;
		sum+=n;
		cout<<n<<"   ";
	}
	cout<<endl;
	cout<<"各个数位上数字之和为"<<sum<<endl;
}
/***********************
******第三章第4题******
***********************/
#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;

int main()
{
	double x,y;
	cout<<"请输入x: ";
	cin>>x;cout<<endl;
	cout<<"请输入y: ";
	cin>>y;cout<<endl;
	x=fabs(x)-2;
	y=fabs(y)-2;
	if ((x*x+y*y)<=1)
		cout<<"该点建筑物的高度为10米。"<<endl;
	else cout<<"该点建筑物的高度为0米。"<<endl;
}
/***********************
******第三章第5题******
***********************/
#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;

int main()
{
	int s=0,m=1,i=1,n;
	cout<<"请输入n值"<<endl;
	cin>>n;
	for(i=1;i<=n;i++)
	{
		m*=i;
		s+=m;
	}
	/*while(i!=n+1)   //方法二,可替换上面的for循环
	{
		m*=i;
		s+=m;
		i++;
	}*/
	cout<<"s="<<s<<endl;
}

 

/***********************
***第三章第6题:苹果***
**********************/
#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
	int x=1,i;
	for(i=1;i<=10;i++)
	x=(x+1)*2;
	cout<<"猴子第一天共摘了"<<x<<"个苹果"<<endl;
}

 

/**********************
**第三章第7题:求s[n]**
**********************/
#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
	int a,n,i,sn=0,an=0;
	cout<<"请输入a的值"<<endl;
	cin>>a;
	cout<<"请输入n的值"<<endl;
	cin>>n;
	for(i=1;i<=n;i++)
	{
		an=an*10+a;
		sn+=an;
	}
	cout<<"s[n]="<<sn<<endl;
}


 

/************************
*第三章第8题:九九乘法表*  
****跟上面习题11一样****/
#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
	int i,j;
	for(i=1;i<=9;i++)
	{
		for(j=1;j<=i;j++)
			cout<<j<<"*"<<i<<"="<<i*j<<"\t";//"\t"横向跳到下一制表位置
		cout<<endl;
	}
	
}
/************************
****第三章第9题:配对****  
************************/

#include<iostream>  
using namespace std;
int i,j,k;
void jia(int x)
{
	char ch[]="张三李四王五";
	cout<<"\t"<<ch[4*x]<<ch[4*x+1]<<ch[4*x+2]<<ch[4*x+3];
}
void yi(int y)
{
	char ch[]="陈六赵七宋八";
	cout<<ch[4*y]<<ch[4*y+1]<<ch[4*y+2]<<ch[4*y+3]<<"\n";
}

int main()
{
	for(i=0;i<3;i++)//i是张三的对手,j是李四的对手,k王五的对手;0为陈六,1为赵七,2为宋八
		for(j=0;j<3;j++)
			if (i!=j)
			{
				for(k=0;k<3;k++)
					if(i!=k&&j!=k&&i!=0&&k!=0&&k!=2)
					{
						cout<<"比赛名单为:\n" ;
						jia(0);cout<<" 对 ";yi(i);
						jia(1);cout<<" 对 ";yi(j);
						jia(2);cout<<" 对 ";yi(k);
					}
			}
	return 0;
}


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值