程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言學習筆記(七)--循環程序設計

C語言學習筆記(七)--循環程序設計

編輯:關於C語言

 

1循環語句

 

1.1循環語句主要包括三種:while、do-while、for。

 

2while語句處理循環

 

2.1while語句基本形式:

 

While(表達式)

 

{循環體語句}

 

2.2執行流程:首先計算while表達式的值,當非零時執行循環體內的語句,執行完之後繼續判斷while表達式的值,如果非零,繼續執行循環體,直到表達式值為零時,跳出循環,執行後續的語句。

 

例子代碼:

 

 

<span style="font-size:18px;">#include "stdio.h" 

main (){ 

 int  i,sum; 

 i=1;  

 sum=0; 

 while ( i<=100 )       /* 累加的數i 小於或等於終止數n就循環累加,否則結束循環*/ 

{ sum=sum+i; 

       i++; 

     } 

  printf ("sum=%d\n",sum); 

}</span> 

注:使用sum和i時一定要賦初始值。

 

2.3while語句使用注意:

 

循環體要是多條語句必須使用符合語句形式;在循環體表達式中一定要有控制循環趨向結束的語句,否則循環將無限進行;循環體可為空;

 

2.4while實例:a+aa+aaa+....

 

代碼:

 

 

<span style="font-size:18px;">#include  "stdio.h" 

main( ) 

  int a,x; 

  long  sum=0,n=1,tn ; 

  scanf("%d%d",&a,&x); 

  tn=a; 

  while(n<=x)                /*n超過x則中止*/ 

  {sum+=tn; 

  tn=tn*10+x; 

  n++; 

  }  

  printf("result is %ld",sum); 

}</span> 

思考問題:求階乘。

 

3do while語句處理循環

 

3.1do while語句基本形式:

 

do{循環體語句}

 

while(表達式);

 

3.2執行流程:先執行do後面的循環體,然後計算while裡的表達式值,當值非零時繼續執行do的循環體,當值為零時,跳出循環。

 

例子代碼:

 

 

<span style="font-size:18px;">#include "stdio.h" 

main (){ 

 int  i,sum; 

 i=2; 

 sum=0; 

 do                                     /*先執行循環*/ 

  { 

   sum+=i; 

   i+=2; 

  }while(i<=100);                          /*判斷條件*/ 

 printf ("sum=%d\n", sum ); 

}</span> 

3.3while和do while的區別:就是while首先要判斷while的表達式是否成立再執行循環體,而do while是無論while的表達式是否成立,都會先執行一次do的循環體。

 

4for語句處理循環

 

4.1基本語法形式:

 

for(表達式1;表達式2;表達式3)

 

循環體;

 

注:for是c語言關鍵字,括號裡的3個表達式可以是任意的表達式,當循環體內有多條語句時,注意使用復合語句。

 

4.2先計算表達式1,表達式1只執行一次,一般是賦值語句,用於初始化變量;然後求解表達式2,若值為零,則退出循環,若非零,則執行循環體;接著執行表達式3,然後繼續判斷表達式2,再執行循環體,直到表達式2不成立。

 

例子代碼:

 

 

<span style="font-size:18px;">#include  "stdio.h" 

main( ) 

int i,sum; 

sum=0;  

for( i=1; i<=100; i++) 

  sum+=i; 

printf("sum=%d",sum); 

}</span> 

4.3for語句的特點:表達式1、2、3都可以省略,但“;”分號不能省略;表達式可以是任意形式的表達式;循環體可以為空;for的括號裡可以使用多個控制循環的變量。

 

判斷素數例子代碼:

 

 

<span style="font-size:18px;">#include "stdio.h" 

#include "math.h"     

main() 

{ int n,m,flag; 

  flag=1;                /*flag變量為旗幟變量,值為1則n為素數,否則不是素數。初值為1*/ 

  printf("\n enter n:");         /*輸入n*/ 

  scanf("%d",&n); 

  for(m=2;m<n&&flag;m++)         /*判斷n能否被2~n-1之間的數整除*/ 

    if(n%m==0) 

        flag=0;                      /*n不是素數*/   

  if(flag==1)                       /*若flag的值沒有變化,則為素數*/ 

    printf("\n%d is a prime number.",n); 

  else 

    printf("\n %d is not a prime number.",n); 

}</span> 

 

 

 

4.4思考問題:

 

1.求階乘。

 

2.輸出斐波那契數列。

 

3.輸出水仙花數。

 

4.輸出如下圖形:

 

*****

 

 ****

 

  ***

 

   **

 

    *

 

5流程控制語句

 

有時我們在執行循環的過程中,可能需要在中途中斷循環或者跳過本次循環,這時我們就需要使用流程控制語句。

 

5.1break:在switch語句中我們常使用break用來跳出switch分支,其實break同樣也可以使用在循環語句中用來跳出循環。在循環中使用break讓循環語句可以有多個出口,使程序變的更加靈活。

 

break語句可以使循環在未達到結束條件時提前跳出循環。

 

例子代碼:

 

for(i=0;i<10;i++){

 

printf("%d",i);

 

if(i==0) break;

 

}

 

思考問題:使用break語句修改判斷素數問題。

 

5.2continue:在循環過程中使用continue可以根據條件判斷是否執行本次循環,使用continue之後,後面的代碼就不再執行,直接執行下次循環。但是不像break既可以用在分支也可以用在循環中,continue只能用在循環結構中。

 

例子代碼:

 

for(i=0;i<10;i++){

 

if(i==0) continue; /*當i==0時不執行循環*/

 

printf("%d",i);

 

}

 

思考練習:使用continue實現求1000內能被3、5、7整除的數。

 

5.3goto:也叫無條件轉向語句.

 

它的一般格式為:goto 標號;

 

例子代碼:

 

 

<span style="font-size:18px;">#include <stdio.h> 

main() {  

  int i,s=0; 

  i=1; 

  loop:if(i<=100){     /*標號,表示出goto語句轉向的位置*/ 

      s+=i; 

      i++; 

      goto loop; 

  }           

  printf("1+2+3+…100=%d\n",s); 

}</span> 

在結構化程序設計中不提倡使用goto語句,但有時使用goto卻比較方便,比如在一個多層的循環體中,要跳出到最外層的循環就要使用多個break,但使用goto直接就可以實現

 

 


摘自 letthinking的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved