上一篇介紹了for loop的概念,讓大家面對在有重複性、明確次數的處理時,可以使用這個語法來解決問題。
這次我們來介紹迴圈中另一個很重要的語法--「While Loop」!
其實while迴圈與for迴圈的概念是很像的,都是為了處理重複性內容而生,但兩者最大的差別在於當沒有明確的次數處理時,會變得很不適合使用for迴圈(也不是不能用,就是不適合),取而代之的便是while迴圈了。
我們來看下列的例子:
#include <stdio.h>
int main(void)
{
int data;
printf("plz input your data(>0): ");
scanf("%d", &data);
while(data > 0){
if(data%2 == 0){
printf("this data is even.\n");
}
else{
printf("this data is odd.\n");
}
printf("plz input your data(>0): ");
scanf("%d", &data);
}
printf("---\n");
printf("thanks for your using\n");
return 0;
}
我們讓使用者輸入數字來判斷奇偶數,直到輸入的數字小於0時終止程式,由於不曉得使用者會輸入多少數字,所以這時候使用for loop相對的不適合,且這樣的方式比較具有彈性。
(1) while迴圈的基本結構:「( )」包住的內容為條件判斷,被「{ }」包住的內容為需重複執行的body。
while(data > 0){
if(data%2 == 0){
printf("this data is even.\n");
}
else{
printf("this data is odd.\n");
}
printf("plz input your data(>0): ");
scanf("%d", &data);
}
(2) 謹慎設條件,避免無限迴圈(程式出不去迴圈一直執行,會導致電腦當機或程式壞掉)。
(3) 讀取到使用者輸入才會執行的語法。
a. while(scanf("%d", &data) != EOF)
#include <stdio.h>
int main(void)
{
int data;
while(scanf("%d", &data) != EOF){
if(data%2 == 0){
printf("this data is even.\n");
}
else{
printf("this data is odd.\n");
}
}
return 0;
}
b. while(~scanf("%d", &data))
#include <stdio.h>
int main(void)
{
int data;
while(~scanf("%d", &data)){
if(data%2 == 0){
printf("this data is even.\n");
}
else{
printf("this data is odd.\n");
}
}
return 0;
}
c. while(scanf("%d", &data) != -1)
#include <stdio.h>
int main(void)
{
int data;
while(scanf("%d", &data) != -1){
if(data%2 == 0){
printf("this data is even.\n");
}
else{
printf("this data is odd.\n");
}
}
return 0;
}
#include <stdio.h>
int main(void)
{
int data, i=0;
while(scanf("%d", &data) != EOF){
i++;
if(data%2 == 0){
printf("Case %d: EVEN.\n", i);
}
else{
printf("Case %d: ODD.\n", i);
}
}
return 0;
}