第三次实验

  • 格式:doc
  • 大小:201.50 KB
  • 文档页数:9

实验3:顺序结构和分支结构程序设计

第一部分 教程练习: 掌握顺序结构和选择结构,以及C++程序实现;

1. 已知三条边a、b、c,求三角形面积。计算三角形面积的海伦公式, 将分析结果写在word文档教程练习1.doc

))()((csbsassarea

)(21cbas

 要求:在C++中用标准函数sqrt计算平方根,此函数包含在cmath头文件中。

 思考题及问题

① 将程序中的“s =1.0/2*(a+b+c) ;”语句改为“s =1/2*(a+b+c) ;”,再进行编译、连接、运行,看结果如何?

②将程序中的“area = sqrt(s*(s-a)*(s-b)*(s-c)) ; ”语句改为“area =

sqrt(s*(s-a)*(s-b)*(s-c)) ; ” ,再进行编译、连接、运行,看结果如何?

Step by step教程

2.编程序,计算下面分段函数的值。将思考题分析结果以注释的形式写在程序中。

2x+10 (x<0)

y= 8x+5 (0≤x≤10)

4x-10 (x>10)

 要求

① 用键盘输入x的值。

② 运行程序时,分别按x的值小于0、x的值在0到10之间、x的值大于10三种情况输入数据,检查输出的y值是否正确。

 思考题及问题

判断x的值在0和10之间可否使用表达式“0<=x<=10”?为什么?正确的表示方法是什么?

Step by step教程

3.求一元二次方程ax2+bx+c=0的根。将思考题分析结果以注释的形式写在程序中。

aacbbx2422,1

 要求 上机实验指导

① 用键盘输入a、b、c的值。

② 运行程序时,分别按判别式的值大于0、判别式的值等于0判别式的值0三种情况输入数据,检查输出的根是否正确。

Step by step教程

4.编程计算图形的周长。程序可计算圆形、长方形、正方形的周长,运行时先提示用户选择图形的类型,然后,对圆形要求用户输入半径值,对长方形要求用户输入长和宽的值,对正方形要求用户输入边长的值,计算出周长的值后将其显示出来。

 要求:使用debug调试功能观察任务3程序运行中变量值的变化情况。

Step by step教程

第二部分 自测练习

1.自测练习一

计算机完成一项复杂的数学计算需要40 000s,编写程序,将其转换成几小时几分几秒的表示形式。

2.自测练习四

设整型变量a、b、c、d分别存放从键盘输入的4个整数。编写C++程序,按从大到小排列这4个数,使a成为最大值,d成为最小值,并且按序输出这4个数。

3. 身高预测

每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后的身高的因素包括遗传、饮食习惯与体育锻炼等。小孩成人后的身高与其父母的身高和自身的性别密切相关。

设faHeight为其父身高,moHeight为其母身高,身高预测公式为

男性成人时身高=(faHeight + moHeight)×0.54cm

女性成人时身高=(faHeight×0.923 + moHeight)/2cm

此外,如果喜爱体育锻炼,那么可增加身高2%;如果有良好的卫生饮食习惯,那么可增加身高1.5%。

编程从键盘输入用户的性别(用字符型变量sex存储,输入字符F表示女性,输入字符M表示男性)、父母身高(用实型变量存储,faHeight为其父身高,moHeight为其母身高)、是否喜爱体育锻炼(用字符型变量sports存储,输入字符Y表示喜爱,输入字符N表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量diet存储,输入字符Y表示良好,输入字符N表示不好),利用给定公式和身高预测方法对身高进行预测。 C语言大学实用教程学习指导 ·138·

4. 简单的计算器

用switch语句编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:

操作数1 运算符op 操作数2

计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。

本实验程序是在例4.8的基础上,增加如下要求:

(1)如果要求程序能进行浮点数的算术运算,程序应该如何修改?如何比较实型变量data2和常数0是否相等?

(2)如果要求输入的算术表达式中的操作数和运算符之间可以加入任意多个空白符,那么程序如何修改?

(3)(选作题)如果要求连续做多次算术运算,每次运算结束后,程序都给出提示:

Do you want to continue(Y/N or

y/n)?

用户输入Y或y时,程序继续进行其他算术运算;否则程序退出运行状态。那么,程序如何修改?

【思考题】比较实型变量data2和常数0是否相等,能用if (data2 == 0)吗?为什么?

1. (1) 思路:

该程序用到了C++中的数学标准函数sqrt。要用编译预处理命令#include,把cmath头文件包含进来。用cin输入流控制将三条边长输入给a、b、c 三个变量。计算后用cout输出流控制将面积输出。

(2) 程序代码

#include

using namespace std;

#include "cmath"

int main()

{

int a,b,c;

float s,area ;

cout << "输入三个边长:";

cin >> a >> b >> c;

s =1.0/2*(a+b+c) ;

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

cout << "area = " << area << endl;

return 0;

} 上机实验指导

(3) 运行结果

2. (1) 思路

该程序根据输入数据x的值不同,计算不同的函数表达式,并输出计算结果,显然需要采用分支结构实现,由于此分段函数只有3种情况,故可以采用if~else if~else多分支语句实现。如果情况比较多,如5种以上的情况,建议采用switch语句实现。

(2) 程序代码

#include

using namespace std;

int main()

{

int x,y;

cout << "输入x的值:";

cin >> x ;

if(x<0)

y=x+10;

else if(x<=10)

y=8*x+5;

else

y=4*x-10;

cout << " x= " << x << ", y= " << y << endl;

return 0;

}

(3) 运行结果

3. (1)思路

一元二次方程的根取决于系数a,b,c,求根公式:

aacbbx2422,1

判别式d = b2- 4ac :

① 当 d = 0时,方程有两个相等的实根: C语言大学实用教程学习指导 ·140·

x1=x2=-b/(2*a)

② 当d > 0时,方程有两个不相等的实根:

x1=(-b+sqrt(d))/(2*a)

x2=(-b-sqrt(d))/(2*a)

③ 当d < 0时,方程有两个虚根:

x1=jp+ipi

x2=jp-ipi

其中:实部 jp=-b/(2*a),虚部 ip=sqrt(-d)/(2*a)。

(2) 程序代码

#include

#include

using namespace std;

int main()

{ float a,b,c,d,x1,x2,lp,ip;

cin >> a >> b >> c;

if (fabs(a)<1e-6)

cout <<"is not quadratic" << endl;

else

{ d=b*b-4*a*c;

if (fabs(d)<=1e-6) // 相等的实根

{ cout << "has two equal roots:\n";

x1=x2=-b/(2*a);

cout << "x1=x2=" << x1 << endl;

}

else if (d>1e-6) // 不相等的实根

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

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

cout << "has two real roots:\n" ;

cout << "x1=" << x1 << ",x2=" << x2 << endl;

}

else // 虚根

{ lp=-b/(2*a);ip=sqrt(-d)/(2*a);

cout << "has two complex roots: \n";

cout << "x1= " << lp << "+" << ip << "i\n";

cout << "x2= " << lp << "-" << ip << "i\n";

}

}

return 0; 上机实验指导

}

(3) 运行结果

① 当 d = 0时

② 当d > 0时

③ 当d < 0时

4.

1. 建立项目lab3_3,计算图形的周长。圆形的周长计算公式为C=2*r *PI,长方形的周长计算公式为C=2*(a+b),正方形的周长计算公式为C=4*a。程序中定义一个整型变量graphicType表示图形的类型,用cout语句提示用户选择图形的类型,用cin读入graphicType的值,然后,使用switch语句判断图形的类型,分别提示用户输入需要的参数值,计算出周长值后用cout语句显示出来。最后,编译运行程序。

2. 学习简单的debug调试功能,参考程序如下

#include

const float PI = 3.1416;

void main()

{

int graphicType;

float radius, a, b, perimeter;

cout << "请选择图形的类型 (1-圆形 2-长方形 3-正方形) :";

cin >> graphicType; //在此行设置断点

switch(graphicType)

{

case 1:

cout << "请输入圆的半径为:";

cin >> radius;

perimeter = PI * 2 * radius;

cout<<"圆"<< radius <<"的周长为:"<< perimeter <

break;

case 2: