已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
e652cabed6a96c5d07a7d64210c00d1b.pdf (匡珍春制作)实验五 循环结构程序设计(4学时)实验前必须做的操作新建文件夹:1、先在对应的K:盘上建立一个父文件夹(用来存放本人整个学期的作业),格式为:“专业+班级+学号+姓名”,如:航海1091班、学号为05的匡珍春同学,其父文件夹名称为:航海109105匡珍春,然后在此父文件夹下建立子文件夹,名称为:实验5(用来存放实验5需要上交的文件)。2、在E:盘上建立一个以本人姓名为名称的文件夹(本次实验的工作文件夹),例如:E:匡珍春【实验目的】1、 掌握循环结构程序设计的基本思想。2、 理解循环结构程序段中语句的执行过程。3、 了解goto语句和if语句构成循环的设计方法。4、 掌握用for、while、do-while语句实现循环(一重循环和多重(重点是双重)循环)程序设计。5、 掌握for、while、do-while三种循环的区别和联系及它们之间的灵活转换。6、 在程序设计过程中实现一些常用算法。7、 进一步练习程序的跟踪调试技术,掌握运行到光标处的调试方法。8、 巩固利用VC+对C程序的查错方法,进一步提高修改程序错误的能力。【实验内容】实验任务一:程序运行到光标处的跟踪调试和变量值的监视练习程序跟踪调试实例5-1:程序运行到光标处的跟踪调试和变量值的监视示例(请仔细按以下各步骤进行操作):编程计算表达式“1 + 2 + 3 + + 100”的值。(需要存盘)源程序(有错误的程序)运行结果(改正后程序的运行结果)sum = 5050【操作步骤】:(1)输入源程序,并以error5_1.c文件名最终保存在实验5文件夹里,然后执行“编译/Build”“编译/Compile”,出现第一个错误信息是:双击该错误信息,箭头指向”for”这一行,错误信息指出在for语句的右圆括号前面缺少分号,根据所学知识可知for语句括号里面应使用分号“;”,对for语句括号里面进行仔细分析,发现把“;”写成了“,”。把“,”改为“;”后,重新编译并连接,都正确。(2)开始调试,若调试工具栏不可见,采用实验四介绍的方法,调出该工具栏(见实验四图4.2所示)。(3)鼠标单击第6行,光标就在第六行前面闪烁,这就是当前的光标位置(如图5.1所示)。光标位置图5.1 光标在程序中位置(4)单击(Run to Cursor(Ctrl+F10)),程序运行到光标的位置(如图5.3所示)。 此过程中,出现图5.2 “生成可执行文件”的对话框时,选“是(Y)”按钮。图5.2 生成“error5_1.exe”文件在变量窗口中,第一次循环时i的值为1,正确,而sum的值是-858993460,不正确。仔细分析程序,发现sum没有赋初值。在for语句前面加一条语句sum = 0;,重新编译、连接,然后重做(3)和(4),图5.4显示sum的值为0,正确。图5.3 程序运行到光标的位置图5.4 程序运行到光标的位置,观察“sum”的值(5)把光标设在“”的前面,鼠标单击,程序运行到光标处“”的前面(如图5.5所示),变量窗口中,sum的值是5050,正确。(6)鼠标单击终止调试图标(Stop Debugging(Shaft+F5)),程序调试结束。图5.5 程序运行到光标的位置,观察最后“sum”的值程序跟踪调试实例5-2:改错:计算下列表达式的值(保留2位小数)。将程序以error5_2.c文件名最终保存在实验5文件夹里。(需要存盘)y = 1 / ( 1 * 3) + ( 1 * 3 ) / ( 2 * 4 ) + ( 2 * 4 ) / ( 3 * 5 ) + + ( 8 * 10 ) / ( 9 * 11 )输入输出示例:Input n: 10y = 6.46提示:(1)模仿示例,采用运行到光标(Run to Cursor(Ctrl+F10))调试程序,并观察变量值的变化。(2)注意整数与整数相除的情况。源程序(有错误的程序不是语法错误,而是算法错误或逻辑错误)程序跟踪调试实例5-3:下面程序的功能是计算n!。输入下面程序,并以factor.c文件名最终保存在实验5文件夹里。(需要存盘) 多次运行程序,每次改变n的值(从小到大,如4,7,10,20等等),思考哪些结果是正确的,n的值为多少时,输出了错误的结果? 如20!=-2102132736,这显然是错误的,为什么?为了找到程序的错误,可以通过单步执行来观察变量的变化。分析产生这种现象的原因,把程序改正过来,并保存,再用n=20进行实验,分析所得到的结果。 实验任务二:补充完整程序,灵活掌握用C语言中的循环语句解决问题的方法。 注意:这里提供了以填空的形式出现源程序参考清单,目的是给同学们一个思路。最好不要将此源程序清单复制到VC+中,否则会出现多处语法错误。同学们可以据此思路来填写有关语句,从而完成程序。 在调试程序时,一定要运用前面学过的方法。程序填空实例5-1:编一个C程序,计算并输出数列:1、3、5、2n-1、的前n项之和,其中的n由键盘输入。(要求分别用for、while、do-while语句来完成) 方法一:用for语句实现 (以for_c.c为文件名最终保存在实验5文件夹里)方法二:用while语句实现 (以while_c.c为文件名最终保存在实验5文件夹里)方法三:用do while语句实现 (以do_while.c为文件名最终保存在实验5文件夹里) 程序填空实例5-2:以下两个程序的功能均是:求出200以内的整数中能同时被3和7整除的最大数。请填空,并调试验证结果。(需要存盘)1) 解法一:将填空后完整的程序以文件名为aliquot1.c保存在实验5文件夹里。2)解法二:将填空后完整的程序以文件名为aliquot2.c保存在实验5文件夹里。程序填空实例5-3:以下程序打印如下图案,程序运行后,输入4给变量n,请填空。【说明】:该程序完成的功能只是打印“*”图案,图中的“10个空格”字样是说明第四行的第一个“*”离屏幕的第一列之间的距离有10个空格。将填空好的完整程序以文件名diamond.c最终保存在实验5文件夹里。程序填空实例5-4:以下程序用“辗转相除法”来求出两个正整数的最大公约数,请填空。若两个数分别放在变量m和n中,求最大公约数的算法如下:(需要存盘) 将两数中大的那个放在m中,小的放在n中; 求出m被n除后的余数r; 若余数为0则执行步骤;否则执行步骤; 把除数作为新的被除数;把余数作为新的除数; 求出新的余数r; 重复步骤到; 输出n,n即为最大公约数。将填空后完整的程序以文件名为divissor.c最终保存在实验5文件夹里。程序填空实例5-5:求出100以内的整数中最大的可被13整除的数是哪一个数。(需要存盘)将填空好的完整程序以文件名保存为aliquot3.c最终保存在实验5文件夹里。实验任务三:掌握for、while、do-while三种循环的区别和联系及它们之间的灵活转换。编程实例5-1:将下面用for循环实现的程序改为while循环结构和do-while循环结构。并将改写好的程序依次以文件名while2.c和until.c最终保存在实验5文件夹里。(需要存盘)【程序清单:】该程序的功能是:在一行内输出整数1到20,并连续输出5行。该程序的运行结果是:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 201 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 201 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 201 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 201 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20编程实例5-1:以下程序完成的功能是输出如右图所示的图形:程序清单: 程序运行结果: 请编写两个程序分别输出下列两个图形:将编写好的程序以文件名为picture1.c最终保存在实验5文件夹里。(需要存盘)数字之间有一个空格将编写好的程序以文件名为picture2.c最终保存在实验5文件夹里。(需要存盘) 实验任务四:熟悉设计分支结构程序的方法,灵活应用各种循环语句。设计程序实例5-1:有1、3、5、7四个数字,能组成多少个互不相同且无重复数字的三位数?分别是几?要求每行输出6个数。(需要存盘)将编写好的程序以文件名保存为zuhe.c保存在你刚才新建好的文件夹里。设计程序实例5-2:用for循环和逗号运算符输出下列字符串: (需要存盘)a z b y c x d w e v f u g t h s i r j q k p l o m n 将编写好的程序以文件名为comma.c最终保存在实验5文件夹里。设计程序实例5-3:一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。将编写好的程序以文件名保存为traffic.c最终保存在实验5文件夹里。(需要存盘)【提示】: 因为牌照的前两位数字与后两位数字不相同,假设用i(i从0取到9)代表前两位,用j(j从0取到9)代表后两位,假设用k代表车牌号,则有k=i*1000+i*100+j*10+j,且满足条件ij; 根据目击者丙的说法,由于车牌号刚好是一个数的平方,而11,22,33,44,55,66,77,88,99这些数都不可能是某一个数的平方,因此可得出车牌号前两位不可能是0,也就是说i的取值应该是在19之间。 该题的求解算法应该用穷举法,即求出下列99个数中哪个数刚好是某一个数的平方。1100,1122,1133,1144,1155,1166,1177,1188,11992200,2211,2233,2244,2255,2266,2277,2288,22993300,3311,3322,3344,3355,3366,3377,3388,3399。9900,9911,9922,9933,9944,9955,9966,9977,9988如何得出以上99个数,同时将它的值赋给k,可用以下语句实现: for(i=1; i=9; i+) /* i代表车牌的前两位 */ for(j=0; j=9; j+) /* j代表车牌的后两位 */ if (i!j) k=i*1000+i*100+j*10+j; 要判断k是某一个数(假设是m)的平方,应该用以下语句实现:for(m=1; m*mk; m+) if(m*m=k) printf(the correct number is %d!n, k); 因为k的最小值是1100,而30的平方是900(1100),所以为了提高程序运行效率,减少循环次数,m的循环初值应该设为31开始。设计程序实例5-4:数字魔方。要求:从键盘输入m,输出m行的数字方阵。例:输入m=5,输出的图形如下:(需要存盘)将编写好的程序以文件名为magic.c最终保存在实验5文件夹里。【提示】: 因为m是从键盘上输入的,所以应该用scanf(“%d”,&m); 由于循环次数是固定的,即外循环m次,内循环也是m次,所以建议用for循环来实现; 假设用i控制行标,用j控制列标,则魔方矩阵m中的第i行第j列元素的值可表示成如下形式:(i+j-2)%m+1设计程序实例5-5:猜数游戏 在这个实验中,我们将尝试编写一个猜数游戏程序,这个程序看上去有些难度,但是如果按下列要求循序渐进地编程实现,会发现其实这个程序是很容易实现的。那么,现在就开始吧,先编写第1个程序,然后试着在第1个程序的基础上编写第2个程序,程序1 编程先由计算机“想”一个1100之间的数请人猜,如果人猜对了,则计算机给出提示“Right!”,否则提示“Wrong!”,并告诉人所猜的数是大(Too high)还是小(Too low),然后结束游戏。要求每次运行程序时机器所“想”的数不能都一样。(将编写好的程序以guess1.c为文件名最终保存在实验5文件夹里)程序2 编程先由计算机“想”一个1100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。(将编写好的程序以guess2.c为文件名最终保存在实验5文件夹里)程序3 编程先由计算机“想”一个1100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,结束游戏。(将编写好的程序以guess3.c为文件名最终保存在实验5文件夹里)程序4 编程先由计算机“想”一个1100之间的数请人猜,如果人猜对了,在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。每次运行程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 胆囊切除术后综合征的护理
- 雨课堂学堂在线学堂云《财务管理( 河南)》单元测试考核答案
- 高考化学“3+2”模拟练试卷含答案(十五)
- 固态电池应用探索-周安健-深蓝科技
- 2026广西桂林荔浦市人民医院人才招聘70人历年真题汇编及答案解析(夺冠)
- 2025重庆医科大学附属儿童医院中医治疗师招聘2人历年真题库带答案解析
- 2026福建泉州市选优生选拔引进历年真题汇编附答案解析
- 2026年陕西省选调生招录(面向中国科学技术大学)历年真题汇编带答案解析
- 2025广东广州天河区同仁艺体实验中学招聘英语教师1人备考题库附答案解析
- 2026年延安东辰中学全科教师招聘历年真题汇编附答案解析
- 公路工程风险管控措施清单
- MOOC 理解马克思-南京大学 中国大学慕课答案
- 观看课件:吹灰系统巡检
- 肺结核咯血的护理查房
- 教学设计指导案例
- 监控租赁方案
- 招飞面试问题及答案
- 年处理10万吨钢渣粒子钢压块生产线项目环评报告
- 形容词比较级和最高级课件
- 业财融合背景下的管理会计研究
- ISO9001质量管理体系标准讲解
评论
0/150
提交评论