文档详情

实验和实验程序设计的三种基本结构(第次实验第周)分析.doc

发布:2016-06-09约5.83千字共17页下载文档
文本预览下载声明
完成下面实验内容,将程序清单或运行结果截图复制到实验文档中,以“学号+姓名+班级+实验2.doc”命名实验文档,将文档上传至课程中心。 实验目的 理解算法和结构化程序设计的基本概念 掌握if,switch分支语句的使用 掌握while语句,do…while语句,for语句的功能。 掌握用循环结构实现累加、累乘、穷举等常用算法。 掌握在循环结构程序中使用break语句和continue语句。 锻炼调试程序的能力。 二、实验内容和实验要求 按实验指导书P148至P154的要求,完成实验3的实验内容及自测练习;按实验指导书P155至P160的要求,完成实验4的实验内容及自测练习。 1. P148-练习题1 ⑴ 已知三条边a、b、c ⑵ 要求 在C++中用标准函数sqrt计算平方根,此函数包含在math.h头文件中。 ⑶ 思路 该程序用到了C++中的数学标准函数sqrt。要用编译预处理命令#include,把math头文件包含进来。用cin输入流控制将三条边长输入给a、b、c ⑷ 程序代码 #include iostream 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; } ⑸运行结果截图: 思考题及问题: ① 将程序中的“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));”,再进行编译、链接、运行,看结果如何。 ③分析题目中,若输入(3、6、10)运行时有什么样的缺陷?修改程序保证任意输入的a,b,c的3个值均能代表三角形的三条边,求三角形的面积。 ④在③的基础上,若想求10个这样三角形的面积,怎么修改程序。 2. P150-练习题3 ⑴ 编程序,计算下面分段函数的值。 2x+10 (x0) y= 8x+5 (0≤x≤10) 4x-10 (x10) ⑵ 要求 ① 用键盘输入x的值。 ② 运行程序时,分别按x的值小于0、x的值在0到10之间、x的值大于10三种情况输入数据,检查输出的y值是否正确。 ⑶ 思路 该程序根据输入数据x的值不同,计算不同的函数表达式,并输出计算结果,显然需要采用分支结构实现,由于此分段函数只有3种情况,故可以采用if~else if~else多分支语句实现。如果情况比较多,如5种以上的情况,建议采用switch语句实现。 ⑷ 程序代码 #include iostream using namespace std; int main() { int x,y; cout 输入x的值:; cin x ; if(x0) y=x+10; else if(x=10) y=8*x+5; else y=4*x-10; cout x= x , y= y endl; return 0; } ⑸运行结果截图: 思考题及问题: 判断x的值在0~10之间可否使用表达式“0=x=10”?为什么?正确的表示方法是什么? 3. P150-练习题4 ⑴ 输入并运行以下程序,分析程序的运行结果。 #include iostream using namespace std; int main() { float x,y; x=2.2; y=x/2.0; y=y*2.0; if (y==2.2) cout x==y endl; if (x=y) cout 这是一个逻辑错误! endl; return 0; } ⑵运行结果截图: 思考题及问题: ① 为什么该程序的运行结果是输出“这是一个逻辑错误!”? ② 将“if (y==2.2)”改为“if (fabs(y-2.2)1e-6)”,然后运行程序,查看结果,结果如下: ③ 该程序中的“if(x=y)”到底要表达何意?请改成正确的形式。修改后的程序代码及运行结果如下: 4. P153-练习题6 运行结果截图: 思考题及问题: ① 本程序所给代码
显示全部
相似文档