当前位置:文档之家› 实验三 循环结构程序设计(教案)

实验三 循环结构程序设计(教案)

实验三  循环结构程序设计(教案)
实验三  循环结构程序设计(教案)

实验教案

一、实验目的

(1) 掌握while、do~while、for语句的使用。

(2) 掌握循环体内使用break、continue语句的作用。

(3) 掌握循环及嵌套循环结构的程序设计方法。

二、实验准备

1.C语言实现循环的方法

①goto 和if 构成的循环:由于goto是无条件转向,不符合结构化程序设计思想,所以不建议使用。

②while循环:实现“当型”循环,首先判断循环条件,当条件为真,执行循环体,再判断循环条件……此种循环有可能一次也不执行循环体。

③do~while循环:实现“直到型”循环,与while循环的区别是先执行循环体,再判断循环条件,当循环条件为真,再执行循环体……此种循环至少执行一次循环体。

④for循环:与while循环类似,一般用于知道循环变量初值、终值及步长值的循环。

2.break 和continue 语句

①break 语句:可用在循环体或switch语句中,作用是跳出其所在的控制结构。若是在循环体中,则是跳出其所在的循环,使得循环不止一个出口。

②continue语句:只能用在循环体中,其作用是结束本层本次循环,注意不是退出循环。

3.阅读以下程序,并分析其功能,调试运行程序后再分析其运行结果。

①掌握三种方法求1到100的累加和。

文件名为ex3-1-1.c,内容如下:

# include

main()

{ int sum=0,i=1;

while(i<=100)

sum+=i++; // 等价于:{ sum=sum+i; i++; }

printf("sum is %d\n",sum);

}

文件名为ex3-1-2.c,内容如下:

# include

main()

{ int sum=0,i=1;

do

sum+=i++;

while(i<=100);

printf("sum is %d\n",sum);

}

文件名为ex3-1-3.c,内容如下:

# include

main()

{ int sum=0,i;

for(i=1;i<=100;i++)

sum+=i;

printf("sum is %d\n",sum);

}

②程序二,程序文件名为ex3-2.c。(掌握递推算法(求 值))

# include

# include

void main()

{ int s=1;

float n=1,t=1,pi=0;

while(fabs(t)>1e-6) //当前项实数t的绝对值大于1*10-6则执行循环体

{ pi=pi+t; //累加当前项

n=n+2; //推算下一项的分母

s=-s; //推算下一项的符号

t=s/n; //计算下一项的值

}

pi=pi*4;

printf("pi= %f\n",pi);

}

③程序三,程序文件名为ex3-3.c。(掌握迭代算法(处理fibonacci数列前40项))

# include

void main()

{ long f1=1,f2=1;

int i;

for(i=1;i<=20;i++)

{ printf("%12ld %12ld",f1,f2); //输出当前的两项

if(i%2==0) //循环2次后输出回车换行,即一行输出4个数

printf("\n");

f1=f1+f2; //推算之后的第一项

f2=f1+f2; //推算之后的第二项

}

}

④程序四,程序文件名为ex3-4.c 。(掌握穷举算法(判素数))

# include

# include

void main()

{ int m,i,k;

printf("Input m: ");

scanf("%d",&m);

k=sqrt(m); //可以改为:k=m-1; 或k=m/2;

for(i=2;i<=k;i++) //穷举2~k之间的数作为除数判断和m能否整除

if(m%i==0) //若其中之一能够整除,则确定m不是素数,不再循环,此时i<=k

break;

if(i>k) //若i>k则说明以上循环中m不能被所有的i整除则确定m是素数

else

printf("%d 不是素数!\n",m);

void main()

{

int i,j;

for(i=1;i<=9;i++)

{

for(j=1;j<=i;j++)

printf("%d*%d=%-5d",j,i,i*j);

printf("\n");

}

void main()

{

int i,n;

float x,p=1; /*累乘器要赋初值1*/

printf("Input x,n: ");

scanf("%f,%d",&x,&n); /*以逗号分隔输入的已知数据x和n的值*/ for(i=1;i<=n;i++)

p=p*x;

运行结果:

3、设计程序sy3-3.c,已知祖父年龄70岁,长孙20岁,次孙15岁,幼孙5岁,问要过多少年,三个孙子的年龄之和同祖父的年龄相等,试用单重循环结构编程实现。

算法分析:

这个程序可以用穷举法来实现,1年、2年、3年……,每加一年都判断三个孙子的年龄之和是否同祖父的年龄相等,若相等则不加了,这个时候所加的年数为我们需要的结果。

参考答案:

# include

void main()

{

int i,a,b,c,d;

a=20; b=15; c=5; d=70;

i=1;

while(a+i+b+i+c+i!=d+i)

i++;

printf("After %d years be can.\n",i);

}

运行结果:

4、设计程序sy3-4.c,有一数列:2/1,3/2,5/3,8/5,…求出这个数列的前10项之和。

算法分析:

这是一个序列累加的算法,第一项的值是2/1,之后每一项的规律是:分母为前一项的分子,分子为前一项分子分母之和;另外注意在除运算中若分子分母都为整数则结果也为整数,显然在这道题中分子分母的类型应为实型。

参考答案:

# include

void main()

{

int i;

float s=0,a=2,b=1,c,t;

for(i=1;i<=10;i++)

{ t=a/b; /*计算确定分子分母后当前项的值*/

s=s+t; /*将当前项t的值累加到求和变量s当中*/

c=a; /*将前一项的分子暂存于c变量中*/

a=a+b; /*修改下一项的分子为前一项分子分母之和*/

b=c; /*修改下一项的分母为前一项的分子*/

}

printf("The sum is %f\n",s);

运行结果:

# include

void main()

{

float s=200,h=s/4; /*记录第一次落地经过的路程和第一次反弹的高度*/

int i;

for(i=2;i<=10;i++)

{ s=s+2*h;

h=h/4;

}

printf("s=%.2f\n",s);

printf("h=%f\n",h);

}

运行结果:

6、设计程序sy3-6.c,要求求出满足“百位减去十位等于个位”的所有三位整数,并按一行5个数输出结果。算法分析:

该算法可用循环穷举所有的三位整数,逐一判断是否满足条件,并设置一个计数器,计找到的满足条件数的个数,当计数器为5的倍数的时候输出回车换行。

参考答案:

# include

void main()

{

int n=0,a,b,c,i; //计数器n要赋初值0

for(i=100;i<=999;i++) //穷举所有的三位整数

{

a=i/100; //分解百位

b=i/10%10; //分解十位

c=i%10; //分解个位

if(a-b==c)

{ printf("%5d",i); //输出满足条件的数

n++;

if(n%5==0)

printf("\n");

}

}

printf("\n");

}

运行结果:

7、设计程序sy3-7.c,要求从键盘上输入整数m和k,输出大于且紧靠m的k个素数。算法分析:

该题用到判素数的算法,从输入的m+1开始往上找,找够k个结束。

参考答案:

# include

# include

void main()

{

int m,k,i,j,q;

printf("Input m,k: ");

scanf("%d,%d",&m,&k);

for(m=m+1; k>0 ;m++)

{ q=sqrt(m); //可以为q=m-1或q=m/2

for(j=2;j<=q;j++)

if(m%j==0) break;

if(j>q)

{ printf("%5d",m);

k--;

}

}

printf("\n");

}

运行结果:

8、中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?请编程解决该问题。(文件名存为sy3-8.c)算法分析:

设鸡翁、鸡母、鸡雏的个数分别为x,y,z,题意给定共100钱要买百鸡,若全买公鸡最多买20只,显然x的值在0~20之间;同理,y的取值范围在0~33之间,可得到下面的不定方程:5x+3y+z/3=100

x+y+z=100

所以此问题可归结为求这个不定方程的整数解。由程序设计实现不定方程的求解与手工计算不同。在分析确定方程中未知数变化范围的前提下,可通过对未知数可变范围的穷举,验证方程在什么情况下成立,从而得到相应的解。

参考答案:

# include

void main()

{

int x,y,z;

for(x=0;x<=20;x++)

for(y=0;y<=33;y++)

{ z=100-x-y; //鸡的数目够100

if( z%3==0 && x*5+y*3+z/3==100 ) //购买鸡的钱够100,注意z必须是3的整数倍

printf("x:%d y:%d z:%d\n",x,y,z); //输出此种组合

}

}

运行结果:

9、编写程序sy3-9.c,输入一个正整数,计算并显示该整数的各位数字之和,例如,整型数1987的各位数字之和是1+9+8+7,等于25。

算法分析:

由于输入的整数位数不确定,所以用条件型循环while,逐一累加整数的个位,然后舍弃个位。

参考答案:

# include

void main()

{

int s=0;

long n;

printf("Input n:");

scanf("%ld",&n);

while(n>0) //若n大于0则其中有需要累加的数字

{ s=s+n%10; //将当前数的个位累加

n=n/10; //舍弃已经累加的个位

}

printf("s=%d\n",s);

运行结果:

10、编写程序sy3-10.c,功能是找出1至99之间的全部同构数。所谓同构数是这样的一组数:它出现在它平方数的右边。(例如:5是25右边的数,25是625右边的数,5和25都是同构数。)

算法分析:

穷举1至99之间的所有数,判断其平方数的右边(一位数余10,两位数余100)是否与原数相等。参考答案:

# include

void main()

{

int i;

for(i=1;i<=100;i++)

if( i*i%10 == i || i*i%100 == i )

printf("%5d",i);

printf("\n");

}

运行结果:

11、编写程序sy3-11.c,在1-500中找出能同时满足用3除余2,用5除余3,用7余2的所有整数输出并计数。

算法分析:

穷举法解决。

参考答案:

# include

void main()

{

int i,n=0;

for(i=1;i<=500;i++)

if( i%3==2 && i%5==3 && i%7==2)

{ printf("%5d",i);

n++;

}

printf("\ncount: %d\n",n);

运行结果:

void main()

{

int i,n=0;

for(i=1;n<10;i++)

if( i%3==2 && i%5==3 && i%7==4 )

{ printf("%5d",i); n++; }

printf("\n");

运行结果:

循环结构的优秀教案设计

循环结构的优秀教案设计 课题: §1.1.3(3)循环结构 授课教师:山东省东营市胜利一中李玉华 教材:人教B版高中数学必修3 一、教学目标: 1.知识与技能目标 ①理解循环结构,能识别和理解简单的框图的功能。 ②能运用循环结构设计程序框图解决简单的问题。 2.过程与方法目标 通过模仿、操作、探索,学习设计程序框图表达,解决问题 的过程,发展有条理的思考与表达的能力,提高逻辑思维能力。 3.情感、态度与价值观目标 通过本节的自主性学习,让学生感受和体会算法思想在解决 具体问题中的意义,增强学生的创新能力和应用数学的意识。 三、教法分析 二、教学重点、难点 重点:理解循环结构,能识别和画出简单的循环结构框图, 难点:循环结构中循环条件和循环体的确定。 三、教法、学法 本节课我遵循引导发现,循序渐进的思路,采用问题探究式

教学。运用多媒体,投影仪辅助。倡导"自主、合作、探究" 的学习方式。 四、教学过程: (一)创设情境,温故求新 引例:写出求的值的一个算法,并用框图表示你的算法。 此例由学生动手完成,投影展示学生的做法,师生共同点评。鼓励学生一题多解--求创。 设计引例的目的是复习顺序结构,提出递推求和的方法,导 入新课。此环节旨在提升学生的求知欲、探索欲,使学生保 持良好、积极的情感体验。 (二)讲授新课 1.循序渐进,理解知识 【1】选择"累加器"作为载体,借助"累加器"使学生经历把"递推求和"转化为"循环求和"的过程,同时经历初始化变量,确定循环体,设置循环终止条件3个构造循环结构的关键步骤。 (1)将"递推求和"转化为"循环求和"的缘由及转化的方法和途径 引例"求的值"这个问题的自然求和过程可以表示为: 用递推公式表示为: 直接利用这个递推公式构造算法在步骤中使用了共100个变量,计算机执行这样的算法时需要占用较大的内存。为了节

c语言实验报告4 循环结构程序设计

《C程序设计》课程实验报告 学院:班级:姓名:学号: 实验设备:计算机1台实验日期:2011年3月1日 实验项目名称循环结构程序设计 实验目的 掌握使用三种循环语句实现循环结构的方法。 实验要求:能用while~ do~while for 三种循环语句实现循环结构,编写简单的程序,掌握这三种循环语句。 实验内容(包括步骤):1.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半另一个,以后每天早晨都吃剩下的一半另一个,到第十天早晨再想吃时,就剩一个桃子。问第一天共摘了多少桃子。 要求:分别用三种语句编写程序。 2.编写程序验证下列结论:任何一个自然数n的立方都等于n个连续奇数之和。例如:13=1;23=3+5;33=7+9+11;43=13+15+17+19。 要求:程序对每个输入的自然数计算并输出相应的连续奇数,直到输入的自然数为0时止。 3.编写程序,求1-3+5-7+…-99+101的值。 4.编写程序,求e的值。e ≈ 1+1/1!+1/2!+1/3!+1/4!+…+1/n! (1)用for循环,计算前50项。 (2)用while循环,要求直至最后一项的值小于10-6。 5.编写程序,输出从公元1600年至2000年所有闰年的年号。每输出5个年号换一行。判断公元年是否为闰年的条件是:

(1)公元年数如能被4整除,而不能被100整除,则是闰年。 (2)公元年数如能被400整除也是闰年。 6.编写程序,打印以下图形: * *** ***** ******* ***** *** * 7.输入一行字符,统计输入的字符中字母‘a’出现的次数(包括大小写)。 8.我国1991年有11.6亿人口,要求根据人口平均年增长率,计算从1991年算起经过多少年后我国的人口增加到15亿。 9.有一个四位数F=BBAA,前二位数相同,后二位数相同,此数又是某个自然数T的平方,求此数。 10.分解一个正整数的所有质因数 调试与结果测试:部分程序出现错误经过调整后调试正常,达到题目要求的结果,运行正常。

循环结构程序设计代码

实验五代码: 基础能力落实: 1)编写一个程序,将用分钟表示的时间转化成以小时和分钟表示的时间。使用#define 或者const来创建一个代表60的字符常量。使用while循环来允许用户重复键入值,并且当键入一个小于等于0的时间时终止循环。要求用while语句 #include int main(void) { const int minperhour = 60; int minutes, hours, mins; printf("Enter the number of minutes to convert: "); scanf("%d", &minutes); while (minutes > 0 ) { hours = minutes / minperhour; mins = minutes % minperhour; printf("%d minutes = %d hours, %d minutes\n", minutes, hours, mins); printf("Enter next minutes value (0 to quit): "); scanf("%d", &minutes); } printf("Bye\n"); return 0; } 2)编写一个程序打印一个表,表的每一行都给出一个整数,它的平方以及它的立方,要求用户输入表的上限和下限。使用一个for循环。 #include int main( void ) { int lower, upper, index; int square, cube; printf("Enter starting integer: "); scanf("%d", &lower);

最新实验四分支循环结构程序设计

实验四分支循环结构 程序设计

实验四、分支循环结构程序设计 一、实验目的 1.通过本实验,加深对循环控制结构有关概念的理解。 2.熟练掌握while、do-while和for三种循环控制语句的特点,掌握循环结构程序设计和调试方法。 3.掌握二重循环结构程序的设计方法。 二、实验内容 1.用while循环实现数据统计问题。 数据统计问题:从键盘输入一批任意数量的整数,统计其中不大于100的非负数数值的个数。 2.编写并调试程序,使用do-while循环控制语句实现上面的数据统计问题。调试数据仍参照上面给出的几种情况设计使用。 3.编写并调试程序,使用for循环控制语句实现上面的数据统计问题。4.阶乘累加问题。编写程序,求1+2!+3!+…+n!的值(习题5.9)。三、实验指导 1.用while循环实现数据统计问题。 ⑴编程分析 由于输入数据个数是不确定的,因此每次执行程序时,循环次数都是不 确定的。在进行程序设计时,确定循环控制的方法是本实验的一个关键 问题。循环控制条件可以有多种确定方法: ①使用一个负数作为数据输入结束标志。 ②输入一个数据后通过进行询问的方式决定是否继续输入下一个数据。 ⑵参考程序 l 参考程序一 /* 使用负数作为数据输入结束标志的程序 */ #include "stdio.h" void main() { int m,counter=0; while(1) { printf("请输入一个整数:"); scanf("%d",&m); if(m<0)break; if(m<=100)counter++; printf("\n"); } printf("符合要求的整数个数为: %d\n",counter); } l 参考程序二 /* 通过进行询问的方式决定是否继续输入下一个数据的程序 */ #include "stdio.h" void main() { int m,counter=0; char ask; while(1) { printf("请输入一个整数:"); scanf("%d",&m);

《循环结构程序设计》教案

《循环结构程序设计》的教学设计 涞源职教中心高海龙 【教材分析】本节《循环结构程序设计》是职业学校电子类教材数据库应用技术FOXBASE+第七章第五节内容。本节课是数据库结构程序设计的一个重点;也是综合运用三种基本结构程序设计的一个难点;更是学生逻辑思维能力、创造能力、综合能力的一个重要体现。 【学情分析】我授课的班级1105班为计算机专业毕业班学生,数据库是他们对口升学专业考试科目之一,另外本课程对于学生毕业后能独立适应工作需要将起到很重要的奠定基础作用。因此该门课程的设立对他们尤其重要。这个班学生的整体素质很好,而且都是有升学愿望的,所以在教学中我注重教师演示讲解、学生实际动手操作,并给学生自我展示的机会,让他们自己解题,自己讲题,既锻炼了学生解决问题、创新解题的能力,培养了学生学习的兴趣,还使其能克服胆怯心理,提高语言表达能力,真正做到了教学相结合,以达到预期效果。 在信息技术能力方面:高三年级的学生已经历了三年的计算机知识的学习,都具备了熟练操作和使用Windows、Dos操作系统及数据库软件的能力。在计算机知识方面:高三学生已经学完了Foxbase+语言这门课程,已经具备了利用三种基本结构进行结构化程序设计的能力。 【设计思路】因为本节课既是一节计算机语言复习总结课又是一节改革教学组织形式的创新课,所以更应该为学生营造一个和谐、轻松又丰富多彩的学习氛围,因此在整个学习过程中都以利用一个制作美观、新颖的Flash课件作为主线,一步步地来完成学生对知识点的总结、巩固、创新的过程。首先教师引导学生观看事先准备好的课件,观看非常精美、有趣的总界面,然后再引导学生通过一个个地进入在总界面上的前提测评、目标深化、互动课堂、课堂小结、课后作业几个链接来完成本节课的学习任务。其中目标实施部分主要采用任务驱动式教学法、启发式教学法、多媒体网络式授课法等多种教学法相结合,培养学生自主学习、自我归纳的能力;互动课堂部分主要采用“小先生教学法”,让“小先生”自己研究问题—解决问题—阐述问题,实质是让学生作学习的主人,这种“自主学习,自主讲评”改变了以往的传统教学模式,充分体现新课改的精神,即以“学生为主体”、“教师是学生学习的促进者”。 【教学目标】知识目标:①复习单循环结构、多重循环结构的命令格式及功能;②利用循环结构命令语句进行结构化程序设计;能力目标:①培养学生对所学知识的总结概括能力;②培养学生的研究性学习能力;③培养学生的逻辑思维能力和上机操作能力。情感目标:①培养学生主动学习、温故知新、归纳总结的意识;②培养学生的创新意识和团结协作精神;③培养学生勇于自我展示,树立自信心的意识。 【教学重点】(及解决措施)让学生能够熟练地掌握、灵活地运用循环结构进行结构化程序设计,并且培养学生的创新能力。为了突破本次课的重点本次教学活动中充分利用多媒体手段为学生创造一个轻松、活泼的情境,来激发学生学习的兴趣,创造一个和谐交流、动手实践的氛围。既使学生自主获得了知识,又培养了他们的创造性思维。 【教学难点】(及解决措施)能够使学生将以前所学习过的知识有机地结合在一起,并且充分发挥自己的创造力,利用三种基本结构进行编程。为了突破本次课的难点本节课主要采取“小先生教学法”。即让学生走上讲台,充当教师的角色,进行一些平日只有教师主导下完成的教学目标和任务。让学生由后台走到前台,让小先生自己研究问题— 1

实验四分支和循环程序设计实验(精)

实验四分支和循环程序设计实验 一、实验要求和目的 1.熟悉汇编语言程序设计结构; 2.熟悉汇编语言分支程序基本指令的使用方法; 3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法; 4.了解汇编语言循环程序设计的基本流程; 5.熟悉汇编语言循环基本指令的使用方法; 6.掌握利用汇编语言的循环指令完成循环程序设计方法。 二、软硬件环境 1、硬件环境:计算机系统 windows; 2、软件环境:装有 MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 在实际应用中,经常根据一些条件来选择一条分支执行。汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减而导致的结果来进行。 1.无条件转移指令 JMP 无条件转移指令 JMP是使程序无条件转移至目标处,又分为段内转移、段间转移。 2.条件转移指令 JXX 条件转移指令可分为三大类: 1).简单条件转移指令指令。根据单个标志位的状态判断转移条件。标志位指令转移条件意义 CF JC CF=1 有进位/借位 JNC CF=0 无进位/借位 ZF JE/JZ ZF=1 相等/等于 0 JNE/JNZ ZF=0 不相等/不等于 0 SF JS SF=1 是负数 JNS SF=0 是正数 OF JO OF=1 有溢出 JNO OF=0 无溢出 PF

JP/JPE PF=1 有偶数个 1 JNP/JPO PF=0 有奇数个 1 2).无符号数条件转移指令。 假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是 A-B,其转移指令如下: 指令转移条件意义 JA/JNBE CF=0 AND ZF=0 A>B JAE/JNB CF=0 OR ZF=1 A>=B JB/JNAE CF=1 AND ZF=0 AB JGE/JNL SF=OF OR ZF=1 A>=B JL/JNGE SF OF AND ZF=0 A

循环结构程序设计典型例题

循环结构程序设计典型例题 例1有数列2/3、4/5、6/9、10/15……求此数列前30项的和。 算法分析: 对于数列的题,首先要找出通项公式,或前后项的计算关系公式,根据公式求所需。由于数列的题一般执行次数能确定,用for语句来编写比较方便。 此题,前后项的关系是:后一项的分子是前一项的分母加1,后一项的分母是前一 项的分子加分母。解题思路是用循环语句求各项,并把值累加,因为是求前30项的和,循环执行30次。 1.初值i=2,j=3,s=0; 2.用n从1到30循环 3.s=s+ i/j; 4.c=i; i=j+1; j=c+j; 5输出s; 程序: #in clude mai n() { int i=2,j=3, n,c; float s=0; for(n=1; n<=30 ;n++) { s=s+(float)i/j; c=i; i=j+1; j=c+j; } printf( "n%f” ,s); } 此题中的n与循环体中的执行语句没有数值上的联系,仅仅用做决定循环执行的次数。 例2:下面这个程序,想想它实现的是什么功能? #in clude mai n() { int i,s=0; for(i=1;i<=100;i++) {if(i%5==0) continue; s=s+i; } printf( n“d' ,s); } 在左边的程序中,i从1到100循环,当i是5的倍数时,直接进入下一个i,当i不是5的倍数时,把i累加到s,最后输出s。所以,这个程序实现的是求1~100中间所有非5的倍数的数之和。 例3:输出n~m中(0<*m)能被3整除,且至少有一个数字是5的所有数。 算法分析:

实验四 循环结构

实验报告 班级:电信13-1班学号:130******** 姓名:谢朗星成绩: 实验四循环结构 一、实验目的 1.掌握循环结构C程序的编写和调试方法。 2.掌握循环结构C程序中使用while语句和do while语句。 二、实验内容和步骤 1.调试下面三个程序,分析执行的结果。 1. #include int main( ) { int sum=0,i=1; while(i<=100) { sum=sum+i; i++; } printf(“%d\n”,sum); return 0; } 5050 在该程序中,先判断i是否<=100,如果是,在循环体先执行了sum=sum+i,接着再执行i++,然后再返回判断i是否<=100,接着再重复上步骤,直到i>100,然后输出最终结果,结束该程序。 2. #include int main( ) { int sum=0,i=1; while(i<=100) { sum=sum+i; i++; printf(“%d\n”,sum);} return 0;

} 在该程序中,先判断i是否<=100,如果是,在循环体先执行了sum=sum+i,接着再执行i++,然后输出当次运行的结果,然后再返回判断i是否<=100,接着再重复上步骤,直到i>100,结束该程序。 3.#include int main( ) { int sum=0,i=1; do { sum=sum+i; i++; printf(“%d\n”,sum); }while(i<=100); return 0; } 在该程序中,在循环体中先执行了sum=sum+i,接着再执行i++,然后输出当次运行的结果,接着再判断i是否<=100,如果是,返回执行循环体,接着再重复上步骤,直到i>100,结束该程序。 2.编写如下2道题目的程序,要求详细写出程序编写、编译、运行的过程,源程序关键执 行语句需要给出注释。 (a)统计全单位人员的平均工资。单位的人数不固定,工资数从键盘先后输入,当输入-1 时表示输入结束(前面输入的是有效数据) 分析:循环执行的条件while(i!=-1) , 循环结束条件是单位的人数n,循环体采用累加的方法。 (b)求∑= 20 1 n !n 分析:循环体采用累加和累乘。(a) #include int main() {

循环结构程序设计实验报告

嘉应学院计算机学院 实验报告 课程名称程序设计基础实验名称实验地点 指导老师实验时间提交时间 班级姓名座号 一、实验目的和要求 (1)熟悉掌握用while语句、do…while语句和for语句实现循环的方法。 (2)掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 (3)进一步学习调试程序。 二、实验环境和方法 实验方法: (一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。 (二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。 (三)根据实验内容,编译程序。 实验环境:Windows xp Visual C++6.0 三、实验内容及过程描述 实验步骤: ①进入Visual C++ 6.0集成环境。 ②输入自己编好的程序。 ③检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错, 及时改正。 ④进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”, 根据提示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 ⑤运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果 是否正确,应运行多次,分别检查在不同情况下结果是否正确。 实验内容:编译以下题目的程序并调试运行。 (1)输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。 编写程序如下: #include int main() { char c; int letters=0,space=0,digit=0,other=0; printf("请输入一行字符:\n"); while((c=getchar())!='\n')

实验三 循环结构

实验三循环结构 一.实验目的 1.熟悉用while语句,do-while语句和for语句实现循环的方法。 2.掌握循环嵌套的用法。 3.掌握在程序设计中用循环的方法实现各种算法(如迭代,递推,穷举等)。4.掌握break和continue语句的用法。 二.实验要点 在C语言中主要用以下方法实现循环: 1.while语句格式:while (表达式)语句 2.do- while语句格式:do 语句 while (表达式); 3.for语句 for语句的一般格式: for (表达式1;表达式2;表达式3)语句 for (初值表达式;条件表达式;增值表达式) 语句 三.实验要求 1.上机前编写好以下程序。 2.上机输入和调试自己所编的程序并存在自己的U盘上。 3.检查实验结果是否正确。 4.上机结束后,整理实验报告,以“学号—姓名-第3次实验”命名的文件上传到作业服务器。 四.实验内容 上机调试运行以下程序。 1.下面的程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环.请填空. #include”stdio.h” void main(){ int n=0; char c; c=getchar(); while (【】) { if ( 【】) n++; c=getchar(); } printf(“n=%d”,n);}

键盘输入:abcdef12345k(表示回车) 输出结果: 2.当运行下面程序时,从键盘输入1 2 3 4 5 –1(表示回车)时,输出结果: #include void main() { int k=0,n; do {scanf(“%d”,&n); k+=n;} while(n!=-1); printf("k=%d n=%d\n",k,n); } 3.下列程序是求水仙花数的程序,所谓水仙花数是指一个三位数,其各位数字立方和等于该数。例如,153是一个水仙花数。 #include void main() { int i,j,k,n; printf(" The number is: "); for(【】;n++) { i= 【】; j=n/10-i*10; k=【】; if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) { printf("%d\t", 【】); } } } 程序输出结果: 4.下面程序完成把100~120之间的不能被3整除的数输出,并求其和,请填空。 #include void main( ) { int n,sum=0; for (【】) { if (n % 3 == 0) 【】; sum+=n; printf(“%d,”, n);

循环结构教学设计

《循环结构》教学设计 一、教学目标 1.知识与技能目标 ①理解循环结构,能识别和理解简单的框图的功能。 ②能运用循环结构设计程序框图解决简单的问题。 2.过程与方法目标 通过模仿、操作、探索,学习设计程序框图表达,解决问题的过程,发展有条理的思 考与表达的能力,提高逻辑思维能力。 3.情感、态度与价值观目标 通过本节的自主性学习,让学生感受和体会算法思想在解决具体问题中的意义,增强学生的创新能力和应用数学的意识。三、教法分析 二、教学重点、难点 重点:理解循环结构,能识别和画出简单的循环结构框图, 难点:循环结构中循环条件和循环体的确定。 三、教法、学法 本节课我遵循引导发现,循序渐进的思路,采用问题探究式教学。运用多媒体,投影仪辅助。倡导“自主、合作、探究”的学习方式。 四、教学过程 (一)创设情境,温故求新 引例:写出求的值的一个算法,并用框图表示你的算法。 此例由学生动手完成,投影展示学生的做法,师生共同点评。鼓励学生一题多解── 求创。 设计引例的目的是复习顺序结构,提出递推求和的方法,导入新课。此环节旨在提升学生的求知欲、探索欲,使学生保持良好、积极的情感体验。 (二)讲授新课 1.循序渐进,理解知识 【1】选择“累加器”作为载体,借助“累加器”使学生经历把“递推求和”转化为“循环求和”的过程,同时经历初始化变量,确定循环体,设置循环终止条件3个构造循环 结构的关键步骤。 (1)将“递推求和”转化为“循环求和”的缘由及转化的方法和途径引例“求的值”这个问题的自然求和过程可以表示为: 用递推公式表示为: 直接利用这个递推公式构造算法在步骤中使用了共100

个变量,计算机执行这样的算法时需要占用较大的内存。为了节省变量,充分体现计算机能以极快的速度进行重复计算的优势,需要从上述递推求和的步骤中提取出共同 的结构,即第n步的结果=第(n-1)步的结果+n。若引进一个变量来表示每一步的计算结果,则第n步可以表示为赋值过程。 (2)“”的含义 利用多媒体动画展示计算机中累加器的工作原理,借助形象直观对知识点进行强调说明① 的作用是将赋值号右边表达式的值赋给赋值号左边的变量 。 ②赋值号“=”右边的变量“”表示前一步累加所得的和,赋值号“=”左边的 “”表示该步累加所得的和,含义不同。 ③赋值号“=”与数学中的等号意义不同。在数学中是不成立的。 借助“累加器”既突破了难点,同时也使学生理解了中的变化和 的含义。 (3)初始化变量,设置循环终止条件 由的初始值为0,的值由1增加到100,可以初始化循环变量和设置循环终止 条件。 【2】循环结构的概念 根据指定条件决定是否重复执行一条或多条指令的控制结构称为循环结构。 教师学生一起共同完成引例的框图表示,并由此引出本节课的重点知识循环结构的概念。这样讲解既突出了重点又突破了难点,同时使学生体会了问题的抽象过程和算法的构建过程。还体现了我们研究问题常用的“由特殊到一般”的思维方式。 2.类比探究,掌握知识 例1:改造引例的程序框图表示 ①求的值 ②求的值 ③求的值 ④求的值 此例可由学生独立思考、回答,师生共同点评完成。 通过对引例框图的反复改造逐步帮助学生深入理解循环结构,体会用循环结构表达算 法,关键要做好三点: ①确定循环变量和初始值 ②确定循环体 ③确定循环终止条件。 例2:根据程序框图回答下面的问题 (1)图中箭头指向①时,输出=______;指向②时输出=_____. (2)该程序框图的算法功能是_______________________.

C语言循环结构程序设计实验报告

甘肃政法学院 本科生实验报告 ( 五) 姓名:赵明翔 学院:公安技术学院 专业:安全防范工程 班级: 2015级安全防范工程班 实验课程名称:程序设计 实验日期:2016年月日 开课时间:2015学年第二学期

(2)输出所有的水仙花数,所谓水仙花数是指一个3位数,其各位数字李方和等于该数本身。例如,153是水仙花数,因为153=12+53+33程序如下: #include int main() { int i,j,k,n; printf("paicissus numbers are"); for (n=100;n<1000;n++) { i=n/100; j=n/10-i*10; k=n%10; if(n==i*i*i+j*j*j+k*k*k) printf("%d",n); } printf("\n"); return 0; } 运行结果: (3)猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又

多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下了1个桃子了。求第一天共摘了多少桃子。 程序如下: #include int main() { int day,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+1)*2; x2=x1; day--; } printf("total=%d\n",x1); return 0; } 运行结果: (4)①用牛顿迭代法求方程0634223=-+-x x x 在1.5附近的根. #include #include int main() {double x1,x0,f,f1; x1=1.5; do {x0=x1; f=((2*x0-4)*x0+3)*x0-6; f1=(6*x0-8)*x0+3; x1=x0-f/f1;

循环结构程序设计典型例题

循环结构程序设计典型例题 例1:有数列2/3、4/5、6/9、10/15……求此数列前30项的和。 算法分析: 对于数列的题,首先要找出通项公式,或前后项的计算关系公式,根据公式求所需。由于数列的题一般执行次数能确定,用for语句来编写比较方便。 此题,前后项的关系是:后一项的分子是前一项的分母加1,后一项的分母是前一项的分子加分母。解题思路是用循环语句求各项,并把值累加,因为是求前30项的和,循环执行30次。 1. 初值i=2,j=3,s=0; 2. 用n从1到30循环 3. s=s+ i/j; 4. c=i; i=j+1; j=c+j; 5.输出s; 程序: #include<> main( ) { int i=2,j=3,n,c; float s=0; for(n=1;n<=30;n++) { s=s+(float)i/j; c=i; i=j+1; j=c+j; } printf(“\n%f”,s); } 此题中的n与循环体中的执行语句没有数值上的联系,仅仅用做决定循环执行的次数。 例2:下面这个程序,想想它实现的是什么功能? #include<> main( ) { int i,s=0; for(i=1;i<=100;i++) {if(i%5==0) continue; s=s+i; } printf(“\n%d”,s); } 在左边的程序中,i从1到100循环,当i是5的倍数时,直接进入下一个i,当i不是5的倍数时,把i累加到s,最后输出s。所以,这个程序实现的是求1~100中间所有非5的倍数的数之和。 例3:输出n~m中(0

实验2-循环结构题目

实验2 循环结构 程序填空 1. 本题分值:10 题目描述:马克思曾经出过这样一道趣味数学题:有30个人在一家小饭馆里用餐,其中有男人、女人和小孩。每个男人花了3先今,每个女人花了2先令,每个小孩花了1先令,一共花去50先令。问男人、女人以及小孩各有几个人。以下是完成此项工作的程序,请将未完成的部分填入,实现其功能,并在计算机上调试程序,以测试填入的部分是否正确。 代码: #include using namespace std; int main() { int n; //n记录解的个数 int a,b,c; //分别记录男、女、小孩的人数 n=__(1)__; //初始化n的值 for(a=1;a<=30;a++) { for(b=1;b<=30;b++) { c=__(2)__; if( __(3)__ ) { cout<<"男人有:"< using namespace std;

{ int n, k=1, s=0, m ; for (n=1 ; n<=100 ; n++) { k=1 ; s=0 ; __(1)__; while ( __(2)__ ) { k*=m%10; s+=m%10; __(3)__; } if (k>s) cout< using namespace std; int main() { int n,s,i,count=0; cout<<"1000以内的完数为:"; for(n=1;n<1000;n++) { s=0; for(i=1;i

程序的循环结构教学设计

《程序的循环结构》 北京师范大学励耘实验学校牛静 一、教材依据 广东教育出版社出版的2007-2008学年普通高中课程标准实验教科书《算法与程序设计(选修)》中第二章《程序设计基础》中的第四节《程序的循环结构》。 二、设计思想 ⒈教学设计指导思想 以建构主义理论为指导进行本节课教学设计。设计以学生为中心,以解决问题为主线,引领学生经历“分析问题——设计算法——编写程序——调试程序”等用计算机解决问题的过程,体验程序设计的一般方法,展示问题求解的思维过程和方法,培养学生分析问题、解决问题的能力。强调教师对问题情境的创造性设置,突出学生主动思考、分析、比较的过程和实践的活动。 体现新课程的理念,引导学生注意寻找、发现身边的实际问题,从简单问题出发,设计解决问题的算法,并能初步选择使用恰当的循环语句解决问题,从而培养学生运用信息技术解决实际问题的能力,力争让学生将所学的信息技术应用到学习、生活实践中。 信息技术课程标准中对应要求是:“会使用程序设计语言实现顺序、选择、循环三种控制结构。初步掌握调试、运行程序的方法。 ⒉教材分析 《程序的循环结构》是广东教育出版社出版的普通高中课程标准实验教科书《算法与程序设计(选修)》中第二章《程序设计基础》中的第四节《程序的循环结构》,本节课是其中的第二节课,前面同学们已经学习了用For语句实现循环。循环结构是程序设计中的重点也是难点。 ⒊教学对象分析

⑴学生已经学习了程序的顺序结构、选择结构和循环结构中的For循环。 ⑵掌握了For循环语句的格式、功能和执行过程。 三、教学目标 知识与技能:理解Do循环语句的基本格式、功能和执行过程 过程与方法:初步学会使用Do循环语句解决简单实际问题,初步掌握根据条件选择恰当的循环语句来解决简单问题的方法。 情感态度价值观:通过对不同循环语句解决问题的过程进行比较,体会到解决问题时要具体问题具体分析。 四、教学重点、难点 教学重点:学会使用Do循环语句来实现循环控制结构,解决简单问题。 教学难点:根据条件选择恰当的循环语句来解决简单问题。 五、教学方法 讲授法、讨论法、任务驱动、上机实践法、探究法等。 六、教学准备 ⒈教学用具: 多媒体网络教室及教学系统、、课件。 ⒉学习效果评价设计: ⑴问题一、问题二两道上机实践题完成情况; ⑵学习资料上的两道“想一想”题完成情况 ⑶学习活动中的表现 评价量规

循环程序设计实验

循环程序设计实验 实验目的 1、掌握循环程序的设计方法。 2、掌握比较指令、转移指令和循环指令的使用方法。 3、进一步掌握调试工具的使用方法。 实验预习要求 复习比较指令、条件转移指令和循环指令。 复习循环程序的结构、循环控制方法等知识。 读懂“实验内容”中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。 根据“实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。 从“实验习题”中任选一道题目,编写源程序,以便上机调试。 实验内容 计算1+2+……n=,其中n通过键盘输入。要求在屏幕上提供如下信息: Please input a number(1627): ;出现此信息后通过键盘输入一个小于628的无符号整数 1+2+…..n=sum;其中n为用户输入的数,sum为所求的累加和 程序运行情况如下图所示(说明:图中所运行程序允许累加和不大于一个32位二进制数所能表示的范围)。编程指导 键盘输入的十进制数如 368在计算机中是以 33H,36H,38H形式存 放的,如何将它们转换 为一个二进制数0B,以 便对累加循环的循环次 数进行控制是本程序首 先要解决的问题。将键 盘输入的十进制数转换为二进制数的程序清单如下: DATA SEGMENT INF1 DB "Please input a number (0-65535):$" IBUF DB 7,0,6 DUP() DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS:DATA START: MOV A X, DATA MOV DS, AX MOV DX, OFFSET INF1 MOV AH, 09H INT 21H MOV DX, OFFSET IBUF ;键入一个十进制数(<65535) MOV AH, 0AH INT 21H MOV CL, IBUF+1 ;十进制数的位数送CX MOV CH, 0 MOV SI, OFFSET IBUF+2 ;指向输入的第一个字符(最高位)

实验(5)-循环结构.

C语言程序设计实验教学(5) 【实验目的】通过程序设计实现,掌握while结构、do-while结构和for结构各种类型的循环结构,完成各种循环程序的设计和实现。 【实验要求】同一个题目尝试使用多种循环控制结构来实现,并分析其设计和实现的差别和难易程度。 【实验课时】6.0 【实验内容】 1、完成课堂实例的实现。 (1)计算s=1+2+…+100。(累加型) (2)请输入数n,计算n!。(连乘型) (3)输出所有的水仙花数。(范围型) (4)判断n是否为素数。(反向思维型) (5)输出100-200之间能同时被3和5整除的数。(用continue语句) (6)输入任意n个数,输出其中最大数和最小数,并输出它们在序列中的位置。 (7)输出以下图形(1): (8)输出以下图形(2): (9)输出以下图形(3): 图形(1)图形(2)图形(3) (10)编写输出如下字母塔的程序: A A B A A B C B A A B C D C B A

……………… …………………… ………………………… A B C D E F G H I J K L M N O P Q R S T U V W X W V U T S R Q P O N M L K J I H G F E D C B A A B C D E F G H I J K L M N O P Q R S T U V W X Y X W V U T S R Q P O N M L K J I H G F E D C B A A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Y X W V U T S R Q P O N M L K J I H G F E D C B A 2、计算多项式7+72+73+······+7n 的值,n 由键盘输入。 3、求 ∑=201! n n (即求1!+2!+3!+……+20!) 4、输入2个正整数m,n ,求其最大公约数和最小公倍数。 5、请编程序打印出以下数列:1、1、2、3、5、8、13、…的前40项。每行输出4个数。(斐波那契数列) 6、求100~200间的全部素数。每行输出6个数。 7、“鸡兔同笼”是一个中国古算题,最早出现在《孙子算经》中。笼中有若干只鸡和兔子,它们共有88个头,244只脚,问鸡和兔各有多少只? 8、求下列分数序列的前20项之和。 12,23,35,58,813,1321,…… 9、输入x 值,按照公式计算cos(x)的值,直到最后一项小于10-6为止。 ,! 6x !4x 2!x 1)x (cos 6 42 +-+-= 10、找出1000之内的所有完数,一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。输出时按下面的格式输出其因子: 6 its factors are 1,2,3 补充作业:(以下题目任选2题) 1、我国古代有一道有名的数学难题,称为“百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买了百鸡,问鸡翁、鸡母、鸡雏各买了多少只? 2、猴子吃桃问题。猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上再想吃时,就

高中信息技术_程序的循环结构教学设计学情分析教材分析课后反思

程序的循环结构教学设计 一、教材分析 本节课是广东教育出版社出版《算法与程序设计(选修)》中第二章《程序设计基础》中的第四节《程序的循环结构》内容。 信息技术课程标准中对应要求是:“会使用程序设计语言实现顺序、选择、循环三种控制结构。初步掌握调试、运行程序的方法。 教材通过“超级水稻种植试验的统计分析”、“陈婷植树”、“乘法表”等典型例题,引导学生经历分析问题、设计算法、编写程序、调试程序等用计算机解决问题的过程。通过分析程序,介绍了VB语言的FOR循环语句和Do循环语句的格式、功能和执行过程。 二、设计思想 ⒈教学设计指导思想 设计以学生为中心,以解决问题为主线,引领学生经历“分析问题——设计算法——编写程序——调试程序”等用计算机解决问题的过程,体验程序设计的一般方法,展示问题求解的思维过程和方法,培养学生分析问题、解决问题的能力。强调教师对问题情境的创造性设置,突出学生主动思考、分析、对比和实践探究的过程。 三、教学目标 知识与技能:掌握循环语句的基本格式,理解循环语句的功能和执行过程。 过程与方法:学会使用循环语句解决简单实际问题,初步掌握根

据条件选择恰当的循环语句来解决简单问题的方法。 情感态度价值观:通过对不同循环语句解决问题的过程进行比较,体会到解决问题时要具体问题具体分析。 四、教学重点、难点 教学重点:循环语句的基本格式和执行过程. 教学难点:利用循环结构程序解决生活中的实际问题. 五、教学方法 讲授法、讨论法、任务驱动、探究法等。 六、教学准备 ⒈教学用具: 多媒体网络教室及教学系统、VB6.0、课件。 七、教学过程

3 3 2. DO循环语句的基本格式和执行过程 DO循环执行过程板书 引导 分析 讲 观察 思考 理解 思考 学会 明确学习 内容

循环程序设计实验

2.4 循环程序设计实验 2.4.1 实验目的 1、掌握循环程序的设计方法。 2、掌握比较指令、转移指令和循环指令的使用方法。 3、进一步掌握调试工具的使用方法。 2.4.2 实验预习要求 1、复习比较指令、条件转移指令和循环指令。 2、复习循环程序的结构、循环控制方法等知识。 3、读懂“2.4.3 实验内容”中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。 4、根据“2.4.3 实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。 5、从“2.4.4 实验习题”中任选一道题目,编写源程序,以便上机调试。 2.4.3 实验内容 计算1+2+……n=?,其中n通过键盘输入。要求在屏幕上提供如下信息: Please input a number(1 627): ;出现此信息后通过键盘输入一个小于628的无符号整数 1+2+…..n=sum;其中n为用户输入的数,sum为所求的累加和 程序运行情况如下图所示(说明:图中所运行程序允许累加和不大于一个32位二进制数所能表示 的范围)。 1、编程指导 (1)键盘输入的十进 制数如368在计 算机中是以 33H,36H,38H 形式存放的,如 何将它们转换为 一个二进制数 101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题。将键盘输入的十进制数转换为二进制数的程序清单如下: DA TA SEGMENT INF1 DB "Please input a number (0-65535):$" IBUF DB 7,0,6 DUP(?) DA TA ENDS CODE SEGMENT ASSUME CS: CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV DX, OFFSET INF1 MOV AH, 09H INT 21H MOV DX, OFFSET IBUF ;键入一个十进制数(<65535) MOV AH, 0AH INT 21H MOV CL, IBUF+1 ;十进制数的位数送CX MOV CH, 0

相关主题
文本预览
相关文档 最新文档