#include<stdio.h> int main() { code goes here! }We just save a little space leaving it off.
There are two ways to combine two loops.
The first is called sequence. In this the first loop
starts and finishes before the second starts.
Example:
int i=0; while (i<3) { statement1 statement2 . . i++; } <-- bottom of loop 1 int j=0; <-- set up of variable for loop 2 while (j<5) { statementA statementB . . j++; }When this program runs, ALL the repetitions of the first loop are completely finished before C starts the repetitions of the second loop. In particular the first statement after the compound statement (body) of the first loop,
int j=0;is not executed until after the repetitions of the first loop are done.
Terminology: The body of a loop is statement coming after the condition. It is the statement that is controled by the condition. That is, if the condition is true, we execute the body and re-check the condition. If the condition is false, we skip the body. The while together with its condition is called the header of the loop.
The second way to combine two loops is called nested.
In this the second loop is completely
contained in the body of the first loop.
Example:
int i=0; <-- set up for first loop0 while (i<3) { <-- first loop header statement1 statement2 int j=0; <-- set up for second loop while (j<5) { <-- second loop header statementA statementB j++; } <-- second loop bottom i++; } <-- first loop bottomWhen this program runs, each repetition of the outside (first) loop restarts the inside loop, so we get all the repetitions of the inside loop for each repetition of the outer loop. The outer loop starts the inside loop a total of 3 times. Each time the inside loop is started statementA is executed 5 times. So in all statementA is executed a total of 15 times.
IMPORTANT: C regards the loop header together with its body as a unit. Executing this unit means running it until the while-condition becomes false.
Suppose this unit is nested inside another loop. That is, the unit is one of the statements in body of the outside loop. When the inside unit finishes executing one of three things happens. If it is not the last statement inside the (outside) loop, then execution just goes on to the next statement in the outside loop. If, however, the unit is the last statement inside of the outside loop, we either get another repetition of the outside loop if the outside loop is not finished, or, if the outside loop is finished, we go on to whatever statement comes after the outside loop.
Solution: The first part is pretty easy:
int numHel; scanf("%d", &numHel); int numGB; scanf("%d", &numGB);The above must be followed by the sequence: a loop to print the Hello's followed by a loop to print the Goodbye's. Here is the complete program:
int numHel; scanf("%d", &numHel); int numGB; scanf("%d", &numGB); int i=0; while (i<numHel) { printf("Hello\n"); i++; } int j=0; while (j<numGB) { printf("Goodbye\n"); j++; }