实验和实验程序设计的三种基本结构第次实验第周资料.docx
- 文档编号:16735873
- 上传时间:2023-07-16
- 格式:DOCX
- 页数:17
- 大小:39.79KB
实验和实验程序设计的三种基本结构第次实验第周资料.docx
《实验和实验程序设计的三种基本结构第次实验第周资料.docx》由会员分享,可在线阅读,更多相关《实验和实验程序设计的三种基本结构第次实验第周资料.docx(17页珍藏版)》请在冰点文库上搜索。
实验和实验程序设计的三种基本结构第次实验第周资料
完成下面实验内容,将程序清单或运行结果截图复制到实验文档中,以“学号+姓名+班级+实验2.doc”命名实验文档,将文档上传至课程中心。
一、实验目的
1、理解算法和结构化程序设计的基本概念
2、掌握if,switch分支语句的使用
3、掌握while语句,do…while语句,for语句的功能。
4、掌握用循环结构实现累加、累乘、穷举等常用算法。
5、掌握在循环结构程序中使用break语句和continue语句。
6、锻炼调试程序的能力。
二、实验内容和实验要求
按实验指导书P148至P154的要求,完成实验3的实验内容及自测练习;按实验指导书P155至P160的要求,完成实验4的实验内容及自测练习。
1.P148-练习题1
⑴已知三条边a、b、c,求三角形面积。
计算三角形面积的海伦公式:
⑵要求
在C++中用标准函数sqrt计算平方根,此函数包含在math.h头文件中。
⑶思路
该程序用到了C++中的数学标准函数sqrt。
要用编译预处理命令#include,把math头文件包含进来。
用cin输入流控制将三条边长输入给a、b、c三个变量。
计算后用cout输出流控制将面积输出。
⑷程序代码
#include
usingnamespacestd;
#include"cmath"
intmain()
{
inta,b,c;
floats,area;
cout<<"输入三个边长:
";
cin>>a>>b>>c;
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
cout<<"area="<
return0;
}
⑸运行结果截图:
思考题及问题:
将程序中的“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(x<0)
y=8x+5(0≤x≤10)
4x-10(x>10)
⑵要求
①用键盘输入x的值。
②运行程序时,分别按x的值小于0、x的值在0到10之间、x的值大于10三种情况输入数据,检查输出的y值是否正确。
⑶思路
该程序根据输入数据x的值不同,计算不同的函数表达式,并输出计算结果,显然需要采用分支结构实现,由于此分段函数只有3种情况,故可以采用if~elseif~else多分支语句实现。
如果情况比较多,如5种以上的情况,建议采用switch语句实现。
⑷程序代码
#include
usingnamespacestd;
intmain()
{
intx,y;
cout<<"输入x的值:
";
cin>>x;
if(x<0)
y=x+10;
elseif(x<=10)
y=8*x+5;
else
y=4*x-10;
cout<<"x="< return0; } ⑸运行结果截图: 思考题及问题: 判断x的值在0~10之间可否使用表达式“0<=x<=10”? 为什么? 正确的表示方法是什么? 3.P150-练习题4 ⑴输入并运行以下程序,分析程序的运行结果。 #include usingnamespacestd; intmain() { floatx,y; x=2.2; y=x/2.0; y=y*2.0; if(y==2.2) cout<<"x==y"< if(x=y) cout<<"这是一个逻辑错误! "< return0; } ⑵运行结果截图: 思考题及问题: 为什么该程序的运行结果是输出“这是一个逻辑错误! ”? 将“if(y==2.2)”改为“if(fabs(y-2.2)<1e-6)”,然后运行程序,查看结果,结果如下: 该程序中的“if(x=y)”到底要表达何意? 请改成正确的形式。 修改后的程序代码及运行结果如下: 4.P153-练习题6 运行结果截图: 思考题及问题: 本程序所给代码中的switch语句没有default语句可以吗? default语句应该在switch语句的什么位置? 本程序所给代码中,最后一个case语句中没有break正确吗? 请解释。 5.P155-练习题1 读程序、分析程序的结果: 运行结果截图: 思考题及问题: 答案: ①将程序中的“sum=0;”语句去掉可以吗? ②将while循环语句改为do-while循环语句。 6.P156-练习题2 读程序、分析程序的结果: 测试数据184和36 运行结果截图: 思考题及问题: 答案: 将 if(m {r=m; m=n; n=r; } 去掉,分别按m的值小于n的值情况输入数据,程序运行结果如下: 分别输入m或n的值为负数,程序运行结果如下: 为什么在用辗转相除法求最大公约数时,输出结果是m,而不是r。 试将辗转相除法中的do-while循环语句,改为while循环语句实现。 程序如下: 7.P153-练习题4 运行结果截图: 思考题及问题: 答案: ①如果输出10行的图形,应如何修改程序? 程序代码如下: ②如果输出图形向右平移25个字符位置,程序应该如何实现? 程序代码如下: 如果需将输出的两个图形并排打印,程序应如何实现? 以输出图 和图 为例,应输出以下图形。 (此题选做! ) 二、自测练习 (P154: 1、2、3、6必做,4、5选做;P160: 1、2、3、4必做,5选做) 注意: 解决问题的思路可以用文字描述,把解决问题的过程、步骤写出来即可,培养大家思考的习惯,逐步锻炼编程能力。 1.自测练习一 计算机完成一项复杂的数学计算需要40,000s,编写程序,将其转换成几小时几分几秒的表示形式。 源程序文本: 运行结果截图: 2.自测练习二 输入三个边长,判断它们是否能构成三角形,如果不能,输出提示信息;否则判断它是直角、等边、等腰或普通三角形 提示: 1)构成三角形的条件是: 任意两边之和大于第三边。 设三边为a、b和c,则条件为: (a+b)>c&&(a+c)>b&&(b+c)>a 2)直角三角形条件: a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a 3)等边三角形条件: a==b&&b==c 4)等腰三角形条件: a==b||a==c||b==c 源程序文本: 运行结果截图: 3.自测练习三 编写一个程序,从键盘输入圆锥体的半径r和高度h,计算其体积。 (可参考练习题2) 源程序文本: 运行结果截图: 4.自测练习四 从键盘输入一个小于六位的正整数,判断它是几位数,并按照相反的顺序输出各位上的数字,例如输入2468,输出为8642。 提示: 利用/和%运算符依次获取各位上的数字。 设正整数为x,则个位上的数字为: x%10,而十位上的数字为: x/10%10,而百位上的数字为: x/100%10,而千位上的数字为: x/1000%10,….. 源程序文本: 运行结果截图: 5.自测练习五 设整型变量a、b、c、d分别存放从键盘输入的4个整数。 编写C++程序,按从大到小排列这4个数,使a成为最大值,d成为最小值,并且按序输出这4个数。 提示: 1)首先使a成为最大值。 依次将a与b、c、d进行比较,若a小于它们,则交换它们的值。 2)使b成为第二大值。 依次将b与c、d进行比较,若b小于它们,则交换它们的值。 3)使c成为第三大值。 将c与d进行比较,若c小于d,则交换它们的值。 按序输出a,b,c,d。 源程序文本: 运行结果截图: 6.自测练习六 输入某学生的考试成绩,如果在90分以上,输出“优秀”;80~89分输出“良好”;70~79分输出“中等”;60~69分输出“及格”;60分以下输出“不及格”。 提示: 1)方法一,利用if-else语句 2)方法二,利用switch语句,需注意switch语句中的case只能是常整型。 因此若假设考试成绩grade一定为整型,可使用语句: switch(grade/10) {case9: … case8: … …… } 源程序文本: 运行结果截图: 7.自测练习7 P147的自测练习题1: 输入并运行以下程序,分析程序的运行结果。 #include usingnamespacestd; intmain() { inta=5; doublex=0.0; floatf=10; charc=’\141’;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 程序设计 基本 结构 资料
![提示](https://static.bingdoc.com/images/bang_tan.gif)