1、一、实验目的与要求:实验目的:1理解结构化程序设计方法的循环结构;2掌握用for语句实现循环结构;3掌握用while、dowhile语句实现循环结构;4理解for、while、dowhile三者的区别;5掌握转向语句break、continue;6掌握上机调试的方法。实验要求:1输入数据、输出数据应加以说明(交互性);2程序应注意使用注释语句(可读性);4对各种可能的输入情况都要考虑处理方案(健壮性);5熟悉for、while、dowhile、break、continue语法。6在blackboard上提交C+源程序或执行文件、输出界面拷屏至实验报告;7按报告内容要求完成实验报告。二、实验环境
2、:地点: 深圳大学机器编号:lily操作系统:windows 8C+语言环境:VC 6.0 project类型:WIN32 Console Application三、实验内容:1求所有“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该 数本身。例:153是水仙花树,因为:153 = 13 + 53 + 33。 2重复输入n(1n10),输出1!+ 2!+n!的结果。输入ctrl+z,退出程序。3. 打印如下九九乘法表。 1 2 3 4 5 6 7 8 91 1 2 2 4 3 3 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30
3、36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 814. 编程,输入一个十进制数num,输入一个整数d(2、8),将num转换为d进制 数输出。(要求用while 或 dowhile实现)四、实验步骤与过程:(给出各题主要变量定义、解题思路、流程图(可手画),并附上代码,注意注视语句的添加。)1 求所有“水仙花数”。 解题思路:首先对数字进行分解,即百位整除100得到百位上的数字;十位上即可通过先对100求余得到一个两位数,再对两位数整除,即分解得十位数;求个位数直接整除10即可;分解完数字后
4、即对数字进行计算;然后开始判断该数字是否满足条件,满足即输出,不满足继续向后求;key:因为这是3位数,所以采用循环结构将所有三位数判定一遍,输出符合条件的。 主要变量:数字,分解后的三个数为整型变量。 流程图见下: 编程时应注意各个符号,不可遗漏,还有for循环的使用语法;判断循环条件的设置;输出方式的设置,即输出所有的水仙花数;还须注意程序的交互性,提示信息;具体见下面代码:代码1:水仙花数流程图1:求水仙花数2.重复输入n(1n10),输出1!需要重复输入n,考察对返回值的判断理解,即对输入值进行判断,首先给出输入值的变量定义,然后对输入值的返回值进行判断,满足条件即执行下面步骤,包括重
5、复输入的循环,不满足即退出;输入符合条件的n后,开始计算n!,利用循环结构从1走到n,后输出结果;再继续重复。 主要变量定义:输入的数字,中间转换变量,数字的阶乘均为整型变量。 编程时应注意循环结构的嵌套,即内层循环用于计算n!,外层循环用于控制n的重复输入,其中包括了对n返回值的判断和限制了范围;程序的交互性。详细代码如下: 代码2: 求n! 流程图2:求n!乘法表的输出需考虑两点,一是输出格式的控制,二是乘法的计算。首先输出行19,利用一个for循环实现;然后控制列的输出与计算,采用两个for嵌套,即按列计算输出,首先输出第一列的结果,然后依次2、3、9列;为控制格式的对齐,开头和列输出过
6、程中都使用”/t”自动间隔对齐。 编写程序时,充分考虑格式的输出对齐,以及for嵌套的书写。代码3:输出乘法表流程图3:4.编程,输入一个十进制数num,输入一个整数d(2、8),将num转换为d进制首先要熟练掌握进制转换算法,十进制化其他进制,即采用整除求余法,除以转换进制一直到商为0,再将所有余数从后到前排,所得数即为转换后的数;因为转换进制不明确,所以还须对输入进制进行判断。采用while循环对十进制数整除求余,并将每一次求得的余数赋予数组,计数;对输入进制的判断采用if判断;最后对数组倒序输出。 编程时,要注意中间变量的使用;数组的赋值与定义;对d值的判断;对数组输出位数的判断条件,注
7、意i的初始化赋值; 代码4:进制转换流程图4:五、实验结果与数据分析:(有运行结果的界面截图,实验结果与实验结果分析,说明实验结果是否达到要求?并提出对程序的改进想法)。实验一:求水仙花数,运行结果界面如下: 实验一: 实验结果:输出所有水仙花数。 实验结果分析:达到要求。实验二:重复输入n(19),求n的阶乘;运行界面如下: 实验二:(110)输入110的数字,可正确计算结果;输入超出范围的数字时,结束程序;可重复输入;输入ctrl+z退出程序。基本达到要求;不足:当输入310时,输出结果正确且格式严谨;但输入1或2时,输出界面不太规范。 改进:可另外加一个选择结构即输入1或2时,另外单独显
8、示为1!=1或1!+2!=3,,使得输出更为严谨规范。改进后代码如下:改进后代码程序运行界面如下: 改进后实验三:输出乘法表,见下图:如上图达到实验要求。实验四:图一 实验四:图二 实验四:图三如上图所示可继续优化的地方,即考虑输入数字有小数的情况,可采用函数等优化。六、实验体会:(自己在编程或程序编译运行中遇到的难点、问题及解决办法)1对重复输入n的控制,如何实现直接对n值输入类型的判断将“cinn”放入while中,会对n的返回值进行判断,当输入n为所定义的类型后继续执行,不是则退出。2.对乘法表输出格式对齐的调整?要一一对齐输出,计算空格较为麻烦,采用“t”,可自动间隔并对齐。3.进制转
9、换时,如何让所求余数倒序输出?要倒序输出,首先要有一个量把每一个余数都记录下来,然后才能控制倒序,所以想到采用数组,记录每一个余数。4.可是由于输入的数不确定大小,不知道会出现多少次求余,因此对于数组空间大小的给定不确定,太大浪费空间,太小无法执行,该怎么解决? 待解决问题5在进制转换中,若有小数,该怎么分解开来?6当程序可以运行,但运行结果不对如何检查? 自己对程序进行调试,在可能有错处插入断点,进行跟踪检查,对相关变量的值进行跟踪判断,从而找寻问题所在。七、自我评价:(请给自己此次实验进行百分制打分并说明理由)自我评分:90理由:基本达到程序实验要求,相关提示信息和注释语句也有添加,程序正确可达到实验目的,计算得正确结果。缺点:对某些输出格式的控制不够规范,还有对多方面输入情况的处理方案不够完善和全面。指导教师批阅意见:成绩评定: 指导教师签字: 年 月 日备注:注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1