第四周-自动班作业及实验

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

题5

#include<iostream>
using namespace std;
int main()
{
	long double i=0,j=1.0,s=1.0;  
    do
	{   
		i=i+1;
        j=j*i;  
        s=s+1/j;  
	}while(j<=1000000);
    cout<<"e="<<s<<endl;  
}


题6.

#include<iostream>
using namespace std;
int main()
{
	double x,y;
	double z=0,i=-1;
    for(x=1;x<1e8;x+=2)
	{
		i=-i;
	    y=1/x;
		y=y*i;
		z=z+y;
	}
	cout<<4*z<<endl;
	return 0;
}

题7

#include<iostream>
using namespace std;
int main()
{
	int num;
	cout<<"输入数字"<<endl;
	cin>>num;
	if(num<=10)
		cout<<num<<" is "<<"10"<<endl;
	if(num>10&&num<=100)
		cout<<num<<" is "<<"10"<<"to"<<"100"<<endl;
	if(num>100&&num<=1000)
		cout<<num<<" is "<<"100"<<"to"<<"1000"<<endl;
	if(num>1000)
		cout<<num<<"大于"<<"10000"<<endl;
	return 0;
}

题8

#include<iostream>
using namespace std;
int main()
{
	int h,i,j=0,k;
	int n;
	cout<<"输入*的长度数:";
	cin>>n;
	if(n%2==1)//排除偶数
	{
		for(h=1;h<=n/2+1;h++)//循环上半个三角行
		{
			for(i=1;i<=n;i++)//输出"   "
			{
		    	if(i>=n/2+1-j&&i<=n/2+1+j)//到了指定位置输出*
	                cout<<"*";
		        cout<<" ";
				if(i<=n/2-j)//排整
					cout<<" ";
			}
			j=j+1;//改变每行输出*的位置
			cout<<endl;//换行
		}
		j=j-1;//除掉上三角的j多加了一次
		for(h=n/2+2;h<=n;h++)
		{
			j=j-1;//改变每行输出*的位置
			for(i=1;i<=n;i++)//输出"   "
			{
		    	if(i>=n/2+1-j&&i<=n/2+1+j)//到了指定位置输出*
	                cout<<"*";
		        cout<<" ";
				if(i<=n/2-j)//排整
					cout<<" ";
			}
			
			cout<<endl;//换行
		}
	}
	else
		cout<<"只能输入奇数"<<endl;
	return 0;
}

题(9)

#include<iostream>
using namespace std;
int main()
{
	int i=0,s=0;
    do
	{
		i=i+1;
		s=s+i*i;
	}while(s<=1000);
    cout<<i-1<<endl;
	return 0;
}

题10

#include<iostream>
using namespace std;
int main()
{
	double in=0.01,INmoney=0,OUTmoney=0;
	int i;
	for(i=1;i<=30;i++)
	{
		OUTmoney+=10;
		INmoney+=in;
		in*=2;
	}
	cout<<"陌生人给了百万富翁"<<OUTmoney<<"万元"<<endl;
	cout<<"百万富翁给了陌生人"<<INmoney/10000<<"万元"<<endl;
}



2.百钱百鸡

#include<iostream>
using namespace std;
int main()
{
	cout<<"            公鸡 "<<"母鸡 "<<"小鸡"<<endl; //定义三个整形变量x(公鸡),y(母鸡),z(小鸡)
	int x,y,z;
	int i=0;
		for(x=0;x<=20;x++) //循环语名for
			for(y=0;y<=33;y++) 
				for(z=0;z<=100;z+=3)
				{
					if(5*x+3*y+z/3==100&&x+y+z==100) //满足100元买100只鸡
					{
						i++;
						cout<<"☆"<<"方案"<<i<<"☆    "<<x<<"    "<<y<<"    "<<z<<endl;
					}
				}
				return 0;
} //注解什么的不知道怎么写啊怎么写
 

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

#include<iostream>
using namespace std;
int main()
{
	int a,b,c=0,i=0;
	cout<<"输入一个非零整数"<<endl;
	cin>>a;
	cout<<"从右到左"<<endl;
	do
	{
		b=a%10;//取余
		a=a/10;
		i=i+1;
		c=c+b;
		cout<<"第"<<i<<"位是"<<b<<endl;
	}while(a!=0);//a不等于0时,继续循环
	cout<<"它是"<<i<<"位数字"<<endl;
	cout<<"各个数位上数字之和为"<<c<<endl;
	return 0;
}//感觉越来越不想写注解了喵

4.在一个平面上,有四个圆柱形塔,我把圆柱改成圆锥体塔了

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
	double x,y,r,z;
	cout<<"依次输入x和y"<<endl;
	cin>>x>>y;
	x=fabs(x);//取绝对值
	y=fabs(y);
	if(x>1&&x<3&&y>0&&y<1)//判断座标范围
	{
		r=sqrt((x-2)*(x-2)+y*y);//求点到圆心距
        z=10*(1-r);//求对应高z
		cout<<"高为"<<z<<endl;
		

	}
	else if(x>0&&x<1&&y>1&&y<3)
	{
		r=sqrt((y-2)*(y-2)+x*x);
	    z=10*(1-r);
		cout<<"高为"<<z<<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,i,j=1,s=0;
cout<<"输入n值吧"<<endl;
cin>>n;
for(i=1;i<=n;i++)
{
j=j*i;
s=s+j;
}
cout<<"s的输出为"<<s<<endl;
}//累不爱
(2)

#include<iostream>
using namespace std;
int main()
{
int n,i=1,j=1,s=0;
cout<<"输入n值吧"<<endl;
cin>>n;
while(i<=n)
{
j=j*i;
s=s+j;
i=i+1;
}
cout<<"s的输出为"<<s<<endl;
return 0;
}//累不爱 while

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

#include<iostream>
using namespace std;
int main()
{
	int pg=1;
	int i;
	for(i=1;i<=10;i++)
	{
		pg=(pg+1)*2;//从第10天向前计算
	}
	cout<<"第一天一共摘了"<<pg<<"个苹果"<<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,j=0,k=1,s=0;
cout<<"依次输入a和n值吧"<<endl;
cin>>a>>n;
cout<<"s[n]=";
while(i<=n)
{
j=a*k;
k=10*k;
s=s+j;
i=i+1;
cout<<s;
if(i<=n)
cout<<"+";
}
cout<<endl;
return 0;
}//累不爱,第7题

8.打印九九乘法表。

#include<iostream>
using namespace std;
int main()
{
	int a=0,b=1;
	do
	{
		a=a+1;
		cout<<a<<"*"<<b<<"="<<a*b<<" ";
		if(a==b)
		{
			cout<<endl;
			b=b+1;
			a=0;
		}
	}while(b<=10);
	return 0;
}

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

#include<iostream>  
using namespace std; 
int main()  
{  
	char  i,j,k;  //以i,j,k分别代表张三,李四,王五
	for(i='x';i<='z';i++)
		for(j='x';j<='z';j++)
			for(k='x';k<='z';k++)
			{	
				if(i!=j && i!=k && j!=k)//同队不能互相干
				{
			        if(i!='x' && k!='x' && k!='z')//张三不和陈六干,王五不和陈六和宋八打(这特么还要不要规则)
					{
							cout<<"3对比赛名单"<<endl;//x,y,z分别对应陈六,赵七,宋八
							cout<<"张三 VS ";
						    cout<<i<<endl;
							cout<<"李四 VS ";
						    cout<<j<<endl;
							cout<<"王五 VS ";
						    cout<<k<<endl;
					}
					 		
				}
			}
			return 0; 
}//不知道怎么把名字和字母联系啊








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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值