Visual Basic 程序设计教程
机械工业出版社同名教材
配套电子教案
2003 年6月
第5章循环结构程序设计
5.1循环结构程序设计的概念
5.2Do…Loop语句
5.2.1 前测型Do…Loop循环
5.2.2 后测型Do…Loop循环
5.3 For...Next语句
5.4列表框与组合框
5.4.1 列表框
5.4.2 组合框
5.4算法举例
习题五
5.2.1前测型Do…Loop循环
其语法为
Do[{While|Until}〈条件〉]
[〈语句列1〉]
[Exit Do]
[〈语句列2〉]
Loop
【例5-1】求累加和1+2+3+…+100(如图5-2)。
设计步骤如下:
窗体界面的设计参见前面章节,这里仅给出命令按钮的Click事件代码:Private Sub Command1_Click()
Dim s As Integer,n As Integer
s=0:n=1
Do While n<=100
s=s+n
n=n+1
Loop
Label2.Caption="1+2+3+…+100="&s
End Sub
还可以改为直到型:
Private Sub Command1_Click()
Dim s As Integer,n As Integer
s=0:n=1
Do Until n>100
s=s+n
n=n+1
Loop
Label2.Caption="1+2+3+…+100="&s End Sub
【例5-2】输入一个正整数,利用“当型”循环判断是否素数。
设计步骤如下:
窗体界面的设计参见前面章节,这里给出命令按钮的Click事件代码:Private Sub Command1_Click()
Dim n As Long
Select Case Val(Text1.Text)
Case Is<3
MsgBox"请输入一个大于2的整数!",vbInformation+vbOKOnly,"注意"
Case Is>2147483647
MsgBox"此数太大!",vbInformation+vbOKOnly,"注意"
Case Else
n=Val(Text1.Text)
s=0:i=2
Do While i<=Sqr(n)And s=0 If n Mod i=0Then
s=1
Else
i=i+1
End If
Loop
If s=0Then
a="是一个素数"
Else
a="不是素数"
End If
Label1.Caption=Str(n)&a End Select
Text1.SetFocus
End Sub
另外,为了使用文本框得到焦点后,文本立即被选中,编写Text1的GotFocus事件代码如下:
Private Sub Text1_GotFocus()
Text1.SelStart=0
Text1.SelLength=Len(Text1.Text)
End Sub
设计步骤如下:
(1) 建立应用程序用户界面与设置对象属性。
(2)编写程序代码。
根据流程图,可以写出命令按钮Command1的Click事件代码为Private Sub Command1_Click()
Dim m As Integer
m=Val(Text1.Text)
p=0#:s=2#:e=0.1^m
Do
t=s:p=Sqr(2+p):s=s*2/p
Loop Until Abs(t–s)<0.1^m
f=String(m–1,"#")
Text2.Text=Format(s,"0."&f)
Text1.SetFocus
End Sub
文本框Text1的GotFocus事件代码:Private Sub Text1_GotFocus()
Text1.SelStart=0
Text1.SelLength=Len(Text1.Text) End Sub
【例5-4】输入两个正整数,求它们的最大公约数。
设计步骤如下。
窗体界面的设计如图5-10所示,这里给出命令按钮的Click事件代码:Private Sub Command1_Click()
m=Val(Text1.Text)
n=Val(Text2.Text)
If n*m=0Then
MsgBox"两数都不能为0!"
Exit Sub
End If
If m t=m:m=n:n=t End If Do r=m Mod n m=n n=r Loop While r<>0 Text3.Text=m End Sub 5.3For...Next语句 其语法为 For〈循环变量〉=〈初值〉To〈终值〉[Step〈步 长〉] [〈语句列1〉] [Exit For] [〈语句列2〉] Next[〈循环变量〉] 【例5-5】利用For循环结构显示1000以内的所有能被37整除的自然数(如图5-13所示)。 设计步骤如下: (1)窗体界面的设计与属性设置。 (2)编写代码。 编写命令按钮的Click事件代码:Private Sub Command1_Click() a="" For n=1To1000 If n Mod37=0Then a=a&Str(n)&vbCrLf End If Next Text1.Text=a End Sub 【例5-6】求从1000到1100之间的所有素数。 窗体界面的设计参见图5-15,这里给出命令按钮的Click事件代码:Private Sub Command1_Click() a="" For n=1001To1100Step2 s=0 For i=2To Int(Sqr(n)) If n Mod i=0Then s=1 Exit For End If Next If s=0Then a=a&Str(n)&vbCrLf Next Text1.Text=a End Sub 5.4 列表框与组合框 【例5-7】将例5-6中的文本框改为列表框(如图5-16所示)。 将窗体中的文本框换为列表框,无需修改列表框的属性,只需修改命令按钮的Click事件代码: Private Sub Command1_Click() List1.Clear For n=1001To1100Step2 s=0 For i=2To Int(Sqr(n)) If n Mod i=0Then s=1:Exit For End If Next If s=0Then List1.AddItem n'使用列表框的Add方法增加列表项Next End Sub 【例5-8】“同构数”是指这样的整数:它恰好出现在其平方数的右端,例如1和5就是这样的数。试找出1~9999之间的全部“同构数”(如图5-17所示)。 窗体界面的设计参见图5-17,这里给出命令按钮的Click事件代码: Private Sub Command1_Click() List1.Clear For n=1To9999 Select Case n Case n^2Mod10 List1.AddItem Format(n,"@@@@@")&Format(n^2, "@@@@@@@@@@") Case n^2Mod100 List1.AddItem Format(n,"@@@@@")&Format(n^2, "@@@@@@@@@@") Case n^2Mod1000 List1.AddItem Format(n,"@@@@@")&Format(n^2, "@@@@@@@@@@") Case n^2Mod10000 List1.AddItem Format(n,"@@@@@")&Format(n^2, "@@@@@@@@@@") End Select Next End Sub 【例5-9】小学生做加减法的算术练习程序。计算机连续地随机给出两位数的加减法算术题,要求学生回答,答对的打“√”,答错的打“×”。将做过的题目存放在列表框中备查,并随时给出答题的正确率(如图5-19所示)。 设计步骤如下: (1)建立应用程序用户界面。 (2)设置对象属性 (3)编写代码。 循环结构程序设计习题及答案 1、循环语句的三要素分别是、、。 2、for语句括号内的3个表达式的作用分别 是、、。 3、在2层循环嵌套中,外层循环语句的每个执行周期中,内层循环语句都要完整 地,只有当时,才结束整个循环。 4、在循环结构中,break语句的作用是;continue语句的作用是。 5、当循环条件一开始就为假时,对于while语句、do…while语句、for语句,分别执行循环体次、次、次。 6、下面程序段的执行次数: int a=0; while(a=0) { printf("good\n"); a--; } 7、下面程序段的执行次数: int a=0; while(a==0) { printf("good\n"); a--; } 8、下面程序段的执行次数: int a=1; while(a=1) { printf("good\n"); a++; } 9、下面程序段的执行次数: int a=1; while(a==1) { printf("good\n"); a++; } 10、下列程序段的运行结果是。 for(i=5;i>=0;i--) printf(“%d “,i); 11、下列程序段的运行结果是。 for(n=1;n<20;n=n+3) printf(“%d “,n); 12、下列程序段的运行结果是。 for( ch='a' ;ch<='e' ;ch++) printf(“%d“,ch-97); 13、下列程序段的运行结果是。 for(i=1,j=5 ; i 仲恺农业工程学院实验报告纸 信息学院(院、系) 专业 班 C 语言程序设计 课 实验目的: (1)熟练掌握用三种循环语句实现循环的方法。 (2)掌握在程序设计中用循环方法实现的一些常用算法。 (3)进一步学习调试程序。 实验内容与总结: 编程练习 1、打印出所有“水仙花数”——教材P129-6.6 程序如下: #include #include 实验2 循环结构程序设计 一、实验目的 1.学习循环语句for、while和do-while语句的使用方法。 2.学习用循环语句实现各种算法,例如穷举法、迭代法等。 3.进一步熟悉C语言集成环境的使用方法 二、实验内容 1.用while循环实现数据统计问题。:从键盘输入一批任意数量的整数,统 计其中不大于100的非负数数值的个数。 2.编写并调试程序,使用do-while循环控制语句实现上面的数据统计问 题。调试数据仍参照上面给出的几种情况设计使用。 3.编写并调试程序,使用for循环控制语句实现上面的数据统计问题。 4.阶乘累加问题。编写程序,求1+2!+3!+…+n!的值。 三、实验指导 1.用while循环实现数据统计问题。 ?编程分析 由于输入数据个数是不确定的,因此每次执行程序时,循环次数都是不确定的。在进行程序设计时,确定循环控制的方法是本实验的一个关键问题。循环控制条件可以有多种确定方法: (1).使用一个负数作为数据输入结束标志。 (2).输入一个数据后通过进行询问的方式决定是否继续输入下一个数 据。 ?参考程序 参考程序一 /* 使用负数作为数据输入结束标志的程序 */ #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); } 参考程序二 /* 通过进行询问的方式决定是否继续输入下一个数据的程序 */ #include 第三单元循环结构练习题 选择题: 1、有以下程序执行后的输出结果是( D )。 main( ) { int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf("%d\n",s);} A.自然数1~9的累加和 B.自然数1~10的累加和 C.自然数1~9中的奇数之和 D.自然数1~10中的偶数之和 2、以下关于for语句的说法不正确的是( A )。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先判断表达式,后执行循环体语句 C. for循环中,可以用break跳出循环体 D. for循环体语句中,可以保含多条语句,但要用花括号括起来 3、若i和k都是int类型变量,有以下for语句 for(i=0,k=-1;k=1;k++) printf("*****\n"); 下面关于语句执行情况的叙述中正确的是( d )。 A.循环体执行两次 B.循环体执行一次 C.循环体一次也不执行 D.构成无限循环 4、以下程序程序的执行后的输出结果是( c )。 main() {int i,t[][3]={9,8,7,6,5,4,3,2,1}; for(i=0;i<3;i++) printf(“%d”,t[2-i][i]);} A.7 5 3 B. 3 5 7 C.3 6 9 D.7 5 1 5、以下程序运行后的输出结果是( A )。 void fun(char*s) { while(*s) { if(*s%2==0) printf(“%c”,*s); s++;} } main() { char a[]={“good”};fun(a);printf(“\n”);} 注意:字母a的ASCⅡ码值为97 A.d B.go C.god D.good 6、已知 int t=0; while(t=1){...} 则以下叙述正确的是( B )。 A)循环控制表达式的值为0 B)循环控制表达式的值为1 C)循环控制表达式不合法 D)以上说法都不对 7、设有以下程序段 B int x=0,s=0; while(!x!=0)s+=++x; printf("%d",s); 则 A)运行程序段后输出0 实验五代码: 基础能力落实: 1)编写一个程序,将用分钟表示的时间转化成以小时和分钟表示的时间。使用#define 或者const来创建一个代表60的字符常量。使用while循环来允许用户重复键入值,并且当键入一个小于等于0的时间时终止循环。要求用while语句 #include 甘肃政法学院 本科生实验报告 ( 五) 姓名:赵明翔 学院:公安技术学院 专业:安全防范工程 班级: 2015级安全防范工程班 实验课程名称:程序设计 实验日期:2016年月日 开课时间:2015学年第二学期 (2)输出所有的水仙花数,所谓水仙花数是指一个3位数,其各位数字李方和等于该数本身。例如,153是水仙花数,因为153=12+53+33程序如下: #include 多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下了1个桃子了。求第一天共摘了多少桃子。 程序如下: #include 循环结构程序设计典型例题 例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 循环结构程序设计(汇编语言) 汇编语言实验报告 实验名称:循环结构程序设计 姓名: 学号: 班级: 一、实验内容 1. 用多种循环方法实现1+2+3+…+20的程序(至少二种方法); 2. 编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z 或a-z字符,均显示“c”;若是回车字符 循环结构程序设计习题及答案1、循环语句的三要素分别 是、、。 2、for语句括号内的3个表达式的作用分别 是、、。 3、在2层循环嵌套中,外层循环语句的每个执行周期中,内层循环语句都要完整地,只有当时,才结束整个循环。 4、在循环结构中,break语句的作用是;continue语句的作用是。 5、当循环条件一开始就为假时,对于while语句、do…while语句、for 语句,分别执行循环体次、次、 次。 6、下面程序段的执行次数: int a=0; while(a=0) { printf("good\n"); a--; } 7、下面程序段的执行次数: int a=0; while(a==0) { printf("good\n"); a--; } 8、下面程序段的执行次数: int a=1; while(a=1) { printf("good\n"); a++; } 9、下面程序段的执行次数: int a=1; while(a==1) { printf("good\n"); a++; } 10、下列程序段的运行结果是。 for(i=5;i>=0;i--) printf(“%d “,i); 11、下列程序段的运行结果是。 for(n=1;n<20;n=n+3) printf(“%d “,n); 12、下列程序段的运行结果是。 for( ch='a' ;ch<='e' ;ch++) printf(“%d“,ch-97); 13、下列程序段的运行结果是。 for(i=1,j=5 ; i 4.3 循环结构程序设计2 【注意事项: (1)题中页码均为《C语言程序设计教程》中的页码 (2)题后为原程序文件名 (3)仅提交名为【*.c】的源程序文件,可一起提交,也可逐题提交 调试程序中常见问题及处理方法: (1)出现死循环时:关闭运行窗口即可。 】 1、按照下面的流程图书程序,用for语句实现。 【提示:参见p97—例4.23 ,并按照下面的左流程图书写007张三511.c,右流程图书写007张三512.c 程序运行结果: s=2550 】 2、用for语句编程,求300~500之间的水仙花数(如135:153=13+53+33)。(007张三52.c) 【程序运行结果: 300~500之间的全部水仙花数如下:??370??371??407 】 3、判断输入的数是否为素数。【提示:素数是只能被1和其自身和整除的数,】(007张三53.c) 【提示:参见p114—例4.36 程序运行时:程序运行结果: 请输入一个正整数:25?25不是素数 请输入一个正整数:12?125不是素数 请输入一个正整数:13?13是素数 】 4、判断输入的一个不超过32767的正整数是几位数。(007张三54.c)【提示:按照右侧的N-S图编程 运行时:运行结果: 请输入一个正整数(1~32767): 135?135是3位数请输入一个正整数(1~32767): 1356?1356是4位数请输入一个正整数(1~32767): 28906?28906是5位数】 附加题: 1、求出100~200间的所有素数。(007张三5附加1.c )。 【 运行结果: 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 】 2、根据以下公式求π值(直到最后一项小于10 –6 为止)(007张三5附加2.c ) 【 运行结果: pi=3.141590 】 3、百钱百鸡问题中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?(007张三5附加3.c ) 【提示:在编程之前,需先根据题意列出方程, 如: 设鸡翁x 只,鸡母y 只,鸡雏z 只 则有下列方程: x+y+z=100 和 5x+3y+z/3=100 因为2个方程,3个未知数,故为不定方程,需用穷举法解题。 运行结果: x=0??? y=25??z=75?? x=4??? y=18??z=78?? x=8??? y=11??z=81?? x=12?? y=4???z=84?? 】 参考解答: 1、~2、略 3、 #include 循环结构程序设计典型例题 例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 1. 用 +-+-≈7 1513114π公式求π的近似值,直到发现某一项的绝对值小于10-6 为止(该项不累计加)。 #include 模块三循环程序设计习题及答案 一、填空题 1、当在数据处理中要重复执行相同的操作时,宜采用程序结构来实现。 2、循环的3要素是、、。 3、在循环语句体中包含另一个循环语句的用法称为。 4、执行循环语句体中的break语句后将使用包含它的循环语句。 5、要结束当前正在执行循环体语句而直接进入下一循环周期,需要执行语句。 6、在for语句中表达式允许省略,但不能少,语句for( ; ;) ;构成的是循环。 7、在for语句中,省略表达式2时,则循环为循环。 8、执行语句for(i=1;i++<4; );后变量i的值是。 9、要使用循环程序提前结束本次循环周期并开始下一个循环周期,应在循环体内有条件使用语句。 10、在每次循环周期均要执行一次的语句,称为。 11、for语句括号内的3个表达式的作用分别是、和循环控制变量的更新。 二、选择题 1、若k为整形变量,则while循环共循环()。 k=5; while(k>=0) k-1; A、无限循环 B、6次 C、5次 D、4次 2、与while( ! n) ; 中表达式!dn等价的是()。 A、dn>=0 B 、dn!=0 C、dn == 0 D、dn != 1 3、以下程序段,while循环执行的次数是() int k=0; while( k == 1) k++; A、无限次 B、有语法错,不能执行 C、一次也不执行 D、执行1次 4、在C语言中,当do while语句中的条件为()时,结束该循环。 A、0 B、1 C、TRUE D、非0 5、下面程序段的输出结果是() do { b-=a; a++; }while(b--<0); A、10,-1 B、2,8 C、9,0 D、4,-3 6、以下描述正确的是() A、由于do while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 B、do while循环由do开始,用while结束,在while(表达式)后面不能写分号 C、在do while循环体中,一定要有能使while后面匠值变为零的操作 D、do while循环中,根据情况可以省略while 7、若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)。 s=c; for(b=1;b<=c;b++) s=s+1; 则与上述程序段功能等价的赋值语句是() A、s=a+b; B、s=a+c; C、s=s+c; D、s=b+c; 8、假定a,b,c,d均已定义为整型变量,且a、c均已赋值,a大于0,c大于0,则与程序段for(d=a,b=1;b<=c;b++) d--;功能等价的语句是() A、d=a+b; B、d=a+c; C、d=a-b; D、d=a-c 9、下列关于for循环的说法正确的是() A、for循环只能用于循环次数已经确定的情况 一、循环结构(Iteration Structure)的概述 1.目的 为了解决含有重复处理内容的问题,必须采用循环语句(Loop Statement)来编程实现。 2.类型 (1)当型循环结构 (2)直到型循环结构 二、循环语句 1.while语句 ①功能:实现当型循环结构。 ②形式 while(表达式){ 循环体 } ③特点:先判断后执行。 ④举例:(累加和问题)编程计算整数1~100的和。 int i ; //循环变量 int sum = 0 ; //累加和清0 i = 1 ; //循环变量i赋初值 while( i <= 100){ sum = sum + i ; //循环变量累加到sum中 i = i + 1; //改变循环变量i的值 } 2.do-while语句 ①功能:实现直到型循环结构。 ②形式 do{ 循环体 }while(表达式); //注意最后的分号 ③特点:先执行后判断。 ④举例:修改上例。 /*利用do-while语句编程实现整数1~100的和。*/ int i ; //循环变量 int sum = 0 ; //累加和清0 i = 1 ; //循环变量i赋初值 do{ sum = sum + i ; //循环变量累加到sum中 i = i + 1; //改变循环变量i的值 }while(i<=100);//注意最后的分号 3.for语句 ①功能:实现当型循环结构。 ②形式 for(表达式1;表达式2;表达式3){ 循环体 } ③特点:先判断后执行;使用频率最高。 ④举例:修改上例。 /*使用for语句编程计算整数1~100的和。*/ int i ; //循环变量 int sum = 0 ; //累加和清0 for( i = 1 ; i <=100 ; i++ ){//第一个表达式完成循环变量i赋初值;第三个表达式实现改变循环变量i的值 sum = sum + i ; //循环变量累加到sum中 } 4.几种循环语句的比较 ①由于while语句和for语句均实现当型循环结构,两者是完全等价的。 for(表达式1;表达式2;表达式3){ 第5章循环结构程序设计作业参考答案 班级学号姓名 【第140页】 5-1、请画出课本里5.6中给出的3个程序段的传统流程图。 (1)程序1: #include for (j=1;j<=5;j++,n++) { if(n%5==0)printf("\n"); //控制在输出5个数据后换行 if (i==3 && j==1) continue; //遇到第3行第1列,提前结束执行本次内循环体 printf("%d\t",i*j); } printf("\n"); return 0; } (1)程序1流程图(2)程序2流程图(3)程序3流程图 5-3、输入两个正整数m和n,求其最大公约数和最小公倍数。 #include 实验5:循环结构程序设计 实验名称:循环结构程序设计成绩: 实验日期:年月日实验报告日期:年月日 一、实验目的 1、掌握while,do-while,for循环的语法结构与应用。 2、掌握while,do-while循环的区别。 3、掌握Turbo C单步执行调试程序的方法。 二、实验内容 完成程序题: 1、用三种循环结构,求1000以内奇数的和。 2、用while,do-while循环求i-10的连加和,i由用户输入。 3、有一堆零件(100-200个之间),如果以4个零件为一组进行分组,则多2个零件;如果以 7个零件为一组进行分组,则多3个零件;如果以9个零件为一组进行分组,则多5个零件。 编程求解这堆零件总数。 提示:用穷举法求解。即零件总数x从100-200循环试探,如果满足所有几个分组已知条件,那么此时的x就是一个解。分组后多几个零件这种条件可以用求余运算获得条件表达式。 三、实验要求 1、实验前编制源程序、对第2个实验内容需要准备测试数据。 2、在Turbo C下完成程序的编辑、编译、运行。查看、分析程序结果。 四、实验步骤、过程 1、编辑、编译、运行程序题1。 2、编辑、编译、运行程序题2,分别使用数据3,15做测试。 3、编辑、编译、运行程序题3。 五、源程序清单、测试数据、结果。 1、用三种循环结构,求1000以内奇数的和。 (1)用while结构实现 void main() { long sum; int i,item; sum=0,i=0,item=2*i+1; while(item<1000) { sum=sum+item; i++; item=2*i+1; } printf("1+3+5+...999=%ld\n",sum); } (2)用do-while结构实现 void main() { long sum; int i,item; sum=0,i=0,item=2*i+1; do { sum=sum+item; i++; item=2*i+1; }while(item<1000); printf("1+3+5+...999=%ld\n",sum); } (3)用for结构实现 void main() { long sum; int i,item; for(sum=0,i=0,item=2*i+1; item<1000; i++,item=2*i+1) sum=sum+item; printf("1+3+5+...999=%ld\n",sum); 【教学案例一】 1. 实验目的 熟练使用for语句控制循环。 2. 实验任务 (1)实验内容:打印输出所有"水仙花数"。所谓"水仙花数"是指一个三位的正整数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=13+53+33。 (2)实验要求:没有输入,输出所有"水仙花数"。 程序输出以下4个"水仙花数": 153 370 371 407 3. 实验分析 (1)问题分析:用循环语句循环测试每一个三位数是否符合"水仙花数"的规则。即对所有100至999的数,把每个数分解出个位数,十位数和百位数,再判断是否符合条件。 (2)实现要点:用一次穷举循环就可以了。因为是固定次数的循环,一般采用for语句。对于每个当前的整数,用取余和整除运算分解出各位的数字。对于三位的正整数n,个位数g = n%10,十位数s = (n%100)/10,百位数b = n/100。 4. 参考代码 #include (1)实验内容:根据下面关系式,求π的值,直到最后一项的值小于epsilon 。epsilon 的值由键盘输入。 12!3!!12335357357n p =++++???????…+…(2n+1) (2)实验要求:改正下面的错误程序,达到满足如下表的运行示例结果。测试用例: /* 1 */ #include 实验教案 一、实验目的 (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 实验五循环结构程序设计 一、实验目的 熟悉程序框架;理解单重循环与多重循环程序的结构及执行过程;掌握循环控制指令的用法,会使用数据串操作指令编程;熟练掌握循环结构程序的设计方法和利用设置断点调试程序的方法。 二、示例 阅读下面程序框架,并加以注释 DATA_SEG SEGMENT AT 0E000H ARRAY_B LABEL BYTE ARRAY_W DW50 DUP (?) DATA_SEG ENDS ;以上为定义数据段 STACK_SEG SEGMENT PARA STACK ‘STACK’ DW100H DUP (?) TOS LABEL WORD STACK_SEG ENDS ;以上为定义堆栈段 CODE_SEG SEGMENT MAIN PROC FAR ASSUME CS: CODE_SEG, DS: DATA_SEG, SS: STACK_SEG ORG1000H START: MOV AX, STACK_SEG MOV SS, AX ;给SS赋值 MOV SP, OFFSET TOS ;给SP赋值 PUSH DS 临时保存DS的值 SUB AX, AX PUSH AX MOV AX, DATA_SEG MOV DS, AX ;给DS赋值 ┇ ;程序段 RET MAIN ENDP CODE_SEG ENDS ;以上定义代码段 END START 三、实验题 1 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。 2试编制一个程序把AX中的16进制数转换为ASCII码,并将对应的ASCII码依次存放到MEM数组中的四个字节中。例如,当(AX)=2A49H时,程序执行完后,MEM中的4个字节内容为39H,34H,41H,32H。 四、实验报告循环结构程序设计课后习题及答案
循环结构程序设计(C语言实验报告)
实验2-循环结构程序设计
循环结构程序设计练习题 内含答案
循环结构程序设计代码
C语言循环结构程序设计实验报告
循环结构程序设计典型例题
循环结构程序设计(汇编语言)
循环结构程序设计课后习题及答案
实验5_循环结构程序设计2题目及解答
循环结构程序设计典型例题
第三节:循环结构程序设计题目
循环程序设计习题及答案
循环结构程序设计:三种循环语句
第5章 循环结构程序设计作业参考答案
实验5:循环结构程序设计
2.2.10循环结构程序设计 - 循环结构程序设计_教学案例
实验三 循环结构程序设计(教案)
汇编语言循环结构程序设计