循环控制


经典语句大全 2019-08-06 08:11:23 经典语句大全
[摘要]循环控制篇(1):循环语句与循环控制Turbo C 2 0提供三种基本的循环语句: for语句、while语句和do-while语句。一、循环语句(一)、for循环 它的一般形式为:for(;;)语句;初始化总是一个赋值语句,它用来给循环控制变量赋初值;条件表达式是一

【www.shanpow.com--经典语句大全】

循环控制篇(1):循环语句与循环控制


Turbo C 2.0提供三种基本的循环语句: for语句、while语句和do-while语句。一、循环语句(一)、for循环 它的一般形式为:for(<初始化>;<条件表过式>;<增量>)语句;初始化总是一个赋值语句,它用来给循环控制变量赋初值;条件表达式是一个关系表达式,它决定什么时候退出循环;增量定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用;分开。例如:for(i=1;i<=10;i++)语句;上例中先给i赋初值1,判断i是否小于等于10,若是则执行语句,之后值增加1。再重新判断,直到条件为假,即i>10时,结束循环。注意: (1).for循环中语句可以为语句体,但要用{和}将参加循环的语句括起来。(2).for循环中的初始化、条件表达式和增量都是选择项,即可以缺省,但;不能缺省。省略了初始化,表示不对循环控制变量赋初值。省略了条件表达式,则不做其它处理时便成为死循环。省略了增量,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。(3).for循环可以有多层嵌套。例如:for(;;) 语句;for(i=1;;i+=2) 语句;for(j=5;;) 语句;这些for循环语句都是正确的。main() {int i,j;printf(i j\n);for(i=0;i<2;i++)for(j=0;j<3;j++)printf(%d %d\n,i,j);} 输出结果为: i j0 00 10 21 01 11 2用for循环求1+2+……+100的和:main(){int sn=0,i;for(i=1;i<=100;i++)sn+=i; /*1+2+……+100*/printf(%d\n,sn);}从程序可以看出,使用循环语句可以大大简化代码。(二)、while循环 它的一般形式为: while(条件)语句;while循环表示当条件为真时,便执行语句。直到条件为假才结束循环。并继续执行循环程序外的后续语句。例如:#include stdio.hmain() { char c; c="\0"; /*初始化c*/while(c!="\n") /*回车结束循环*/c=getche(); /*带回显的从键盘接收字符*/} 上例中,while循环是以检查c是否为回车符开始,因其事先被初始化为空,所以条件为真,进入循环等待键盘输入字符;一旦输入回车,则c="\n",条件为假,循环便告结束。与for循环一样,while循环总是在循环的头部检验条件,这就意味着循环可能什么也不执行就退出。 注意: (1).在while循环体内也允许空语句。 例如: while((c=getche())!="\n"); 这个循环直到键入回车为止。 (2).可以有多层循环嵌套。 (3).语句可以是语句体, 此时必须用{和}括起来。用while循环求1+2+……+100的和:main(){int sn=0,i=0;while(++i<=100)sn+=i; /*求1+2+……+100*/printf(%d\n,sn);}(三)、do--while循环 它的一般格式为:do{语句块;}while(条件);这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断条件是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句。同样当有许多语句参加循环时,要用{和}把它们括起来。用do--while循环求1+2+……+100的和:main(){int sn=0,i=1;dosn+=i; /*求1+2+……+100*/while(++i<=100);printf(%d\n,sn);}从上面三个程序看出,使用for,while和do--while求解同样的问题,基本思路都差不多,只是在第一次计算时,注意初值。二、循环控制(一)、break语句break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则将成为一个死循环而无法退出。break在switch中的用法已在前面介绍开关语句时的例子中碰到,这里不再举例。 当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起。即满足条件时便跳出循环。例如:main(){int sn=0,i;for(i=1;i<=100;i++){if(i==51) break; /*如果i等于51,则跳出循环*/sn+=i; /*1+2+……+50*/}printf(%d\n,sn);}可以看出,最终的结果是1+2+……+50。因为在i等于51的时候,就跳出循环了。自己写写怎样在while和do--while循环中增加break语句。注意: 1. break语句对if-else的条件语句不起作用。2. 在多层循环中,一个break语句只向外跳一层。例如:main() {int i,j;printf(i j\n);for(i=0;i<2;i++)for(j=0;j<3;j++){if(j==2) break;printf(%d %d\n,i,j);}} 输出结果为: i j0 00 11 01 1当i==0,j==2时,执行break语句,跳出到外层的循环,i变为1。(二)、continue语句continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。continue语句只用在for、while、do-while等循环体中, 常与if条件语句一起使用,用来加速循环。例如:main(){int sn=0,i;for(i=1;i<=100;i++){if(i==51) continue; /*如果i等于51,则结束本次循环*/sn+=i; /*1+2+……+50+52+……+100*/}printf(%d\n,sn);}从程序中可以看出,continue语句只是当前的值没有执行,也就是说当前的值跳过去了,接着执行下次循环。main() {int i,j;printf(i j\n);for(i=0;i<2;i++)for(j=0;j<3;j++){if(j==1) continue;printf(%d %d\n,i,j);}} 输出结果为: i j0 00 21 01 2(三)、goto语句goto语句是一种无条件转移语句,与BASIC中的goto语句相似。goto语句的使用格式为: goto 标号; 其中标号是Turbo C 2.0中一个有效的标识符,这个标识符加上一个:一起出现在函数内某处,执行goto语句后,程序将跳转到该标号处并执行其后的语句。标号既然是一个标识符,也就要满足标识符的命名规则。另外标号必须与goto语句同处于一个函数中,但可以不在一个循环层中。通常goto语句与if条件语句连用,当满足某一条件时,程序跳到标号处运行。goto语句通常不用,主要因为它将使程序层次不清,且不易读,但在多层嵌套退出时,用goto语句则比较合理。main(){ int sn=0,i;for(i=1;i<=100;i++){if(i==51) goto loop; /*如果i等于51,则跳出循环*/sn+=i; /*1+2+……+50*/}loop: ;printf(%d\n,sn);}可以看出,这儿的goto语句和break作用很类似。这儿的loop: ;printf(%d\n,sn);也可以写成loop: printf(%d\n,sn);main(){int sn=0,i;for(i=1;i<=100;i++){if(i==51) goto loop; /*如果i等于51,则跳出本次循环*/sn+=i; /*1+2+……+50+52+……+100*/loop: ;}printf(%d\n,sn);}可以看出这儿的loop语句和continue的作用类似。但是某些情况下又必须使用goto语句,否则会让程序大大臃肿。如:main() {int i,j,k;printf(i j k\n);for(i=0;i<2;i++)for(j=0;j<3;j++)for(k=0;k<3;k++){if(k==2) goto loop;printf(%d %d %d\n,i,j,k);}loop: ;} 输出结果为: i j k0 0 00 0 1如果不使用goto语句,而使用break,continue语句,应该这样main() {int i,j,k;printf(i j\n);for(i=0;i<2;i++){for(j=0;j<3;j++){for(k=0;k<3;k++){if(k==2) break;printf(%d %d %d\n,i,j,k);}if(k==2) break;}if(k==2) break;}}输出结果为: i j k0 0 00 0 1所以在同时跳出多层循环时,应该使用goto语句。记住,所有的goto语句其实都是可以用break,continue代替的。下面举几个例子:1.求两个整数的最大公约数。例如10和15的最大公约数是5。分析:最大公约数一定小于等于最小的那个数一半,同时能被两数整除。main(){int num1,num2,i,min;scanf(%d%d,&num1,&num2);min=num1 for(i=min/2;i>0;i--)if(num1%i==0&&num2%i==0) break;printf(最大公约数为%d\n,i);}2.求1!+2!+……+n!(n<10)main(){int n,i;long temp=1,sn=0; /*从9!以后,所得的值就超过了int范围*/scanf(%d,&n);for(i=1;i<=n;i++){temp*=i;sn+=temp; /*如果没有这一步,求的就是n!*/}printf(%ld\n,sn);}那么想想,如果求1!+3!+5!+……+n!应该怎么办?3.判断一个整数是不是素数(素数就是只能被本身和1整除的数)。#include math.hmain(){int num,i,flag=0;scanf(%d,&num);for(i=2;i {flag=0; /*标志变量复位*/if(num%i==0){flag=1;break;}}if(flag==0) printf(是素数\n);else printf(不是素数\n);} 可以说,在所有的C语言书上,都有判断素数的例题。它的编程思想是:把一个变量作为标志变量,用来标志是不是素数;循环体是从2到sqrt(num),因为如果一个数不是素数的话,一定能分解成num=num1*num2,它们中的最小值一定小于sqrt(num),所以循环的时候只要到sqrt(num)就可以了。同时要注意变量复位的问题。?NUM1:NUM2;>

循环控制篇(2):循环-控制程序执行(精华版)

1IF条件判断语句
a.单行形式1(If...Then)
       If条件判断then条件成立结果
       注意: 在单行形式中,按照If...Then 判断的结果也可以执行多条语句。所有语句必须在同一行上并且以冒号分开。
实例:
Sub test()
If A > 10 Then A = A 1 : B = B A : C = C B
End Sub
b.块形式(If...Then…End)常用
If 条件判断  Then
条件成立结果
End If
实例:
                 If A > 10 Then
                      A = A 1
                      B = B A
                      C = C B
                 End If
c.块形式的嵌套
If条件判断 Then条件成立时的结果
ElseIf条件判断 Then条件成立时的结果
……
Else条件不成立时的结果
End If
实例:
Sub 等级判断()
    IfSheet1.Range("b1") >= 90 Then
       Sheet1.Range("b2") = "优"
    ElseIfSheet1.Range("b1") >= 80 Then
       Sheet1.Range("b2") = "良"
    ElseIfSheet1.Range("b1") >= 70 Then
       Sheet1.Range("b2") = "中"
    Else
       Sheet1.Range("b2") = "差"
    End If
End Sub 2DO...LOOP循环语句
形式1:
Do  While  逻辑表达式             [循环体]             [Exit Do]                        [循环体]
Loop
形式2:
Do                [循环体]             [Exit Do]                        [循环体]
Loop [{While | Until}表达式]
➜说明:
①Exit Do  为可选语句,执行后将跳出循环,执行LOOP以后的语句
②while:形式1中,当这个条件为True时就   循环,当没有while时候为do...loop循环形式,一般结合if...then...语句使用。表示符合某条件时结束。
③无论是形式1还是形式2,循环语句中都要自己加计步器,也就是i= i 1
实例:
Sub test()
    Dim i As Integer
    i = 2
    Do While Cells(i, 2) > 800
         i = i 1
    Loop
    MsgBox   cell(i,1)
End Sub
代码解释:让计数器在2的基础上累加,直到条件”Cells(i, 2) > 800”成立时,停止循环。最后根据计数器i的值引用对应的单元格,显示出来。
3For  each...next循环语句
注释:针对一个数组或集合中的每个元素,重复执行一组语句。
语法结构:
For Each遍历集合或数组中所有元素的变量 In对象集合或数组的名称[执行的一条或多条语句]
[Exit For][执行的一条或多条语句]
Next
➜说明:For Each在集合对象或数组元素循环完后,就退出来循环。
实例:遍历循环所有工作表   Sub ShCount2()
           Dim Sh As Worksheet
           Dim s As String
          For Each Sh In Worksheets
                 s = s & Sh.Name & Chr(13)
          Next
          MsgBox "工作簿中含有以下工作表:" & Chr(13) & s
  End Sub 4For ...next循环语句
注释:以指定次数来重复执行一组语句。
For 计数变量 = 初始值 To 终止值 [Step 步长值][执行的一条或多条语句][Exit For][执行的一条或多条语句]
Next [计数变量]    
➜说明:
1.循环中可以在任何位置放置任意个 Exit For 语句,随时退出循环。
2.Exit For与 If...Then经常一起使用,目的是:找到符合条件后,跳出循环,而不必再进行不必要的循环。
3. [计数变量]   可以不写
4.[Step 步长值]可正可负。默认为1。若为负数,则从循环变量的终止值开始循环。一般批量删除空行或者批量删除工作表的时候,步长值用负数。(也就是所谓的从后往前删除,从前往后删除会遗漏)
实例1:批量删除空行
Sub 删除空行()
    Dim i As Long
    For i = 65536 To 1 Step  -1    "注意,这里的步长值是负数
        If Cells(i, 1) = "" Then
            Cells(i, 1).EntireRow.Delete
        End If
    Next
End Sub 实例2:遍历循环所有工作表
Sub ShCount1()
      Dim c As Integer
      Dim i As Integer
      Dim s As String
      c= Worksheets.Count
      For i = 1 To c
          s = s & Worksheets(i).Name &Chr(13)
      Next
      MsgBox "工作簿中含有以下工作表:" & Chr(13) & s
  End Sub

循环控制篇(3):For循环控制结构


在指定的条件下多次重复执行的一组语句,可通过循环结构来实现。  
循环语句产生一个重复执行的语句序列,直到指定的条件满足为止。Visual Basic提供了三种不同风格的循环结构,包括计数循环(for-next循环)、当循环(while-end while循环)和do循环(do-loop循环)。其中for-next循环按规定的次数执行循环体,而while循环和do循环则是在给定的条件满足时执行循环体。
for循环也称for-next循环或计数循环。其一般格式如下:
For  循环变量= 初值 to
 终值 [step
步长]
[ 循环体]
next [ 循环变量]
[, 循环变量]
其中,步长:(可选项)。循环变量的增量,是数值表达式。其值可以是正数(递增循环)或负数(递减循环),但不能为0。如果步长为1,则可以省略不写。
初值,终值和步长均为数值表达式,但其值不一定是整数,可以是实数(即带小数点的数),VB会自动将其取整。
       
 
例如:在窗体的单击事件中输入:
Private Sub
Form_Click()
Dim i As
Integer
For i = 1 To
10
Print
i
Next
i
End
Sub
其执行过程为:
1)把初值赋给循环变量i
2)将i的值与终值10进行比较。若i>10,则退出循环体。执行5),否则执行循环体。
3)i增加一个步长值。即i=i+1
4)返回2)继续执行
5)执行Next语句后面的代码。
在VB中,For-next循环遵循“先检查,后执行”的原则。即先检查循环变量是否超过终值。然后决定是否执行循环体。因此,在下列情况下,循环体将不会被执行:
1)当步长为正数,初值大于终值
2)当步长为负数,初值小于终值
当初值等于终值时,不管步长是正数还是负数。都执行一次循环体。
For语句和next语句必须成对出现,且for语句必须在next语句之前。
 

本文来源:https://www.shanpow.com/mrmy/402821/

《循环控制.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式

相关阅读
  • 天天金句50例 天天金句50例
  • 攻坚克难类排比句40例 攻坚克难类排比句40例
  • 比学赶超类排比句金句40组 比学赶超类排比句金句40组
  • “不”字型排比句40例 “不”字型排比句40例
  • 公文写作实用排比句100组 公文写作实用排比句100组
  • 公文写作实用金句100组大全 公文写作实用金句100组大全
  • “攻坚克难”排比句金句40组 “攻坚克难”排比句金句40组
  • “加油鼓劲”排比句金句40组 “加油鼓劲”排比句金句40组
为您推荐