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阶乘),要求使用两种以上的方法。
作业一
习题五
求自然对数e的近似值,误差小于10^-6 (参考光荣榜同学的算法)
#include <iostream>
using namespace std;
int main()
{
int i=0;
double value=1,fact=1;
while (fact>=10e-6) //当循环
{
i++;
fact=fact/i;
value+=fact;
}
cout << "e = "<<value<<endl;
return 0;
}
输出:
习题六
#include <iostream>
using namespace std;
int main()
{
long double pi=1.0;
double flag=-1.0;
for(int i=3;1.0/i>=1e-6;i+=2)
{
pi+=flag/i;
flag=-flag;
}
cout<<"圆周率的近似值为:"<<4*pi<<endl;
return 0;
}
输出:
习题七
#include<iostream>
using namespace std;
int main()
{
int num;
cout<<"输入一个整数:"<<endl;
cin>>num;
if(num<=10)
cout<<num<<" is less then 10 "<<endl;
else if(num<=100)
cout<<num<<" is 10 to 100 "<<endl;
else if(num<=1000)
cout<<num<<" is 100 to 1000"<<endl;
else
cout<<num<<" is 1000 to more"<<endl;
return 0;
}
输出:
习题八
/*******************************
**** 输出图形 ****
********************************/
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int i,j,k;
for(i=7;i>=1;i-=2)
{
for(k=i;k>0;k--)
cout<<' ';
for(j=8-i;j>0;j--)
{
cout<<"* ";
}
cout<<endl;
}
for(i=5;i>=1;i-=2)
{
for(k=8-i;k>0;k--)
cout<<' ';
for(j=i;j>0;j--)
{
cout<<"* ";
}
cout<<endl;
}
return 0;
}
输出:
习题九
#include <iostream>
using namespace std;
int main()
{
int sum=0,n;
for(n=1; ;n++) //分号不能省略
{
sum+=n*n;
if(sum>=1000) //if控制跳出循环
break;
}
sum-=n*n;
cout<<"满足“1^2+2^2+3^2+…+n^2<=1000”的最大n值为"<<n-1<<endl;
return 0;
}
输出:
#include <iostream>
using namespace std;
int main()
{
double day=0.01, stranger=0.0,millionaire=10.0; //后面两个变量分别表示陌生人和富翁得到的钱数
for(int i=1;i<=30;i++)
{
stranger+=day;
day*=2;
}
stranger/=10000.0; //以万元为单位
millionaire*=30;
cout<<"这一个月中富翁给了陌生人"<<stranger<<"万元"<<endl
<<"陌生人给了富翁"<<millionaire<<"万元"<<endl;
return 0;
}
输出:
作业二
百钱百鸡
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a,b,c;
for(a=0;a<=20;a++) //100/5=20.故鸡翁不能超过20
for(b=0;b<=33;b++) //100/3约为33,故鸡母不能超过33
for(c=0;c<=99;c+=3) //雏鸡最小数量为3,最大不能超过99
{
if(5*a+3*b+c/3.0==100&&a+b+c==100)
cout<<"鸡翁="<<a<<"\t\t"<<"鸡母="<<b<<"\t\t"<<"雏鸡="<<c<<"\t\t"<<endl;
}
return 0;
}
输出:
调试了一下,终于可以显示“第几种情况”这句话
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a,b,c,n;
n=0; //这个是关键,要赋为0
for(a=0;a<=20;a++) //100/5=20.故鸡翁不能超过20
{
for(b=0;b<=33;b++) //100/3约为33,故鸡母不能超过33
{
for(c=0;c<=99;c+=3) //雏鸡最小数量为3,最大不能超过99
{
if(5*a+3*b+c/3.0==100&&a+b+c==100)
{
n++
cout<<"第"<<n<<"种情况"<<endl;
cout<<"鸡翁="<<a<<"\t\t"<<"鸡母="<<b<<"\t\t"<<"雏鸡="<<c<<"\t\t"<<endl;
cout<<"\a"; //最近喜欢用这个响铃的语句
}
}
}
}
return 0;
}
输出:
作业三 (参考光荣榜的)
#include<iostream>
using namespace std;
int main()
{
long int a,i;
int k=0,h,m=0;
cout<<"输入一个整型数:";
cin>>a;
for(i=10;;i=i*10) //分号不能省略
{
k++;
if(a<i)
break;
}
cout<<"位数:";
cout<<k<<endl;
cout<<"输出各位数值:";
while(i>1)
{
i=i/10;
h=a/i;
a=a%i;
m+=h;
cout<<h<<' ';
}
cout<<endl;
cout<<"各个位的数值和:"<<m<<endl;
return 0;
}
输出:
/*********************************
** 求任意点所在位置的建筑物高度**
**********************************/
#include<iostream>
using namespace std;
int main()
{
double x,y;
cout<<"请输入x的值"<<endl;
cin>>x;
cout<<"请输入y的值"<<endl;
cin>>y;
if((x-2)*(x-2)+(y-2)*(y-2)<=1
||(x+2)*(x+2)+(y-2)*(y-2)<=1
||(x+2)*(x+2)+(y+2)*(y+2)<=1
||(x-2)*(x-2)+(y+2)*(y+2)<=1) //判断输入的点是否落在四个圆柱的范围内
cout<<"该点处的建筑物高度为10米"<<endl;
else
cout<<"该点处的建筑物的高度为0米"<<endl;
return 0;
}
输出:
作业五 求1!+2!+...+n!之和
/*******************************
**** 求1!+2!+3!+....+n!之和****
********************************/
#include<iostream>
using namespace std;
int main()
{
int sum,fact,i,j,n;
sum=0;
cout<<"输入一个整数:"<<endl;
cin>>n;
for(i=1;i<=n;i++)
{
fact=1; //累乘变量fact初值赋为1
for(j=1;j<=i;j++)
fact*=j; //fact=fact*j
sum+=fact; //sum+sum=fact
}
cout<<"sum="<<sum<<endl;
return 0;
}
输出: