1 概述
循環(huán)結(jié)構(gòu)是程序中一種很重要的結(jié)構(gòu).其結(jié)構(gòu)的特點是,再給定條件成立時,反復(fù)執(zhí)行某程序,知道條件不成立為止.C語言中的循環(huán)結(jié)構(gòu)有多種類型,如下:
- 用while語句;
- 用do-while語句;
- 用for語句.
2 while語句
while語句的一般形式:
while(表達式)
{
語句;
}
表達式為while的循環(huán)條件,語句為循環(huán)體.也就是說,當(dāng)滿足表達式的時候,進入循環(huán)體執(zhí)行語句.
練習(xí)1:用while語句求1~100所有整數(shù)之和;
#include<stdio.h>
int main (int argc, char *argv)
{
int sum=0;
int i=1;
while (i<=100)
{
sum=sum+1;
i=i+1;
}
printf("sum=%d\n",sum);
return 0;
}
練習(xí)2:用while循環(huán)語句求[m,n]之間所有整數(shù)之和;
#include <stdio.h>
int main(int argc,char *argv)
{
int m,n,i,sum=0; //變量定義
printf("請輸入兩個整數(shù)m和n: \n"); //鍵盤輸入變量值
scanf ("%d%d",&m,&n);
if (m<n) // 計算公式部分: 1.判斷m是否小于n;
{ // 2. 進行循環(huán)計算;
while(i<=n)
{
sum=sum+i;
i=i+1;
}
}
else
printf ("error\n");
printf ("[%d,%d]之間的整數(shù)和為: \n",m,n,sum);
return 0;
}
3 do...while循環(huán)語句
do...while循環(huán)語句的一般形式如下:
do
{
循環(huán)語句;
}
while(表達式);
do...while循環(huán)語句和while循環(huán)語句有一定的區(qū)別:do...while語句實現(xiàn)執(zhí)行循環(huán)語句,然后再判斷表達式是否為真,若為真則繼續(xù)循環(huán),否則跳出循環(huán).因此,do...while循環(huán)語句至少要執(zhí)行一次循環(huán)語句.
練習(xí)1:用do...while循環(huán)語句,求1~100之間所有整數(shù)之和.
#include<stdio.h>
int main()
{
int i=0,sum=0;
do
{
sum=sum+i;
i++;
}
while(i<=100);
printf ("1~100之間所有整數(shù)之和為: \n",sum);
return 0;
}
4 for循環(huán)語句
f在C語言中,for循環(huán)語句的使用是最靈活的,它是完全可以取代while和do...while循環(huán)語句的.for循環(huán)語句的一般形式為:
for(表達式1;表達式2;表達式3)
{
循環(huán)語句;
}
其中,表達式1表示循環(huán)變量賦初始值;表達式2表示循環(huán)條件;表達式3表示循環(huán)變量的增量).
for循環(huán)語句的執(zhí)行過程:
- 先求解表達式1;
- 求解表達式2,若條件為真(非0)時,則執(zhí)行指定的循環(huán)語句,反之則跳出循環(huán),執(zhí)行循環(huán)后的語句;
- 求解表達式3;
- 轉(zhuǎn)到第二步繼續(xù)執(zhí)行;
- 循環(huán)結(jié)束,執(zhí)行for循環(huán)語句后面的語句.
練習(xí)1:用for循環(huán)語句,求1~100之間所有整數(shù)之和;
#include<stdio.h>
int main()
{
int i,main=0;
for (i=1;i<=100;i++)
{
sum=sum+i;
}
printf ("1~100之間所有整數(shù)之和為:%d\n",sum);
return 0;
}
注意:
- for 循環(huán)中的"表達式1","表達式2","表達式3"都是可以選擇的,但是它們中間的";"使不能缺少的;
- 表達式1可以設(shè)置循環(huán)變量的初值的賦值表達式,也可以是其他表達式;
- 表達式1和表達式3可以是一個簡單的表達式也可以是用逗號表達式.如:
for (i=0,j=100;i<=100;i++,j--)
{
k=i+j;
}- 表達式2一般是關(guān)系表達式或者邏輯表達式,但也可是數(shù)值表達式或者字符表達式,只要其值為非零,就能執(zhí)行循環(huán)體.如:
- for(i=0;(c=getchar()) != '\n';i += c)
- for(;(c=getchar()) !='\n';)
printf ("%c",c);
5 課外補充
break和continue的區(qū)別
break:在循環(huán)中遇見break,則直跳出循環(huán);
continue:在循環(huán)中遇見continue時,跳出這一次循環(huán),進入下一次循環(huán).
break和continue的執(zhí)行形式如下:
while(表達式1)
{
if (表達式2)
break; //跳出循環(huán),執(zhí)行循環(huán)后的語句;
....
}
while(表達式1)
{
if (表達式2)
continue; //跳出這一次循環(huán),執(zhí)行下一次循環(huán))
...
}