例1:求1+2+3+……+100,求其和
while語句:#include<stdio.h>
#include<math.h>
int main()
{
int i=1,sum=0;
while(i<=100)
{
sum+=i;
i+=1; //也可以寫成i++(現輸出i的值,然後使i 加1)
}
printf("sum=%dn",sum);
return 0;
}
很顯然該程式運作結果為5050
do while語句:#include<stdio.h>
#include<math.h>
int main()
{
int i=1,sum=0; //也可以指派i=2,sum=1
do
{
sum+=i;
i+=1; //相當于i++
}while(i<=100);
printf("sum=%dn",sum)
return 0;
}
很顯然結果也為5050
由此可知 while語句和do while語句的循環體相同,那麼結果也一樣,是以兩者可以互換,while語句是先判斷表達式,再執行循環體,而do while語句先無限執行循環體,再進行判斷。
for語句:#include <stdio.h>
#include<math.h>
int main()
{
int sum=0,i;
for(i=1;i<=100;i++)
sum+=i;
printf("sum=%dn",sum);
return 0;
}
for語句的語句形式和while語句的主體部分相同 形式如下:for(循環變量賦初值;循環條件;循環變量增值) 語句 定義變量并指派 while(循環條件) 語句 兩個部分可以互相替代,而while語句和do……while可以互換的,是以三者可以互相替代 改變循環執行的狀态:break語句和continue語句,但是這兩個語句并不能單獨使用,隻能用于循環語句和switch語句例2:在全系1000名同學中舉行慈善募捐,當總數達到10萬元時就結束,統計此時捐款的人數及平均每人捐款的數目。
很顯然,該例題應用break語句來解決
#include <stdio.h>
#include<math.h>
#define SUM 100000 //這句話可以删去,但第13行的代碼必須将sum改成100000
int main(void)
{
float amount,aver,total;
int i;
for(i=1,total=0;i<=1000;i++)
{
printf("please enter amount:")
scanf("%fn",&amount)
total+=amount;
if(total>=SUM)break; // 若第三行未定義常變量sum,可以直接輸入total>=10000
}
aver=total/i;
printf("num=%dnaver=%10.2fn",i,aver);
return 0;
}
例3:要求輸出100~200不能被7整除的數
顯然這題目前隻能用continue來解決
#include <stdio.h>
int main()
{
int n;
for(n=100;n<=200;n++)
{if(n%7==0)
continue;
printf("%d",n);
}
printf("n") //換行
return 0;
}
例4,輸入一個大于3的整數n,判斷它是否為素數(prime)
#include <stdio.h>
#include<math.h>
int main()
{
int n,i,k;
printf("please enter a integer number:n=?");
scanf("%d",&n);
k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)break;
if(i<k)printf("%d is not a prime number.n",n);
else printf ("%d is a prime number.n",n);
return 0;
}
面對一些問題,可将循環語句和選擇語句結合使用,注意break語句和continue語句必須放在循環語句或switch語句中,不可單獨使用。