第5章 迴圈結構程式設計
三種基本迴圈控制結構
使用while語句實現迴圈
先判斷條件表示式,後執行迴圈體語句
while (迴圈條件表示式)
{
迴圈體
}
用do-while語句實現迴圈
先無條件地執行迴圈體,然後判斷迴圈條件是否成立
do
{
語句;
}
while(表示式);
用for語句實現迴圈
for語句的執行過程:
(1) 先求解表示式1
(2) 求解表示式2,若其值為真,執行迴圈體,然後執行下面第(3)步。若為假,則結束迴圈,轉到第(5)步
(3) 求解表示式3
(4) 轉回上面步驟(2)繼續執行
(5) 迴圈結束,執行for語句下面的一個語句
for(初始條件;迴圈條件表示式;迴圈的調整器)
語句;
迴圈的巢狀
(1) 一般情況下,3種迴圈可以互相代替
(2) 在while和do–while迴圈中,迴圈體應包含使迴圈趨於結束的語句。
(3) 用while和do–while迴圈時,迴圈變數初始化的操作應在while和do–while語句之前完成。而for語句可以在表示式1中實現迴圈變數的初始化。
改變迴圈執行的狀態
用break語句提前終止迴圈
用continue語句提前結束本次迴圈
break語句和continue語句的區別
continue語句只結束本次迴圈,而不是終止整個迴圈的執行
break語句結束整個迴圈過程,不再判斷執行迴圈的條件是否成立
迴圈程式舉例
求Π的近似值
#include <stdio.h>
#include <math.h>
int main()
{ int sign=1; double pi=0,n=1,term=1;
while(fabs(term)>=1e-6)
{ pi=pi+term;
n=n+2;
sign=-sign;
term=sign/n;
}
pi=pi*4;
printf("pi=%10.8f\n",pi);
return 0;
}
求斐波那契數列的前40個數
#include <stdio.h>
int main()
{ int f1=1,f2=1,f3; int i;
printf("%12d\n%12d\n",f1,f2);
for(i=1; i<=38; i++)
{ f3=f1+f2;
printf("%12d\n",f3);
f1=f2;
f2=f3;
}
return 0;
}
輸入一個大於3的整數n,判斷它是否是素數(質數)
#include<studio.h>
int main(){
int n,i;
print("n=?");scanf("%d",&n);
for(i=2;i<=n-1;i++)
if(n%i==0)break;
if(i<n)printf("%d is not\n",n);
else printf("%d is \n",n);
return 0;
}
譯密碼。為使電文保密,往往按一定規律將其轉換成密碼,收報人再按約定的規律將其譯回原文。(改變為其後第4個字母)
char c;
c=getchar();
while(c!=‘\n’)
{ if((c>=‘a’ && c<=‘z’) || (c>=‘A’ && c<=‘Z’))
{ if(c>='W' && c<='Z' || c>='w' && c<='z')
c=c-22;
else c=c+4;
}
printf("%c",c);
c=getchar();
}
程式改進
char c;
while((c=getchar())!=‘\n’)
{ if((c>=‘A’ && c<=‘Z’) || (c>=‘a’ && c<=‘z’))
{ c=c+4;
if(c>=‘Z’ && c<=‘Z’+4 || c>‘z’)
c=c-26;
}
printf("%c",c);
}