學習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);
}
7、continue 語句
Ø 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.