数学与软件科学学院 实验报告
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 a>0&&a<10? No a<=20&&a>=10? No a<=40&&a>20? No a<=60&&a>40? No a<=100&&a>60? No a>100? Yes 输出sum=a*0.1 Yes 输出sum=a*0.075+1 Yes 输出sum=a*0.05+1.75 Yes 输出sum=a*0.03+2.75 Yes 输出sum=a*0.015+3.35 Yes 输出sum=a*0.01+3.95
程序代码如下:#include
float a,b,fsum,sum; clrscr();
printf(\ scanf(\ if(a<10&&a>0) {
for(b=0;b<=a;b++) {
fsum=b*0.1; }
printf(\ }
if(a<20&&a>=10) {
for(b=10;b<=a;b++) {
fsum=(b-10)*0.075; }
printf(\ }
if(a<40&&a>=20) {
for(b=20;b<=a;b++) {
fsum=(b-20)*0.05; }
printf(\ }
if(a<60&&a>=40) {
for(b=40;b<=a;b++) {
fsum=(b-40)*0.03; }
printf(\ }
if(a<100&&a>=60) {
for(b=60;b<=a;b++) {
fsum=(b-60)*0.015;
}
printf(\ }
if(a>=100) {
for(b=100;b<=a;b++) {
fsum=(b-100)*0.01; }
printf(\ }
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.计数型循环实验——九九表的打印 下三角