學習C語言的循環結構

 
學習循環結構
       學習之前我們應該知道什麼是循環?以及爲什麼要使用循環?
              現在我們先來看一下循環的定義:解決某一問題要重複執行某些指令的情況就是循環。使用循環可以使我們解決問題變得更簡單一些,通過生活示例可以說明。
1、 while 循環
學習while循環的語法:
while<條件>
{
        <語句>;
}
學習while循環使用時需要注意的幾點:
Ø         在使用過程中,我們指定的條件,它的返回值應爲邏輯值(真或假);
Ø         應該先檢查條件,後執行循環體語句,也就是說循環體中的語句只能在條件爲真的時候才執行,如果第一次檢查條件的結果爲假,則循環中的語句根本不會執行。
Ø         因爲while循環取決於條件的值,因此,它可用在循環次數不固定或者循環次數未知的情況下。
Ø         一旦循環執行完畢(當條件的結果爲假時),程序就從循環最後一條語句之後的代碼行繼續執行。
Ø         如果循環中包含多條語句,需要用{}括起來。
Ø         While循環體中的每條語句應以分號;結束。
Ø         While循環條件中使用的變量必須先聲明並初始化,才能用於while循環條件中。
Ø         While循環體中的語句必須以某種方式改變條件變量的值,這樣循環纔可能結束。如果條件表達式中變量保持不變,則循環將永遠不會結束,從而成爲死循環。
示例:
#include<stdio.h>
void main ()
{
    int num=1,result;
    while (num<=10)
    {
       result=num*10;
       printf("%d × 10 %d /n",num,result);
       num++;
     }
}
 
2、 do-while循環
學習do-while循環的語法:
Do
{
        <語句>;
}while<條件>;
學習do-while時除了與while循環相同的注意點外,還需要注意:
Ø         它先執行循環體中的語句,然後再判斷條件是否爲真,如果爲真則繼續循環;如果爲假,則終止循環。
Ø         While語句後面必須有一個分號。
示例:1
do
{
 . . .
 . . .
 scanf(“%c”,&answer);
} while (answer != ’n’);
示例:2
#include<stdio.h>
void main ()
{
int number=5,guess;
 printf ("猜一個介於 1 與 10 之間的數/n");
 do
 {
       printf("請輸入您猜測的數:");
       scanf("%d",&guess);
       if (guess > number)
           printf("太大/n");
       else if (guess < number)
           printf("太小/n");
    } while (guess != number);
   printf("您猜中了! 答案爲 %d/n",number);
}
 
3、嵌套 while 循環
嵌套 while 循環的語法:
while(i <= 10)
{
     . . .
    while (i <= j)
    {
         . . .
         . . .
     }
      . . .
}
注:只有在內循環完全結束後,外循環纔會進行下一趟。
示例:
#include <stdio.h>
void main()
{
     int nstars=1,stars;
     while(nstars <= 10)
     {
               stars=1;
               while (stars <= nstars)
               {
                   printf("*");
                    stars++;
               }
       printf("/n");
       nstars++;
     }
}
 
4、嵌套 do-while 循環
嵌套 do-while 循環的語法:
do
{
    . . .
    do
    {
          . . .
     }while( . . .)
     . . .       
 }while( . . . )
注:只有在內循環完全結束後,外循環纔會進行下一趟。
示例:
#include <stdio.h>
void main()
{
int x;
char i, ans;
ans='y';
do
{
       x=0;
       printf("/n請輸入字符序列");
              fflush(stdin);
       do{
              i=getchar();
              x++;
             }while( i !='/n' );
       printf("/n輸入的字符數爲%d", --x);
       printf("/n是否需要輸入更多序列 (Y/N) ? ");
       ans = getch();
}while(ans =='Y' || ans == 'y');
}
 
注:while循環和do-while循環的區別在於:while循環是先判斷後執行,而do-while循環是先執行後判斷。
5、for循環
for 循環的一般語法:
for( 表達式1 ; 表達式2   ; 表達式3 )
{
     語句;
}
工作原理:
Ø         計算表達式1的值,通常爲循環變量賦初值
Ø         計算表達式2的值,即判斷循環條件是否爲真,若值爲真則執行循環體一次, 否則跳出循環;
Ø         計算表達式3的值,這裏通常寫更新循環變量的賦值表達式,然後轉回第2步重複執行;
示例:
#include <stdio.h>
void main()
{
    int number,count,factorial=1;
    printf("/n 請輸入任意一個正整數:");
    scanf("%d",&number);
    for(count = 1; count <=number; count++)
              factorial=factorial*count;
    printf("/n %d的階乘 = %d/n",number,factorial);
}
注:
Ø         for 循環中有三個表達式
Ø         for 語句中的各個表達式都可以省略
Ø         分號分隔符不能省略
省略表達式1:相當於省去了爲循環變量賦初值,此時應在for語句之前給循環變量賦初值
int num=0;
for(;num <= 10 ;num ++)
{     
      printf("%d/n",num*2);
}
省略表達式2:即不判斷循環條件,也就是認爲表達式2始終爲真,這時應在循環體內設法結束循環,否則將成爲死循環
for(num=1;;num++)
{
    ...
}
省略表達式3:即省去修改循環變量的值,但此時應在循環體內設法結束循環
for(i=1;i<=100;)
{
      sum=sum+1;
      i++;
}
省略三個表達式:即不爲循環變量賦初值,不設置循環條件(認爲表達式2爲真值),不修改循環變量的值,無終止地執行循環體。此時應在循環體內設法結束循環,否則會成爲死循環
for( ; ; )
{
     printf("這將一直進行下去");
     i = getchar();
     if(i == 'X' || i == 'x')
       break;
}
6、break語句
Ø         break語句可以改變程序的控制流
Ø         break語句用於do-while、while、for循環中時,可使程序終止循環而執行循環後面的語句
Ø         break語句通常在循環中與條件語句一起使用。若條件值爲真,將跳出循環,控制流轉向循環後面的語句
Ø         如果已執行break語句,就不會執行循環體中位於 break 語句後的語句
Ø         在多層循環中,一個break語句只向外跳一層
示例:
#include<stdio.h>
void main()
{
       int count=0,ch;
       printf("/n 請輸入一行字符:");
       while((ch=getchar())!='/n')
       {
              if(ch==' ')
                     break;
              count++;
       }
       printf("/n 共有 %d 個有效字符。/n",count);
}
7continue 語句
Ø         continue 語句只能用在循環裏
Ø         continue 語句的作用是跳過循環體中剩餘的語句而執行下一次循環
Ø         對於while和do-while循環,continue 語句執行之後的動作是條件判斷;對於for循環,隨後的動作是變量更新
示例:
#include<stdio.h>
void main()
{
       int i,sum = 0;
       for(i=1; i<=100;i++)
       {
              if( i % 10 == 3)
                     continue;
              sum += i;
       }
       printf("sum = %d /n",sum);
}
嵌套循環示例1
void main()
{
       int i,j,k;
       for(i=1;i<=4;i++)
       {
                    for(j=1;j<=4-i;j++)
                 printf(" ");
              for(k=1;k<=2*i-1;k++)
                 printf("*");
             printf("/n");
       }
            for(i=1;i<=3;i++)
           {
           for(j=1;j<=i;j++)
                  printf(" ");
           for(k=1;k<=7-2*i;k++)
                  printf("*");
          printf("/n");
           }
}
 
嵌套循環示例2
void main()
{
   int i,num;
   char answer;
   do
   {
              printf("請輸入一個數:");
              scanf("%d",&num);
              printf("/n");
              for (i = 1; i <= 10; i++)
              {
                     printf("=");
              }
              printf("/n 該數是 %d",num);
              printf("/n/n 您是否還要輸入其他的數(y/n)?");
              fflush(stdin);
              answer = getchar();
       } while (answer != 'n');
}
輸出:
請輸入一個數: 58
 
==========
該數是 58
 
您是否還要輸入其他的數(y/n)? y
請輸入一個數: 64
 
==========
該數是 64
 
您是否還要輸入其他的數(y/n)? n
Press any key to continue
 
 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章