1、第七章控制结构,综合:循环程序结构的嵌套,例1:打印一行“*”(“*”的个数由输入决定),分析: 1. 采用什么结构?,*,注意:使用print时,若要将打印数据在同一行输出,应用“;”作为连接。“;”称为紧凑符。否则将会换行打印。,2. 采用何种循环?,打印一行“*”其本质就是重复输出“*”,因此采用循环结构。,打印的“*”的个数就是循环次数,这个值是通过输入取得的。循环次数能够预知的情况下,可以使用计数循环。,3. 使用print打印“*” 。,打印一个”*”,print “*”,打印6个”*”,print “*”,For j = 1 to 6Next j,*,*,“;”称为紧凑符。 打印
2、数据在同一行输出,;,print “*”,请看VB实现,例2:输出矩形图案程序设计,(1)你能否让计算机输出一个由“*”号组成的5行、6列的矩形?,* * * * *,For i = 1 to 5Next i,For j = 1 to 6print “*”; Next j,print,打印换行,内层循环,外层循环,当我们要重复执行某些语句组时,我们使用循环结构程序设计方式,而当我们重复执行的循环体包含一个完整的循环结构时,此时就产生了循环的嵌套,我们称之为双重循环。以此推广,当嵌套的层数大于或等于两层时,我们称之为多重循环。内层循环的变量值变化一轮,外层循环的变量值才变化一次。双重循环内部循环
3、体语句执行的次数为外层循环次数与内层循环次数的乘积。注意:多重循环内外层循环不能交叉、内外层循环的循环变量不能同名。,执行次数:?,5*6,以下循环是打印 行 列共 个“*”号 , 语句 Print “*“; 的总共循环次数为 。For i=1 to 4For j=1 to 2Print “*“;Next jPrint Next i,立马检验,4,2,8,8,例2:输出矩形图案程序设计,请看VB实现,(2)如果要求行、列值大小可以由输入决定,你如何编程实现?,For i = 1 to 5For j = 1 to 6print “*”;Next jprint Next i,m,n,m = val
4、(inputbox(“输入行数”) n = val(inputbox(“输入列数”),当print 后面输出为空且没有紧凑符起换行作用。每次换行应该在打印完一行以后执行,因此换行的实现应该在外层循环中。即内层循环控制行数,外层循环控制列数。,找错(鸡蛋里挑骨头),下列程序要完成打印m行n列的“*”号图形,请判断下列程序是否正确,如不正确请指出错在哪里:, Input m,n For i =1 to m For j =1 to n Print *;Next jPrint Next i,“*”, Input m,n For i = 1 to m For i =1 to n Print “*”;Ne
5、xt iPrint Next i,找错(鸡蛋里挑骨头),下列程序要完成打印m行n列的“*”号图形,请判断下列程序是否正确,如不正确请指出错在哪里:, Input m,n For i =1 to m For j =1 to n Print “*”;Next iPrint Next j, Input m,n For i = 1 to m For j =1 to n Print “*”Next jPrint Next i,;,输出直角三角形图案程序设计,提示:当各行“*”号的数量从固定值改变为渐变值时也可引用外循环变量的变化规律。,我们知道所需打印的行数,外层循环次数可以以此确定,但内层循环每次打印
6、的个数不相同,怎样找出规律并实现是关键。根据第1行打印一个“*”,第2行打印2个直到最后一行打印的情况分析,每行打印“*”的个数与所处行数一致,因此这里内层循环的终值应与外层循环变量的取值相一致。,* * * * * *,m = Val(InputBox(“输入行数:“)For i = 1 To mFor j = 1 To iPrint “*“;Next jPrint Next I,上机练习,1.两重循环输出直角三角形。在vb平台上实现。 * * * * * *,m = Val(InputBox(“输入行数:“)For i = 1 To mFor j = 1 To iPrint “*“;Next jPrint Next I,2.冒泡法排序在程序中应用 Dim a(10) As Integer Print “排序前数据:“ For i = 1 To 10 a(i) = Int(Rnd * 100) Print a(i); Next Print For i = 1 To 9For j = 1 To 10 - iIf a(j) a(j + 1) Thenx = a(j)a(j) = a(j + 1)a(j + 1) = xEnd IfNext j Next i Print “排序后数据:“ For i = 1 To 10 Print a(i); Next i Print,