第四周作业上(2014.3.31)

 学习要求:
掌握输入/出流的使用。
掌握结构化程序设计过程和方法。
掌握选择/分支结构程序,循环程序设计方法,熟知分支和循环语句,并灵活运用。
初步掌握一些常规题型算法
进一步积累程序调试经验。


 实验作业:
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条错误信息原因,并输入电脑形成文字)。
 


作业要求:
网上提交各个程序和相关要求的文字。
可以分两个博客文章来交。前5个题和后5个题各放到一个博客文章中提交。


作业1:

习题5:求自然对数e的近似值

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


习题6:求圆周率π的近似值

#include<iostream>  
#include<iomanip>  
using namespace std;  
int main()  
{  
  
    long int i;  
    float j;  
    double s=0;  
    for(i=1;i<=50000000;i++)  
    {  
        j=1.0/(2*i-1);  
        if(i/2==i/2.0)//判断i为奇数或偶数  
            s-=j;  
        else  
            s+=j;  
    }  
    cout<<"π="<<setprecision(8)<<s*4<<endl;  
    return 0;  
}  



习题7:

#include<iostream>  
#include<iomanip>  
using namespace std;  
int main()  
{  
    int i=0;  
    long int j;  
    float num,m;  
    while(1)  
    {  
        cout<<"请输入一个值:"<<endl;  
        cin>>num;  
        for(j=1;j<=num;j=10*j)  
        {  
          i++;  
        }  
        switch(i)  
        {  
            case 2:  
                cout<<num<<"is 10 to 100."<<endl;  
                break;  
            case 3:  
                cout<<num<<"is 100 to 1000."<<endl;  
                break;  
            default:  
                if(i<2)  
                 cout<<num<<"小于10."<<endl;  
                if(i>3)  
                    cout<<num<<"在1000以上."<<endl;  
                break;  
        }  
        i=0;  
    }  
    return 0;  
}  



习题9:

#include<iostream>  
using namespace std;  
int main()  
{  
      
    int n=0,s=0;  
    while(s<=1000)  
    {  
        n++;  
        s+=n*n;  
    }  
    cout<<"满足条件的最大值";  
    cout<<"n="<<n<<endl;  
     return 0;  
}  


例题10:

#include<iostream>  
using namespace std;  
int main()  
{  
    int i=0;  
    long unsigned int x1=0;  
    double x2=0,s=0.01;  
    while(i!=30)  
    {  
        i++;  
        x1+=100000;  
        s=s*2;  
        x2+=s;  
    }  
    cout<<"一个月后......"<<endl;  
    cout<<"陌生人给了百万富翁"<<x1<<"元钱"<<endl;  
        cout<<"百万富翁给了陌生人"<<fixed<<x2<<"元钱"<<endl;  
     return 0;  
}  




作业2:

#include<iostream>  
using namespace std;  
int main()  
{  
    int i=0;  
    int a,b,c;                      //定义a,b,c三个整型变量,a,b,c分别储存鸡翁,鸡母,鸡雏的数量  
    double d;                       //定义浮点型变量储存金钱的总量  
    cout<<"鸡翁一值钱五,鸡母 一值钱三,鸡雏三值钱一。"<<endl;  
    cout<<"百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?"<<endl;  
    for(a=0;a<=20;a++)              //因为5*20=100,所以a不能大于20  
    {  
        for(b=0;b<34;b++)           //因为3*33=99,3*34=102,所以b得小于34  
        {  
            c=100-a-b;              // a+b+c=100  
            d=5*a+3*b+c/3.0;        //一只鸡翁5钱,一只鸡母3钱,三只鸡雏1钱,所以总钱量d=5*a+3*b+c/3.0  
          
            if(d==100)              //当总钱量为100时,输出abc的值  
            {  
                i++;  
                cout<<endl;  
                cout<<"第"<<i<<"种情况"<<endl;  
                cout<<"鸡翁的数量a="<<a<<endl;  
                cout<<"鸡母的数量b="<<b<<endl;  
                cout<<"鸡雏的数量c="<<c<<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;  
float juli(float x1,float y1,float x2,float y2);  
int main()  
{  
    float x,y,k;  
    cout<<"请输入坐标(x,y):"<<endl;  
    cout<<"x=";  
    cin>>x;  
    cout<<"y=";  
    cin>>y;  
    cout<<"您所输入的坐标为("<<x<<","<<y<<")"<<endl;  
    x= fabs( x);  //求输入点的绝对值  
    y= fabs( y);  
    cout<<"取绝对值后坐标为("<<x<<","<<y<<")"<<endl;  
    k=juli(x,y,2,2);//调用求距离函数,求(x,y),(2,2)两点的距离  
    if(k<=1)                                 //当(x,y)与(2,2)的距离小于等于1时,则该点在建筑上  
        cout<<"该点再建筑物的高度为10m"<<endl;  
    else                                     //当(x,y)与(2,2)的距离大于1时,则该点不在建筑上  
        cout<<"该点再建筑物的高度为0m"<<endl;  
      
    return 0;  
}  
float juli(float x1,float y1,float x2,float y2)//求(x1,y1)和(x2,y2)之间的距离  
{  
    float t;  
      t=sqrt((x1-x2)*(x1-x2)+(y1+y2)*(y1-y2));  
        return t;  
}  

作业5

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

作业7

#include<iostream>  
using namespace std;  
int main()  
{  
    int a,n,i,j,b=0;  
    long unsigned int s=0;  
    cout<<"计算s[n]=a+aa+aaa+aa...a(n个)的值"<<endl;  
    cout<<"输入a的值,切记,a的值为0~9的整数值"<<endl;  
    cout<<"a=";  
    cin>>a;  
    cout<<"输入n的值,n为大于0的整数"<<endl;  
    cout<<"n=";  
    cin>>n;  
    for(i=1;i<=n;i++)  
    {  
        for(j=1;j<=i;j++)  
        {  
            b=b*10+a;  
              
        }  
        s+=b;  
        b=0;  
    }  
    cout<<"经计算得"<<"s["<<n<<"]="<<s<<endl;  
    return 0;  
} 

作业8

#include<iostream>
using namespace std;

void mt();

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

void mt()
{
	cout<<"九九乘法表"<<endl;
	for(int j=1;j<10;j++){
		for(int i=1;i<10;i++)
			cout<<i<<"*"<<j<<"="<<j*i<<'\t';
		cout<<endl;
	}
}


作业9

#include<iostream>  
using namespace std;   
int main()  
{  
    int m=0;  
    char i,j,k;//定义i,j,k;i为a的对手,j为b的对手,k为c的对手  
    cout<<"将张三,李四,王五分别记为a,b,c"<<endl;  
    cout<<"将陈六,赵七,宋八分别记为A,B,C"<<endl;  
    for(i='A';i<='C';i++)  
        for(j='A';j<='C';j++)  
            for(k='A';k<='C';k++)  
            {  
                if(i!=j&&i!=k&&j!=k)  
                {  
                    if(i!='A'&&k!='A'&&k!='C')  
                    {  
                        cout<<"比赛名单如下:"<<endl;  
                        cout<<"a对抗"<<i<<"  "<<"b对抗"<<j<<"  "<<"c对抗"<<k<<"  ";  
  
                    }  
                }  
            }  
     return 0;  
}  












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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值