C上机作业答案

  • 格式:doc
  • 大小:69.50 KB
  • 文档页数:37

学而不思则惘,思而不学则殆

第一章作业答案.

1. 编写程序,将华氏温度转化为摄氏温度:公式:C=(5/9)*(F-32)

程序代码:

#include

using namespace std;

void main()

{float F,C;

cout<<"Please input F:";

cin>>F;

C=5*(F-32)/9.0;

cout<<"C="<

}

运行结果:

2.编写程序,输入圆柱体的半径r和高h,计算圆柱体的体积。

程序代码:

#include

using namespace std;

#define PI 3.14159

void main()

{float r,h,v; 学而不思则惘,思而不学则殆

cout<<"Please input r h:";

cin>>r>>h;

v=PI*r*r*h;

cout<<"v="<

}

运行结果:

3.输入三角形的三条边a,b,c,利用海伦公式计算三角形的面积area.

若 则area=

程序代码:

#include

#include

using namespace std;

void main()

{float a,b,c,p,area;

cout<<"Please input a b c:";

cin>>a>>b>>c;

if((a+b>c)&&(b+c>a)&&(a+c>b))

{p=(a+b+c)/2.0;

area=sqrt(p*(p-a)*(p-b)*(p-c));

cout<<"area="<

}

else cout<<"input error!"<

}

运行结果:

4.输入a,b,c的值,求一元二次方程:

的解。

程序代码:

#include

#include

using namespace std;

void main()

{float a,b,c,p,x1,x2;

cout<<"Please input a b c:";

cin>>a>>b>>c;

p=b*b-4*a*c;

if(p>=0)

{x1=(-b+sqrt(p))/(2*a);

x2=(-b-sqrt(p))/(2*a);

cout<<"x1="<

cout<<"x2="<

}

else cout<<"NO real root!";

}

运行结果 学而不思则惘,思而不学则殆

第二章作业答案

1. 输入一个整数,计算该数的阶乘。

程序代码:

#include

using namespace std;

void main()

{int i,n,p=1;

cin>>n;

for(i=1;i<=n;i++)

p=p*i;

cout<

}

运行结果:

2. 连续输入若干个整数,输入0结束。统计其正整数的个数,并计算其中正整数的总和、平均值并输出。

程序代码:

#include

using namespace std;

void main()

{int a,n=0; 学而不思则惘,思而不学则殆

float avg,sum=0;

do

{cin>>a;

if(a>0){n++;sum+=a;}

}while(a!=0);

avg=sum/n;

cout<<"n="<

cout<<"avg="<

cout<<"sum="<

}

3. 输出所有的水仙花数。所谓“水仙花数”是一个三位数,其各位数字的立方和等于该数本身。如153=13+53+33

程序代码:

#include

using namespace std;

void main()

{int a,b,c,n;

for(n=100;n<1000;n++)

{a=n%10;

b=n%100/10;

c=n/100; 学而不思则惘,思而不学则殆

if(n==a*a*a+b*b*b+c*c*c)

cout<

}

}

运行结果:

第三章作业答案

1. 编写程序输出两个数的最大公约数和最小公倍数。

2. 计算100---300之内所有素数的和。

3. 计算s=1-1/3+1/5-1/7+…1/99

4. N是一个四位数,它的9倍恰好是其反序数(例如:123的反序数是321),求N的值。

第一题:

程序代码:

//用辗转相除法求最大公约数;

#include

using namespace std;

void main()

{int m,n,r,temp;

cin>>m>>n;

temp=m*n;

while(r=m%n) 学而不思则惘,思而不学则殆

{m=n;

n=r;

}

cout<<"最大公约数="<

cout<<"最小公倍数="<

}

运行结果:

第二题:

程序代码:

#include

using namespace std;

void main()

{int n,i,s=0;

for(n=100;n<300;n++)

{for(i=2;i

if(n%i==0)break;

if(i==n)s+=n;

}

cout<<"s="<

}

运行结果:

第三题: 学而不思则惘,思而不学则殆

程序代码:

#include

using namespace std;

void main()

{int n=1;

float s=0,f=1,p;

for(n=1;n<100;n+=2)

{p=f/n;

s=s+p;

f=-f;

}

cout<<"s="<

}

运行结果:

第四题:

程序代码:

#include

using namespace std;

void main()

{int n,a,b,c,d; 学而不思则惘,思而不学则殆

for(n=1000;n<10000;n++)

{a=n/1000; //千位

b=n%1000/100;//百位

c=n%100/10; //十位

d=n%10; //个位

if(9*n==d*1000+c*100+b*10+a)

cout<

}

}

运行结果:

第四次作业答案

1. 编写两个函数,分别计算两个整数的最大公约数和最小公倍数,并在主函数中调用该函数,并输出结果。

2. 编写一个判断素数的函数,函数原型为: int isprime(int n),在主函数中调用该函数,计算100—1000之间所有素数的和。

3. 编写一个函数,f(n)= ,并在主函数中输出f(10)的值。

(说明自然对数 ln的函数原型为 double log(float x) .

4. 编写一个计算阶乘的函数,函数原型为 int fac(int n),在主函数中调用该函数,计算:

S=M!+N! .

第一题: 学而不思则惘,思而不学则殆

程序代码:

#include

using namespace std;

//求最大公约数

int gcd(int m,int n)

{int r;

while(r=m%n)

{

m=n;n=r;

}

return n;

}

//求最小公倍数

int lcd(int m,int n)

{return m*n/gcd(m,n);

}

void main()

{int a,b;

cin>>a>>b;

cout<<"最大公约数为:"<

cout<<"最小公倍数为:"<