Tutorial
While loops are similar to for loops, but have less functionality. A while loop continues executing the while block as long as the condition in the while remains true. For example, the following code will execute exactly ten times:
int n = 0;
while (n < 10) {
n++;
}
While loops can also execute infinitely if a condition is given which always evaluates as true (non-zero):
while (1) {
/* do something */
}
Loop directives
There are two important loop directives that are used in conjunction with all loop types in C - the break
and continue
directives.
The break
directive halts a loop after ten loops, even though the while loop never finishes:
int n = 0;
while (1) {
n++;
if (n == 10) {
break;
}
}
In the following code, the continue
directive causes the printf
command to be skipped, so that only even numbers are printed out:
int n = 0;
while (n < 10) {
n++;
/* check that n is odd */
if (n % 2 == 1) {
/* go back to the start of the while block */
continue;
}
/* we reach this code only if n is even */
printf("The number %d is even.\n", n);
}
Exercise
The array
variable consists of a sequence of ten numbers. Inside the while loop, you must write two if
conditions,
which change the flow of the loop in the following manner (without changing the printf
command):
- If the current number which is about to printed is less than 5, don’t print it.
- If the current number which is about to printed is greater than 10, don’t print it and stop the loop.
Notice that if you do not advance the iterator variable i
and use the continue
derivative, you will get stuck in an infinite loop.
Tutorial Code
#include <stdio.h>
int main() {
int array[] = {1, 7, 4, 5, 9, 3, 5, 11, 6, 3, 4};
int i = 0;
while (i < 10) {
/* your code goes here */
printf("%d\n", array[i]);
i++;
}
return 0;
}
Expected Output
7
5
9
5