乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      for語句

       chuanshaoke 2010-04-10

      for語句是C語言所提供的功能更強,使用更廣泛的一種循環(huán)語句。其一般形式為:
      for(表達式1;表達式2;表達3)
      語句;
      表達式1 通常用來給循環(huán)變量賦初值,一般是賦值表達式。也允許在for語句外給循環(huán)變量賦初值,此時可以省略該表達式。
      表達式2 通常是循環(huán)條件,一般為關系表達式或邏輯表達式。
      表達式3 通常可用來修改循環(huán)變量的值,一般是賦值語句。
      這三個表達式都可以是逗號表達式,即每個表達式都可由多個表達式組成。三個表達式都是任選項,都可以省略。
      一般形式中的“語句”即為循環(huán)體語句。for語句的語義是:
      1.首先計算表達式1的值。
      2.再計算表達式2的值,若值為真(非0)則執(zhí)行循環(huán)體一次,否則跳出循環(huán)。
      3.然后再計算表達式3的值,轉回第2步重復執(zhí)行。在整個for循環(huán)過程中,表達式1只計算一次,表達式2和表達式,3則可能計算多次。循環(huán)體可能多次執(zhí)行,也可能一次都不執(zhí)行。for 語句的執(zhí)行過程如圖所示。
      void main(){
      int n,s=0;
      for(n=1;n<=100;n++)
      s=s+n;
      printf("s=%d\n",s);
      }
      用for語句計算s=1+2+3+...+99+100

      int n,s=0;
      for(n=1;n<=100;n++)
      s=s+n;
      printf("s=%d\n",s);
      本例for語句中的表達式3為n++,實際上也是一種賦值語句,相當于n=n+1,以改變循環(huán)變量的值。
      void main(){
      int a=0,n;
      printf("\n input n: ");
      scanf("%d",&n);
      for(;n>0;a++,n--)
      printf("%d ",a*2);
      }
      用for語句修改例題。從0開始,輸出n個連續(xù)的偶數(shù)。
      int a=0,n;
      printf("\n input n: ");
      scanf("%d",&n);
      for(;n>0;a++,n--)
      printf("%d ",a*2);
      本例的for語句中,表達式1已省去,循環(huán)變量的初值在for語句之前由scanf語句取得,表達式3是一個逗號表達式,由a++,n-- 兩個表達式組成。每循環(huán)一次a自增1,n自減1。a的變化使輸出的偶數(shù)遞增,n的變化控制循次數(shù)。
      在使用for語句中要注意以下幾點
      1.for語句中的各表達式都可省略,但分號間隔符不能少。如:for(;表達式;表達式)省去了表達式1。for(表達式;;表達式)省去了表達式2。
      for(表達式;表達式;)省去了表達式3。for(;;)省去了全部表達式。

      2.在循環(huán)變量已賦初值時,可省去表達式1,如例3.27即屬于這種情形。如省去表達式2或表達式3則將造成無限循環(huán),這時應在循環(huán)體內設法結束循環(huán)。例題即屬于此情況。
      void main(){
      int a=0,n;
      printf("\n input n: ");
      scanf("%d",&n);
      for(;n>0;)
      { a++;n--;
      printf("%d ",a*2);
      }
      }
      本例中省略了表達式1和表達式3,由循環(huán)體內的n--語句進行循環(huán)變量n的遞減,以控制循環(huán)次數(shù)。
      void main(){
      int a=0,n;
      printf("\n input n: ");
      scanf("%d",&n);
      for(;;){
      a++;n--;
      printf("%d ",a*2);
      if(n==0)break;
      }
      }
      本例中for語句的表達式全部省去。由循環(huán)體中的語句實現(xiàn)循環(huán)變量的遞減和循環(huán)條件的判斷。當n值為0時,由break語句中止循環(huán),轉去執(zhí)行for以后的程序。在此情況下,for語句已等效于while( 1)語句。如在循環(huán)體中沒有相應的控制手段,則造成死循環(huán)。

      3.循環(huán)體可以是空語句。
      #include"stdio.h"
      void main(){
      int n=0;
      printf("input a string:\n");
      for(;getchar()!='\n';n++);
      printf("%d",n);
      }
      本例中,省去了for語句的表達式1,表達式3也不是用來修改循環(huán)變量,而是用作輸入字符的計數(shù)。這樣,就把本應在循環(huán)體中完成的計數(shù)放在表達式中完成了。因此循環(huán)體是空語句。應注意的是,空語句后的分號不可少,如缺少此分號,則把后面的printf 語句當成循環(huán)體來執(zhí)行。反過來說,如循環(huán)體不為空語句時,決不能在表達式的括號后加分號,這樣又會認為循環(huán)體是空語句而不能反復執(zhí)行。這些都是編程中常見的錯誤,要十分注意。

      4.for語句也可與while,do-while語句相互嵌套,構成多重循環(huán)。以下形成都合法的嵌套。
      (1)for(){…
      while()
      {…}

      }
      (2)do{

      for()
      {…}

      }while();
      (3)while(){

      for()
      {…}

      }
      (4)for(){

      for(){

      }
      }
      void main(){
      int i,j,k;
      for(i=1;i<=3;i++)
      { for(j=1;j<=3-i+5;j++)
      printf(" ");
      for(k=1;k<=2*i-1+5;k++)
      {
      if(k<=5) printf(" ");
      else printf("*");
      }
      printf("\n");
      }
      }
       
       
       
       
       
       
       
       
      for語句是最靈活也是最常用的循環(huán)結構。Java主要提供了兩種形式的for語句:數(shù)值型for循環(huán)和基于集合的for循環(huán)。
      1. 數(shù)值型for循環(huán)
      數(shù)值型for循環(huán)的一般形式為:
      for(表達式1;表達式2;表達式3)
      語句;
      在關鍵字for后的括號內有3個表達式語句,其中表達式1和表達式3可以是任意表達式語句或空語句,甚至是逗號表達式;表達式2必須為boolean型的常量、變量或表達式。它的執(zhí)行過程如圖5-9所示,說明如下:

      (1)先求解表達式1,然后求解表達式2,若其值為真(true),則執(zhí)行for語句中內嵌的循環(huán)語句;若其值為假(false),則轉到第5步結束循環(huán)。
      (2)求解表達式3。
      (3)轉回上面求解表達式2,繼續(xù)執(zhí)行。
      (4)循環(huán)結束,執(zhí)行for語句下面的一個語句。
      在使用數(shù)值型for循環(huán)時,常把表達式1用于初始化循環(huán)變量,表達式2是循環(huán)的判定條件,表達式3常用作循環(huán)增量表達式。其形式如下:
      for(初始化循環(huán)變量;循環(huán)條件;循環(huán)變量增量)
      語句;
      如例2.6求1×2×3×4×5,其算法實現(xiàn)如下:
      【例5.8】
       
       
      程序執(zhí)行結果如下:
      1×2×3×4×5=120
      使用注意事項:
      (1)for循環(huán)中的表達式1(循環(huán)變量初始化)、表達式2(循環(huán)條件)和表達式3(循環(huán)變量增量)都是可選項, 即可為空語句,但“;”不能缺省。
      省略了“表達式1(循環(huán)變量初始化)”,表示不對循環(huán)控制變量初始化。循環(huán)變量的初始化工作可置于for循環(huán)之前。
      省略了“表達式2(循環(huán)條件)”,則for循環(huán)將成為死循環(huán),不停的執(zhí)行循環(huán)體。如:
      for(int i=2; ;i++)
      {
      t= t*i;
      }
      相當于:
      for(int i=2;true;i++)
      {
      t= t*i;
      }
      省略了“表達式3(循環(huán)變量增量)”,則不對循環(huán)控制變量進行操作,這時可在語句體中加入修改循環(huán)控制變量的語句。如:
      for(int i=2;i<=5 ;i++)
      {
      t= t*i;
      }
      相當于:
      for(int i=2;i<=5;)
      {
      t= t*i;
      i++;
      }
      省略了“表達式1(循環(huán)變量初始化)”和“表達式3(循環(huán)變量增量)”。如:
      for(int i=2;i<=5 ;i++)
      {
      t= t*i;
      }
      相當于:
      int i=2;
      for(;i<=5;)
      {
      t= t*i;
      i++;
      }
      當然,3個表達式可以同時省略。如:
      for(int i=2;i<=5 ;i++)
      {
      t= t*i;
      }
      相當于:
      int i=2;
      for(;;)
      {
      t = t*i;
      i++;
      if(i<=5) break; //如果i<=5,則跳出循環(huán)體。
      }
      (2)表達式1和表達式3可以是一個簡單表達式也可以是逗號表達式。如:
      int t=1;
      for(int i=2;i<=5;i++)
      {
      t= t*i;
      }
      相當于:
      int t,i;
      for(t=1,i=2;i<=5;t=t*i,i++); //該語句雖簡潔,但不夠清晰,建議程序中不要這么寫。
      2. 基于集合的for循環(huán)
      基于集合的for循環(huán)是在JDK5.0版本之后,為簡化集合類、枚舉和數(shù)組的迭代過程而提出來的。其一般形式如下:
      for(類型 標識符:可迭代的表達式) 語句;
      在關鍵字for后的括號中有兩個控制元素,它們之間用一個冒號“:”分隔開。第一個元素用于指定的一個類型標識符;而第二個元素指定了一個可迭代的表達式(結果通常是集合或數(shù)組)。第一個元素指定的類型標識符其類型應與集合或數(shù)組中存放的對象相兼容。它的語義可描述如下,其流程如圖5-10所示。

      類型 標識符 =null;
      for(int i=0; i<可迭代表達式結果長度; i++)
      {
      標識符 = 可迭代表達式結果.get(i);
      語句;
      }
      集合類和枚舉將在后面章節(jié)詳細介紹,這里舉個在數(shù)組中運用的例子。如例2.9有50個學生,要求將他們之中成績在80分以上者打印出來。
      【例5.9】
       
      基于集合的for循環(huán),在遍歷集合對象時能使程序更加簡潔。但因其隱藏了循環(huán)變量,當執(zhí)行過程中需引用數(shù)組下標或迭代器時,將會變得復雜些。

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多