第四周作业

来源:互联网 发布:算法图解 epub 编辑:程序博客网 时间:2024/05/21 20:27

     实验作业

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

 习题5.

#include<iostream>               using namespace std;int main(){long double f=1,e=1;for(int i=1;1/f>=1E-6;i++)  //for语句,将每一项相加,当项1/f小于1E-6则终止f=f*i,e=e+1/f;cout<<"e的近似值为:"<<e<<endl;   //输出结果return 0;}/******************************* 习题6***************************************************/#include<iostream>using namespace std;int main(){long double PI;                    //此处PI为Π/4int f=1;for(int i=3;1/i>=1E-8;i+=2)        //for语句,直到最后一项大于或等于1E-8则中止循环PI+=f/i,f=-f;cout<<"Π近似值为:"<<4*PI<<endl;   //最后输出所求值return 0;}

习题7.

#include<iostream>using namespace std;int main(){long double number;cout<<"请输入数据:";cin>>number;    if(number<10)cout<<number<<"is less than 10"<<endl;else if(number<100)cout<<number<<"is 10 to 100"<<endl;else if(number<1000)cout<<number<<"is 100 to 1000"<<endl;elsecout<<number<<"is more than 1000"<<endl;return 0;}


习题8.

#include<iostream>using namespace std;int main(){int i,j,k;for(i=0;i<=3;i++){for(j=0;j<6-2*i;j++)cout<<"";for(k=0;k<2*i+1;k++)cout<<"*";cout<<endl;}for(i=0;i<=2;i++){for(i=0;j<2+2*i;j++)cout<<"";for(k=0;k<5-2*i;k++)cout<<"*";cout<<endl;}return 0;}


习题9.

#include<iostream>using namespace std;int main(){int i,j,k;for(i=0;i<=3;i++){for(j=0;j<6-2*i;j++)cout<<"";for(k=0;k<2*i+1;k++)cout<<"*";cout<<endl;}for(i=0;i<=2;i++){for(i=0;j<2+2*i;j++)cout<<"";for(k=0;k<5-2*i;k++)cout<<"*";cout<<endl;}return 0;}


习题10.

#include<iostream>               using namespace std;int main(){long double s1=100000*30,s2=0,f=0.01for(int n=1,n<=30,n++)s2=s2+f,f*=2;cout<<"陌生人给了百万富翁"<<s1<<endl;cout<<"百万富翁给了陌生人"<<s2<<endl;return 0;}

习题11.

#include<iostream>               using namespace std;int main(){int row,column;for(row=1,column=1;row<=9;row++){for(column=1;column<=row;column++)cout<<column<<"*"<<row<<"="<<row*column<<"\t";cout<<endl;return 0;}


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

#include<iostream>  using namespace std;  int main()  {      int i=0;      int a,b,c;      double d;       for(a=0;a<=20;a++)    {          for(b=0;b<34;b++)       //限制鸡翁鸡母的数量        {              c=100-a-b;                 d=5*a+3*b+c/3.0;   //列出方程关系式                      if(d==100)                 {                  i++;                  cout<<endl;                  cout<<"第"<<i<<"种情况"<<endl;                  cout<<"鸡翁的数量a="<<a<<endl;                  cout<<"鸡母的数量b="<<b<<endl;                  cout<<"鸡雏的数量c="<<c<<endl;                            }          }      }      return 0;  }  


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

这一题我本来只想出怎样算出整数位数,后来问别人后就完整编写了这题的解法,故两个程序如下)

{   int n,k=1,j=1;cout<<"请输入整数n";cin>>n;for(int m=9;n-m>0;m=m+9*k)j+=1,k=k*10;cout<<"整数n位数为"<<j<<endl;return 0;}

#include<iostream>               using namespace std;int main(){   long double k,l;int m=0,sum=0,n;cout<<"请输入整数n";cin>>n;cout<<"该整数每一位的数字从个位开始为:"<<endl;for(;n>1;m++)l=n%10,cout<<l<<endl,    sum+=l,n=(n-l)/10;cout<<"各个数位上数字之和为:"<<sum<<endl;cout<<"整数n的位数为:"<<m<<endl;return 0;}


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

#include<iostream>                 using namespace std;  int main()  {long double x,y;cout<<"请输入坐标(x,y)"<<endl;cin>>x>>y;if(x>-3,x<-1,y>1,y<3)cout<<"该点建筑物高度为10米"<<endl;else if(x>1,x<3,y>1,y<3)cout<<"该点建筑物高度为10米"<<endl;else if(x>-3,x<-1,y>-3,y<-1)cout<<"该点建筑物高度为10米"<<endl;else if(x>1,x<3,y>-3,y<-1)cout<<"该点建筑物高度为10米"<<endl;elsecout<<"该点建筑物高度为0米"<<endl;return 0;}

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

#include<iostream>               using namespace std;int main(){int n,k,sum=0,m=1,j=1;cout<<"请输入一整数n"<<endl;cin>>n;    for(k=n;n-m>1;j++)k*=(n-j),sum+=k;    cout<<sum<<endl;    return 0;}


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

#include<iostream>               using namespace std;int main(){int s=1;for(int day=1;day<=10;day++)s+=(s+1)*2;cout<<"猴子第一天摘了"<<s<<"个苹果"<<endl;return 0;}


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

#include<iostream>               using namespace std;int main(){   int n,a,s=a;cout<<"请输入整数n";cin>>n;cout<<"请输入整数a";cin>>a;for(int m=1;m<n;m++)a=10*a,s=a+a;cout<<"表达式为:s="<<"s"<<endl;return 0;}

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

(这题不会,参考了别人)

#include<iostream>  using namespace std;  int main()  { int m=0;      char i,j,k;    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
原创粉丝点击