C语言学习知识四川师范大学信息与计算科学冯山实验五.doc

举报
资源描述
.\ 数学与软件科学学院 实验报告 2015年6月5日 课程名称:C语言程序设计 专业: 信息与计算科学 2014级 6班 实验编号:实验五 指导教师: 冯山 姓名:杨帆 学号:2014060634 实验得分 一、实验目的 (1) 复习和掌握算法的基本组成要素和描述特点; (2) 在实验四的基础上,学习几种常见的循环程序的流程关系和运用方法; (3) 不同循环类型之间的转换方法; (4) 循环的应用。 二、实验内容 1.循环实验(教材习题5-20)。具体要求: (1) 绘制流程图,编制程序代码。 (2) 分析不进入循环、只循环一次、只循环两次、进入死循环的条件,以及此时各变量的值。 (3) 分析循环退出时的条件表达式值。 (4) 如何测试循环的次数? (5) 能否将程序改写成另外的形式,如while改写成do while或for语句? (6) 总结条件循环的设计、实现步骤和测试方法。 2.计数型循环实验(教材习题5-30):九九表及其变体形状的打印。具体要求如下: (1) 分析并绘制九九表的程序实现代码(右上三角形状); (2) 分析程序的执行过程; (3)* 请在此基础上修改部分程序代码以打印如下一些变形九九表:右下三角、左上三角、左下三角、倒序排列等形状,并观察、分析和总结其规律。 (4) 分析并总结计数型循环在do while, while和for循环句型中的实现方法和步骤。 3.其它实验题目: (1) 习题5-1(小孩吃梨问题); (2) 习题5-4(水果拼盘问题); (3) 求两个非负整数u和v的最大公因子; (4) 求两个非负整数的最小公约数; (5) 用牛顿迭代法求解正实数a的平方根; (6) 用梯形法求函数的数值积分; (7) 把由键盘输入的数列(1,3,5,7,9...)按相反的顺序(如...9,7,5,3,1)输出。 4.习题5-27和习题5-28。 三、实验准备 (1) 编写所选实验题目的程序代码和流程图; (2) 检查源程序并给出其可能的运行结果说明。 四、实验步骤及结果 1.循环实验(教材习题5-20)。具体要求: (1)绘制流程图,编制程序代码 流程图如下: a<=100&&a>60? a>0&&a<10? 输出sum=a*0.075+1 输出sum=a*0.1 输出sum=a*0.03+2.75 输出sum=a*0.01+3.95 输出sum=a*0.05+1.75 a<=60&&a>40? a<=40&&a>20? 输入利润值a 输出sum=a*0.015+3.35 a>100? a<=20&&a>=10? Yes No Yes No Yes No Yes No Yes No Yes a>100? 程序代码如下:#include int main(void) { float a,b,fsum,sum; clrscr(); printf("Please input one number:\n"); scanf("%f",&a); if(a<10&&a>0) { for(b=0;b<=a;b++) { fsum=b*0.1; } printf("sum=%f",sum=fsum+0); } if(a<20&&a>=10) { for(b=10;b<=a;b++) { fsum=(b-10)*0.075; } printf("sum=%f",sum=fsum+1.0); } if(a<40&&a>=20) { for(b=20;b<=a;b++) { fsum=(b-20)*0.05; } printf("sum=%f",sum=fsum+1.75); } if(a<60&&a>=40) { for(b=40;b<=a;b++) { fsum=(b-40)*0.03; } printf("sum=%f",sum=fsum+2.75); } if(a<100&&a>=60) { for(b=60;b<=a;b++) { fsum=(b-60)*0.015; } printf("sum=%f",sum=fsum+3.35); } if(a>=100) { for(b=100;b<=a;b++) { fsum=(b-100)*0.01; } printf("sum=%f",sum=fsum+3.95); } getchar(); return 0; } (2) 分析不进入循环、只循环一次、只循环两次、进入死循环的条件,以及此时各变量的值。 答:不进入循环:a<=0的时候不进入循环; 只循环一次:a=1或a=12或a=22或a=42或a=62的时候只循环一次; 只循环两次:a=2或=13或a=23或a=43或a=63的时候只循环两次; 进入死循环:a无限。 (3) 分析循环退出时的条件表达式值。 答:循环退出时是sum=fsum+次循环以上所有循环的最后最大值。 (4) 如何测试循环的次数? 答:用if语句来标明,比如,当a=2时,循环2次,就令printf输出2。 (5) 可以,原语句是for的语句,而do while 语句与for实质都一样。 (6) 总结条件循环的设计、实现步骤和测试方法。 a确定加法的开始点,结束点和当前加数值。 b确定循环控制变量的增长步长。 c将和加到另一个变量中去 2. 计数型循环实验——九九表的打印 下三角 上三角: 流程图如下: i=1 i<=9? J=1 J<=9 i>j? Printf(“%d*%d=%d\t”,I,j,i+j) Printf(“\t”) J++ I++ NO YES YES YES NO NO 注意:只需控制 i , j 使得在某些位置置空或者为“%d*%d=%d”,i,j,i*j即可。 要有模块化的思想,先考虑行,再考虑列,最后再考虑每个元素。 for(表达式1;表达式2;表达式3) (1)先执行表达式1(循环中只执行一次),且表达式1可提前到for()语句之前,但其后的“;”不能少。 (2)表达式2为真时执行循环体语句组,为假时结束循环并执行循环体外语句组。 (3)计算表达式3并返回第(2)步。 3.习题5-1小孩吃梨问题; 程序代码如下: 运行结果: 流程图如下: Sum=1 I=17 i>0? sum=2*(sum+1); Printf(“the pears has %d\n”,sum) I - - YES NO 4.求100-1000中所有能表示成立方的书,水仙花数。 5.把由键盘输入的数列(1,3,5,7,9...)按相反的顺序(如...9,7,5,3,1)输出。 程序如下: #include int main(void) { int arr[5]={1,3,5,7,9},*pt_arr; clrscr(); pt_arr=&arr[4]; for(;pt_arr>=arr;pt_arr--) { printf("%d ",*pt_arr); } return 0; } 运行结果如下: 五:收获 在本次实验中基本掌握了几种常见的循环结构for, while, do while,熟悉了不同循环类型之间的转换方法和循环结构的嵌套。此外了解到描绘流程图能极大的方便对整个程序的编写,并已掌握其基本画法。
展开阅读全文
相关搜索
温馨提示:
taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

当前位置:首页 > 教育专区 > 教案示例


本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁