CHAPTER 5
Control Structure
STATEMENTS
A statement causes the computer to carry out some definite action. There are three different classes
of statements in C:
Expression statements, Compound statements, and Control statements.
Null statement
A null statement consisting of only a semicolon and performs no operations . It can appear
wherever a statement is expected. Nothing happens when a null statement is executed.
Syntax: -
Statements such as do, for, if, and while require that an executable statement appear as the statement
body. The null statement satisfies the syntax requirement in cases that do not need a substantive
statement body.
The Null statement is nothing but, there is no body within loop or any other statements in C.
Example illustrates the null statement:
for ( i = 0; i < 10; i++) ;
or
for (i=0;i<10;i++)
{
//empty body
}
Expression
Most of the statements in a C program are expression statements. An expression statement is simply
an expression followed by a semicolon. The lines
i = 0;
i = i + 1;
and printf("Hello, world!\n");
are all expression statements. In C, however, the semicolon is a statement terminator. Expression
statements do all of the real work in a C program. Whenever you need to compute new values for
variables, you'll typically use expression statements (and they'll typically contain assignment
operators). Whenever you want your program to do something visible, in the real world, you'll
typically call a function (as part of an expression statement). We've already seen the most basic
example: calling the function printf to print text to the screen.
Note -If no expression is present, the statement is often called the null statement.
Return
The return statement terminates execution of a function and returns control to the calling function,
with or without a return value. A function may contain any number of return statements. The return
statement has
syntax: return expression(opt);
If present, the expression is evaluated and its value is returned to the calling function. If necessary, its
value is converted to the declared type of the containing function's return value.
A return statement with an expression cannot appear in a function whose return type is void . If
there is no expression and the function is not defined as void , the return value is undefined. For
example, the following main function returns an unpredictable value to the operating system:
main ( )
{
return;
}
Compound statements
A compound statement (also called a "block") typically appears as the body of another statement,
such as the if statement, for statement, while statement, etc
A Compound statement consists of several individual statements enclosed within a pair of braces {
}. The individual statements may themselves be expression statements, compound statements or
control statements. Unlike expression statements, a compound statement does not end with a
semicolon. A typical Compound statement is given below.
{
pi=3.14;
area=pi*radius*radius;
}
The particular compound statement consists of two assignment-type expression statements.
Example:
Selection Statement/Conditional Statements/Decision Making Statements
A selection statement selects among a set of statements depending on the value of a controlling
expression. Or
Moving execution control from one place/line to another line based on condition
Or
Conditional statements control the sequence of statement execution, depending on the value of a
integer expression
C‟ language supports two conditional statements.
1: if
2: switch.
1: if Statement: The if Statement may be implemented in different forms.
1: simple if statement.
2: if –else statement
3: nested if-else statement.
4: else if ladder.
if statement.
The if statement controls conditional branching. The body of an if statement is executed if the value
of the expression is nonzero. Or if statement is used to execute the code if condition is true. If the
expression/condition is evaluated to false (0), statements inside the body of if is skipped from
execution.
Syntax : if(condition/expression)
{
true statement;
}
statement-x;
If the condition/expression is true, then the true statement will be executed otherwise the true
statement block will be skipped and the execution will jump to the statement-x. The „true statement‟
may be a single statement or group of statement.
If there is only one statement in the if block, then the braces are optional. But if there is more than
one statement the braces are compulsory
Flowchart
Example:
#include<stdio.h>
main()
{
int a=15,b=20;
if(b>a)
{
printf("b is greater");
}
}
Output
b is greater
#include <stdio.h>
int main()
{
int number;
printf("Enter an integer: ");
scanf("%d", &number);
// Test expression is true if number is less than 0
if (number < 0)
{
printf("You entered %d.\n", number);
}
printf("The if statement is easy.");
return 0;
}
Output 1
Enter an integer: -2
You entered -2.
The if statement is easy.
Output 2
Enter an integer: 5
The if statement in C programming is easy.
If-else statement : The if-else statement is an extension of the simple if statement. The if...else
statement executes some code if the test expression is true (nonzero) and some other code if the
test expression is false (0).
Syntax : if (condition)
{
true statement;
}
else
{
false statement;
}
statement-x;
If the condition is true , then the true statement and statement-x will be executed and if the condition
is false, then the false statement and statement-x is executed.
Flowchart
Example:
// Program to check whether an integer entered by the user is odd or even
#include <stdio.h>
int main()
{
int number;
printf("Enter an integer: ");
scanf("%d",&number);
// True if remainder is 0
if( number%2 == 0 )
printf("%d is an even integer.",number);
else
printf("%d is an odd integer.",number);
return 0;
}
Output
Enter an integer: 7
7 is an odd integer.
Nested if-else statement
When a series of decisions are involved, we may have to use more than on if-else statement in nested
form. If –else statements can also be nested inside another if block or else block or both.
Syntax : if(condition-1)
{{
if (condition-2)
{
statement-1;
}
else
{
statement-2;
}
}
else
{
statement-3;
}
statement-x;
If the condition-1 is false, the statement-3 and statement-x will be executed. Otherwise it continues
to perform the second test. If the condition-2 is true, the true statement-1 will be executed
otherwise the statement-2 will be executed and then the control is transferred to the statement-x
Flowchart
Example
#include<stdio.h>
int var1, var2;
printf("Input the value of var1:");
scanf("%d", &var1);
printf("Input the value of var2:");
scanf("%d",&var2);
if (var1 !=var2)
{
printf("var1 is not equal to var2");
//Below – if-else is nested inside another if block
if (var1 >var2)
{
printf("var1 is greater than var2");
}
else
{
printf("var2 is greater than var1");
}
}
Else
{
printf("var1 is equal to var2");
}
…
Else if ladder.
The if else-if statement is used to execute one code from multiple conditions .
Syntax : if( condition-1)
{
statement-1;
}
else if(condition-2)
{
statement-2;
}
else if(condition-3)
{
statement-3;
}
else if(condition-n)
{
statement-n;
}
else
{
default-statement;
}
statement-x;
Flowchart
Example
#include<stdio.h>
#include<conio.h>
void main(){
int number=0;
clrscr();
printf("enter a number:");
scanf("%d",&number);
if(number==10){
printf("number is equals to 10");
}
else if(number==50){
printf("number is equal to 50");
}
else if(number==100){
printf("number is equal to 100");
}
else{
printf("number is not equal to 10, 50 or 100");
}
getch();
}
Switch statement : when there are several options and we have to choose only one option from
the available ones, we can use switch statement. Depending on the selected option, a particular task
can be performed. A task represents one or more statements.
Syntax:
switch(expression)
{
case value-1:
statement/block-1;
break;
case value-2:
statement/block t-2;
break;
case value-3:
statement/block -3;
break;
case value-4:
statement/block -4;
break;
default:
default- statement/block t;
break;
Rules for writing switch() statement.
1 : The expression in switch statement must be an integer value or a character constant.
2 : No real numbers are used in an expression.
3 : The default is optional and can be placed anywhere, but usually placed at end.
4 : The case keyword must terminate with colon ( : ).
5 : No two case constants are identical.
6:The case labels must be constants.
Valid Switch Invalid Switch Valid Case Invalid Case
switch(x) switch(f) case 3; case 2.5;
switch(x>y) switch(x+2.5) case 'a'; case x;
switch(a+b-2) case 1+2; case x+2;
switch(func(x,y)) case 'x'>'y'; case 1,2,3;
Example
#include<stdio.h>
main()
{
int a;
printf("Please enter a no between 1 and 5: ");
scanf("%d",&a);
switch(a)
{
case 1:
printf("You chose One");
break;
case 2:
printf("You chose Two");
break;
case 3:
printf("You chose Three");
break;
case 4:
printf("You chose Four");
break;
case 5: printf("You chose Five.");
break;
default :
printf("Invalid Choice. Enter a no between 1 and 5"); break;
}
}
Flowchart
Iteration Statements/ Loop Control Statements
How it Works
A sequence of statements are executed until a specified condition is true. This sequence of statements
to be executed is kept inside the curly braces { } known as the Loop body. After every execution of
loop body, condition is verified, and if it is found to be true the loop body is executed again. When
the condition check returns false, the loop body is not executed.
The loops in C language are used to execute a block of code or a part of the program several times.
In other words, it iterates/repeat a code or group of code many times.
Or Looping means a group of statements are executed repeatedly, until some logical condition is
satisfied.
Why use loops in C language?
Suppose that you have to print table of 2, then you need to write 10 lines of [Link] using the loop
statement, you can do it by 2 or 3 lines of code only.
A looping process would include the following four steps.
1 : Initialization of a condition variable.
2 : Test the condition.
3 : Executing the body of the loop depending on the condition.
4 : Updating the condition variable.
C language provides three iterative/repetitive loops.
1 : while loop
2 : do-while loop
3 : for loop
While Loop: Syntax :
variable initialization ;
while (condition)
{
statements ;
variable increment or decrement ;
}
while loop can be addressed as an entry control loop. It is completed in 3 steps.
Variable initialization.( e.g int x=0; )
condition( e.g while( x<=10) )
Variable increment or decrement ( x++ or x-- or x=x+2 )
The while loop is an entry controlled loop statement, i.e means the condition is evaluated first
and it is true, then the body of the loop is executed. After executing the body of the loop, the
condition is once again evaluated and if it is true, the body is executed once again, the process of
repeated execution of the loop continues until the condition finally becomes false and the control is
transferred out of the loop.
Example : Program to print first 10 natural numbers
#include<stdio.h>
#include<conio.h>
void main( )
{
int x;
x=1;
while(x<=10)
{
printf("%d\t", x);
x++;
}
getch();
}
Output
1 2 3 4 5 6 7 8 9 10
C Program to reverse number
#include<stdio.h>
#include<conio.h>
main()
{
int n, reverse=0, rem;
clrscr();
printf("Enter a number: ");
scanf("%d", &n);
while(n!=0)
{
rem=n%10;
reverse=reverse*10+rem;
n/=10;
}
printf("Reversed Number: %d",reverse);
getch();
}
Flowchart
do-while loop
Syntax : variable initialization ;
do{
statements ;
variable increment or decrement ;
}while (condition);
The do-while loop is an exit controlled loop statement The body of the loop are executed first and
then the condition is evaluated. If it is true, then the body of the loop is executed once again. The
process of execution of body of the loop is continued until the condition finally becomes false and
the control is transferred to the statement immediately after the loop. The statements are always
executed at least once.
Flowchart
Example : Program to print first ten multiple of 5
#include<stdio.h>
#include<conio.h>
void main()
{
int a,i;
a=5;
i=1;
do
{
printf("%d\t",a*i);
i++;
}while(i <= 10);
getch();
}
Output
5 10 15 20 25 30 35 40 45 50
Example
main()
{
int i=0
do
{
printf("while vs do-while\n");
}while(i= =1);
printf("Out of loop");
}
Output:
while vs do-while
Out of loop
For Loop:
This is an entry controlled looping statement.
In this loop structure, more than one variable can be initialized.
One of the most important features of this loop is that the three actions can be taken at a time like
variable initialization, condition checking and increment/decrement.
The for loop can be more concise and flexible than that of while and do-while loops.
Syntax : for(initialization; condition; increment/decrement)
{
Statements;
}
Example:
#include<stdio.h>
#include<conio.h>
void main( )
{
int x;
for(x=1; x<=10; x++)
{
printf("%d\t",x);
}
getch();
}
Output
1 2 3 4 5 6 7 8 9 10
Various forms of FOR LOOP
I am using variable num in all the below examples –
1) Here instead of num++, I‟m using num=num+1 which is nothing but same as num++.
for (num=10; num<20; num=num+1)
2) Initialization part can be skipped from loop as shown below, the counter variable is declared
before the loop itself.
int num=10;
for (;num<20;num++)
Must Note: Although we can skip init part but semicolon (;) before condition is must, without which
you will get compilation error.
3) Like initialization, you can also skip the increment part as we did below. In this case semicolon (;)
is must, after condition logic. The increment part is being done in for loop body itself.
for (num=10; num<20; )
{
//Code
num++;
}
4) Below case is also possible, increment in body and init during declaration of counter variable.
int num=10;
for (;num<20;)
{
//Statements
num++;
}
5) Counter can be decremented also, In the below example the variable gets decremented each time
the loop runs until the condition num>10 becomes false.
for(num=20; num>10; num--)
Program to calculate the sum of first n natural numbers
#include <stdio.h>
int main()
{
int num, count, sum = 0;
printf("Enter a positive integer: ");
scanf("%d", &num);
// for loop terminates when n is less than count
for(count = 1; count <= num; ++count)
{
sum += count;
}
printf("Sum = %d", sum);
return 0;
}
Output
Enter a positive integer: 10
Sum = 55
Factorial Program using loop
#include<stdio.h>
#include<conio.h>
void main(){
int i,fact=1,number;
clrscr();
printf("Enter a number: ");
scanf("%d",&number);
for(i=1;i<=number;i++){
fact=fact*i;
}
printf("Factorial of %d is: %d",number,fact);
getch();
}
Output:
Enter a number: 5
Factorial of 5 is: 120
Flow Chart of for Loop :
Infinitive for loop in C
If you don't initialize any variable, check condition and increment or decrement variable in for loop,
it is known as infinitive for loop. In other words, if you place 2 semicolons in for loop, it is known as
infinitive for loop.
for(; ;){
printf("infinitive for loop example by javatpoint");
}
Nested for loop
We can also have nested for loops, i.e one for loop inside another for loop. nesting is often used for
handling multidimensional arrays.
Syntax:
for(initialization; condition; increment/decrement)
{
for(initialization; condition; increment/decrement)
statement ;
}
}
Example:
main()
{
for (int i=0; i<=5; i++)
{
for (int j=0; j<=5; j++)
{
printf("%d, %d",i ,j);
}
}
}
Example : Program to print half Pyramid of numbers
#include<stdio.h>
#include<conio.h>
void main( )
{
int i,j;
for(i=1;i<5;i++)
{
printf("\n");
for(j=i;j>0;j--)
{
printf("%d",j);
}
}
getch();
}
Output
1
21
321
4321
54321
Jump Statements
Jumping statements are used to transfer the program‟s control from one location to another, these are
set of keywords which are responsible to transfer program‟s control within the same block or from
one function to another.
There are four jumping statements in C language:
goto statement
return statement
break statement
continue statement
goto statement : goto statement doesnot require any condition. This statement passes control
anywhere in the program i.e, control is transferred to another part of the program without testing
any condition.
Syntax : goto label;
.....
.....
label:
statements;
Inthissyntax, label isan identifier. When, the control of program reaches to goto statement, the
control of the program will jump to the label: and executes the code below it.
Or
The goto statement requires a label to identify the place to move the execution. A label is a valid
variable/identifier name and must be ended with colon ( : )
Flowchart
Example
int main()
{
int age;
Vote:
printf("you are eligible for voting");
NoVote:
printf("you are not eligible to vote");
printf("Enter you age:");
scanf("%d", &age);
if(age>=18)
goto Vote;
else
goto NoVote;
return 0;
}
Output
Enter you age:19
you are eligible for voting
Enter you age:15
you are not eligible to vote
Break Statement
Break is a keyword. The break statement terminates the loop (for, while and do...while loop)
immediately when it is encountered. The break statement is used/ associated with decision making
statement such as if ,if-else.
Syntax of break statement
break;
Flowchart
How break statement works?
Example
#include <stdio.h>
#include <conio.h>
void main(){
int i=1;//initializing a local variable
clrscr();
//starting a loop from 1 to 10
for(i=1;i<=10;i++){
printf("%d \n",i);
if(i==5){//if value of i is equal to 5, it will break the loop
break;
}
}//end of for loop
getch();
}
Output
12345
Continue Statement
Continue is keyword exactly opposite to break. The continue statement is used for continuing next
iteration of loop statements. When it occurs in the loop it does not terminate, but it skips some
statements inside the loop / the statements after this statement. . The continue statement is used/
associated with decision making statement such as if ,if-else.
Syntax of continue Statement
continue;
Flowchart of continue Statement
How continue statement works?
Example
1. #include <stdio.h>
2. #include <conio.h>
3. void main(){
4. int i=1;//initializing a local variable
5. clrscr();
6. //starting a loop from 1 to 10
7. for(i=1;i<=10;i++){
8. if(i==5){//if value of i is equal to 5, it will continue the loop
9. continue;
10. }
11. printf("%d \n",i);
12. }//end of for loop
13. getch();
14. }
Output
1234678910
Comparision between break and continue statements
Break
Continue
1 : break statement takes the control to the 1 :continue statement takes the control to
ouside of the loop the beginning of the loop..
2 : it is also used in switch statement. 2 : This can be used only in loop
statements.
3 : Always associated with if condition in 3 : This is also associated with if
loops. condition.