UNIT 2- CONTROL FLOW STATEMENTS
SYLLABUS
Expressions –I/O Statements - Operators: Precedence and Associativity -Decision
Making Statements: if -else if ladder, Nested if, Switch statements - Iterative Statements:
For, While, Do while statements-Break, Continue Statements
 Expressions
        An expression is a sequence of operators and operands that specifies computation of a
    value. For e.g, a=2+3 is an expression with three operands a,2,3 and 2 operators = & +
 Simple Expressions & Compound Expression
        An expression that has only one operator is known as a simple expression.
 E.g: a+2
 An expression that involves more than one operator is called a compound expression. E.g: b=2+3*5
 Classification of Operators
            The operators in C are classified on the basis of
            The number of operands on which an operator operates
            The role of an operator
 Classification based on Number of Operands
            Types:
        1. Unary Operator: A unary operator operates on only one operand. Some of the unary
           operators are,
                            Operator Meaning
                                  -            Minus
                                  ++           Increment
                                  --           Decrement
                                  &            Address- of operator
                                sizeof        sizeof operator
      1. Binary Operator: A binary operator operates on two operands. Some of the binary
         operators are,
                                    Operator       Meaning
                                    +              Addition
                                    -              Subtraction
                                    *              Multiplication
                                    /              Division
                                    %              Modular Division
                                    &&             Logical AND
Ternary Operator
      A ternary operator operates on 3 operands. Conditional operator (i.e. ?:) is the ternary operator.
Classification based on role of operands
          Based upon their role, operators are classified as,
                  1. Arithmetic Operators
                  2. Relational Operators
                  3. Logical Operators
                  4. Bitwise Operators
                  5. Assignment Operators
                  6. Miscellaneous Operators
Arithmetic Operators
   They are used to perform arithmetic operations like addition, subtraction, multiplication, division
   etc.
   A=10 & B=20
   Operator Description                                                Example
   +            Adds two operands                                      A + B will give 30
   -            Subtracts second operand from the first                A - B will give -10
   *            Multiplies both operands                               A * B will give
                                                                       200
   /            The division operator is used to find the quotient.    B / A will give 2
   %            Modulus operator is used to find the remainder         B%A will give 0
   +,-          Unary plus & minus is used to indicate the algebraic   +A, -A
                sign of a value.
Increment operator
The operator ++ adds one to its operand.
              ➢ ++a or a++ is equivalent to a=a+1
              ➢ Prefix increment (++a) operator will increment the variable BEFORE the
                expression is evaluated.
              ➢ Postfix increment operator (a++) will increment AFTER the expression
                evaluation.
              ➢ E.g.
                  1. c=++a. Assume a=2 so c=3 because the value of a is incremented and then it
                     is assigned to c.
                  2. d=b++ Assume b=2 so d=2 because the value of b is assigned to d before it is
                     incremented.
Decrement operator
   The operator – subtracts one from its operand.
              ➢ --a or a-- is equivalent to a=a+1
              ➢ Prefix decrement (--a) operator will decrement the variable BEFORE the
                expression is evaluated.
              ➢ Postfix decrement operator (a--) will decrement    AFTER the expression
                evaluation.
              ➢ E.g.
                      1. c=--a. Assume a=2 so c=1 because the value of a is decremented and then
                         it is assigned to c.
                      2. d=b-- Assume b=2 so d=2 because the value of b is assigned to d before it
                         is decremented.
Relational Operators
                   Relational operators are used to compare two operands. There are 6 relational
operators in C, they are
    Operators                Description                        Example
   ==            Equal to                            5==3 returns false (0)
   >             Greater than                        5>3 returns true (1)
   <             Less than                           5<3 returns false (0)
   !=            Not equal to                        5!=3 returns true(1)
   >=            Greater than or equal to            5>=3 returns true (1)
   <=            Less than or equal to               5<=3 return false (0)
              ➢ If the relation is true, it returns value 1 and if the relation is false, it returns value
                0.
              ➢ An expression that involves a relational operator is called as a condition. For e.g
                a<b is a condition.
        Logical Operators
              ➢ Logical operators are used to logically relate the sub-expressions. There are 3
                logical operators in C, they are
              ➢ If the relation is true, it returns value 1 and if the relation is false, it returns value
                0.
   Operator Meaning               of Example
              Operator                                                                    Description
&&         Logial AND                If c=5 and d=2 then,((c==5) && (d>5))             It returns true when
                                     returns false.                                    both conditions are
                                                                                       true
||         Logical OR                If c=5 and       d=2    then, ((c==5) || (d>5))   It returns true when
                                     returns true.                                     at-least one of the
                                                                                       condition is true
!          Logical NOT               If c=5 then, !(c==5) returns false.               It reverses the state
                                                                                       of the operand
     1. Bitwise Operators
       C language provides 6 operators for bit manipulation. Bitwise operator operates on the
individual bits of the operands. They are used for bit manipulation.
Operators                  Meaning of operators
&                           Bitwise AND
|                           Bitwise OR
^                           Bitwise exclusive OR
~                           Bitwise complement
<<                          Shift left
>>                          Shift right
Truth tables
p              Q                 p&q             p|q             p^q
0              0                 0               0               0
0              1                 0               1               1
1              1                 1               1               0
1              0                 0               1               1
E.g.
12 = 00001100 (In Binary)
   25 = 00011001 (In Binary)
   Bit Operation of 12 and 25
    00001100
   & 00011001
     00001000 = 8 (In decimal)
   Bitwise OR Operation of 12 and 25
   00001100
   | 00011001
    00011101 = 29 (In decimal)
   3 << 2 (Shift Left)
   0011
   1100=12
   3 >> 1 (Shift Right)
   0011
0001=1
Assignment Operators
         To assign a value to the variable assignment operator is used
   E.g.
   var=5 //5 is assigned to var
   a=c; //value of c is assigned to a
Miscellaneous Operators
   Other operators available in C are
                a. Function Call Operator(i.e. ( ) )
                b. Array subscript Operator(i.e [ ])
              c. Member Select Operator
                       i. Direct member access operator (i.e. . dot operator)
                       ii. Indirect member access operator (i.e. -> arrow operator)
              d. Conditional operator (?:)
              e. Comma operator (,)
              f. sizeof operator
              g. Address-of operator (&)
    Comma operator
              ➢ It is used to join multiple expressions together.
              ➢ E.g.
  int                                   i                                ,                                j;
  i=(j=10,j+20);
               In the above declaration, right hand side consists of two expressions separated by
  comma. The first expression is j=10 and second is j+20. These expressions are evaluated from left
  to right. ie first the value 10 is assigned to j and then expression j+20 is evaluated so the final value
  of i will be 30.
     sizeof Operator
      ➢ The sizeof operator returns the size of its operand in bytes.
      ➢ Example : size of (char) will give us 1.
      ➢ sizeof(a), where a is integer, will return 2.
Conditional Operator
      ➢ It is the only ternary operator available in C.
      ➢ Conditional operator takes three operands and consists of two symbols ? and : .
      ➢ Conditional operators are used for decision making in C.
     Address-of Operator
          It is used to find the address of a data object.
  Syntax
           &operand
  E.g.
   &a will give address of a.
Input/Output statements
  The I/O functions are classified into two types:
           ➢ Formatted Functions
           ➢ Unformatted functions
                    Input and Output functions
 Formatted Functions                   Unformatted Functions
    printf()                                getch()
                                            getche()
                                            getchar()
    scanf()                                 gets()
                                            putch()
                                            putchar()
                                            puts()
  Unformatted Functions:
     They are used when I/P & O/P is not required in a specific
  format. C has 3 types I/O functions.
     a) Character I/O
      b) String I/O
      c) File I/O
  1. getchar() This function reads a single character data from the standard
  input. (E.g. Keyboard)
Syntax
                              variable_name=getchar();
Eg:
  Char c;
  C=getchar()
 1. putchar() This function prints one character on the screen at a time.
    Syntax :
                        putchar(variable name);
      eg
             char c=„C‟;
             putchar(c);
      Example Program
      #include <stdio.h>
      main()
      {
      int i;
      char ch;
      ch = getchar();
      putchar(ch);
      }
      Output:
      A
      2. getch() and getche() : getch() accepts only a single character from keyboard. The character
      entered through getch() is not displayed in the screen (monitor).
             Syntax
                        variable_name = getch();
      Like getch(), getche() also accepts only single character, but getche() displays the entered
      character in the screen.
             Syntax
                        variable_name = getche();
      4 putch(): putch displays any alphanumeric characters to the standard output device. It displays
  only one character at a time.
         Syntax
                    putch(variable_name);
  String I/O
  gets() – This function is used for accepting any string through stdin (keyboard) until enter key is
  pressed.
          Syntax
                      gets(variable_name);
  puts() – This function prints the string or character array.
         Syntax
                      puts(variable_name);
  cgets()- This function reads string from the console.
  Syntax
                   cgets(char *st);
  It requires character pointer as an argument.
  cputs()- This function displays string on the console.
  Syntax
                   cputs(char *st);
Example Program
  void main()
  {
  char ch[30];
  clrscr();
  printf(“Enter the String : “);
  gets(ch);
  puts(“\n Entered String : %s”,ch);
 puts(ch);
 }
 Output:
 Enter the String : WELCOME
 Entered String : WELCOME
 Formatted Input & Output Functions
         When I/P & O/P is required in a specified format then the standard library functions
 scanf( ) & printf( ) are used.
O/P function printf( )
         The printf( ) function is used to print data of different data types on the console in a
 specified format.
General Form
             printf(“Control String”, var1, var2, …);
 Control String may contain
                                1. Ordinary characters
                           2. Conversion Specifier Field (or) Format Specifiers
 They denoted by %, contains conversion codes like %c, %d etc.
 and the optional modifiers width, flag, precision, size.
Conversion Codes
                          Data type                      Conversion Symbol
                          char                           %c
                          int                            %d
                          float                          %f
                          Unsigned octal                 %o
                              Pointer                   %p
     Width Modifier: It specifies the total number of characters used to display the value.
     Precision: It specifies the number of characters used after the decimal point.
     E.g: printf(“ Number=%7.2\n”,5.4321);
     Width=7
     Precesion=2
     Output: Number = 5.43(3 spaces added in front of 5)
Flag: It is used to specify one or more print modifications
 Flag              Meaning
 -                 Left justify the display
 +                 Display +Ve or –Ve sign of value
 Space             Display space if there is no sign
 0                 Pad with leading 0s
     Size: Size modifiers used in printf are,
                               Size modifier            Converts To
                               l                                Long int
                               h                               Short int
                               L                               Long double
            %ld means long int variable
            %hd means short int variable
     3. Control Codes
            They are also known as Escape Sequences.
            E.g:
                               Control Code             Meaning
                               \n                       New line
                             \t                        Horizontal Tab
                             \b                        Back space
  Input Function scanf( )
  It is used to get data in a specified format. It can accept data of different data types.
  Syntax
       scanf(“Control String”, var1address, var2address, …);
      Format String or Control String is enclosed in quotation marks. It may contain
              1. White Space
              2. Ordinary characters
              3. Conversion Specifier Field
            It is denoted by % followed by conversion code and other optional modifiers E.g: width,
  size.
Format Specifiers for scanf( )
                            Data type                  Conversion Symbol
                            char                       %c
                            int                        %d
                            float                      %f
                            string                     %s
  E.g Program:
  #include <stdio.h>
  void main( )
  {
       int num1, num2, sum;
       printf("Enter two integers: ");
       scanf("%d %d",&num1,&num2);
       sum=num1+num2;
       printf("Sum: %d",sum);
  }
Output
     Enter two integers: 12 11
     Sum: 23
Operator Precedence and Associativity in C
Operator precedence and associativity are rules that decide the order in which parts of an expression are
calculated. Precedence tells us which operators should be evaluated first, while associativity determines the
direction (left to right or right to left) in which operators with the same precedence are evaluated.
Let's take a look at an example:
#include <stdio.h>
int main() {
    int a = 6, b = 3, c = 4;
    int res;
    // Precedence and associativity applied here
    res = a + b * c / 2;
    printf("%d", res);
    return 0;
}
Output
12
Operator Precedence
Operator precedence determines which operation is performed first in an expression with more than one
operator with different precedence. Let's try to evaluate the following expression,
10 + 20 * 30
The expression contains two operators, + (addition) and * (multiplication). According to operator
precedence, multiplication (*) has higher precedence than addition (+), so multiplication is checked first.
After evaluating multiplication, the addition operator is then evaluated to give the final result.
The expression contains two operators, + (addition) and * (multiplication). According to operator
precedence, multiplication (*) has higher precedence than addition (+), so multiplication is checked first.
After evaluating multiplication, the addition operator is then evaluated to give the final result.
#include <stdio.h>
int main() {
    // Printing the value of same expression
    printf("%d", 10 + 20 * 30);
    return 0;
}
Output
610
Operator Associativity
Operator associativity is used when two operators of the same precedence appear in an expression.
Associativity can be either from Left to Right or Right to Left. Let's evaluate the following expression,
100 / 5 % 2
The division (/) and modulus (%) operators have the same precedence, so the order in which they are
evaluated depends on their left-to-right associativity. This means the division is performed first, followed by
the modulus operation. After the calculations, the result of the modulus operation is determined.
#include <stdio.h>
int main() {
    // Verifying the result of the same expression
    printf("%d", 100 / 5 % 2);
    return 0;
}
Output
0
Example of Operator Precedence and Associativity
In general, operator precedence and associativity are applied together in expressions. Consider the
expression exp = 100 + 200 / 10 - 3 * 10, where the division (/) and multiplication (*) operators have the
same precedence but are evaluated before addition (+) and subtraction (-). Due to left-to-right associativity,
the division is evaluated first, followed by multiplication. After evaluating the division and multiplication,
the addition and subtraction are evaluated from left to right, giving the final result.
Decision making statements
       Decision making statements in a programming language help the programmer to transfer
   the control from one part to other part of the program.
   Flow of control: The order in which the program statements are executed is known as flow of
   control. By default, statements in a c program are executed in a sequential order
Branching statements
             Branching statements are used to transfer program control from one point to another.
   2 types
       a) Conditional Branching:- Program control is transferred from one point to another based
               on the result of some condition
   Eg) if, if-else, switch
      b) Unconditional Branching:- Pprogram control is transferred from one point to another
             without checking any condition
   Eg) goto, break, continue, return
   a) Conditional Branching : Selection statements
           Statements available in c are
                  ➢ The if statement
                  ➢ The if-else statement
                  ➢ The switch case statement
      If statement
   C uses the keyword if to execute a statement or set of statements when the logical condition is
   true.
   Syntax:
                  if (test expression)
                                                                      Test
                  Statement;
                                                                      expres      F
                                                                     Statement
 If test expression evaluates to true, the corresponding statement is executed.
 If the test expression evaluates to false, control goes to next executable statement
 The statement can be single statement or a block of statements. Block of statements    must be enclosed in
curly braces.
Example:
   #include <stdio.h>
   void main()
   {
  int n;
  clrscr();
  printf(“enter the number:”);
  scanf(“%d”,&n);
  if(n>0)
  printf(“the number is positive”);
  getch();
  }
  (i)   The if-else statement
  Syntax:
                  if (test expression)
                  Statement T;
                  else
                  Statement F;
              •   If the test expression is true, statementT will be executed.
              •   If the test expression is false, statementF will be executed.
              •   StatementT and StatementF can be a single or block of statements.
Example:1 Program to check whether a given number is even or odd.
  #include <stdio.h>
  void main(){
  int n,r;
  clrscr();
  printf(“Enter a number:”);
  scanf(“%d”,&n);
  r=n%2;
  if(r==0)
  printf(“The number is even”);
  else
  printf(“The number is odd”);
  getch();
  }
   Output:
   Enter a number:15
   The number is odd
Example:2 To check whether the two given numbers are equal
   void main()
   {
   int a,b;
   clrscr();
   printf(“Enter a and b:” );
   scanf(“%d%d”,&a,&b);
   if(a==b)
   printf(“a and b are equal”);
   else
   printf(“a and b are not equal”);
   getch();
   }
   Output:
   Enter a and b: 2 4
   a and b are not equal
Nested if statement
          If the body the if statement contains another if statement, then it is known as nested if
   statement .
   Syntax:
                 if (test expression1)
                 {
                     …..
                     if (test expression2)
                     {
                     ….
This is known as If ladder
                     if (test expression3)
                            {
                           ….
                           if (test expression n)
Nested if-else statement
   Here, the if body or else body of an if-else statement contains another if statement or if else
   statement
Syntax    :
   if (condition)
   {
   statement 1;
   statement 2;
   }
   else
   {
   statement 3;
   if (condition)
           statementnest;
   statement 4;
   }
   iv) Switch statement
          •   It is a multi way branch statement.
          •   It provides an easy & organized way to select among multiple operations depending upon
              some condition.
Execution
   1. Switch expression is evaluated.
   2. The result is compared with all the cases.
   3. If one of the cases is matched, then all the statements after that matched case gets executed.
   4. If no match occurs, then all the statements after the default statement get executed.
                         •   Switch ,case, break and default are keywords
                         •   Break statement is used to exit from the current case structure
Syntax
 Switch(expression)
{
case 1:
      program statement
      break;
case 2:
      program statement
      break;
default:
      program statement
      break;
}
   Example2
   void main()
   {
   int n;
   printf(“Enter a number\n”);
   scanf(“%d”,&n);
   switch(n%2)
           {
                  case 0:printf(“EVEN\n”);
                          break;
   case 1:printf(“ODD\n”);
                          break;
   }
   getch();
   }
   Output:
   Enter a number
   5
   ODD
       Unconditional branching statements
       The goto Statement
          This statement does not require any condition. Here program control is transferred to
   another part of the program without testing any condition.
   Syntax:
       goto label;
label is the position where the control is to be transferred
Example:
   void main()
   {
   printf(“www.”);
   goto x;
   y:
   printf(“mail”);
   goto z;
   x:
   printf(“yahoo”);
   goto y;
   z:
   printf(“.com”);
   getch();
   }
   Output : www.yahoomail.com
   Looping or Iterative statements
   Iteration is a process of repeating the same set of statements again and again until the condition
   holds true.
    Iteration or Looping statements in C are:
               1.    for
               2.    while
             3. do while
   Loops are classified as
      ❖ Counter controlled loops
       ❖ Sentinel controlled loops
Counter controlled loops
                •   The number of iterations is known in advance. They use a control variable called
                    loop counter.
                •   Also called as definite repetitions loop.
                •   E.g: for
Sentinel controlled loops
       •    The number of iterations is not known in advance. The execution or termination of the
            loop depends upon a special value called sentinel value.
       •    Also called as indefinite repetitions loop.
       •    E.g: while
       for loop
   It is the most popular looping statement.
   Syntax
   for(initialization;condition;incrementing/decrementing)
   {
   Statements
   }
   There are three sections in for loop.
                               a. Initialization section – gives initial value to the loop counter.
                               b. Condition section – tests the value of loop counter to decide
                                  whether to execute the
           loop or not.
                               c. Manipulation section - manipulates the value of loop counter.
Execution of for loop
       1. Initialization section is executed only once.
       2. Condition is evaluated
              a. If it is true, loop body is executed.
              b. If it is false, loop is terminated
       3. After the execution of loop, the manipulation expression is evaluated.
       4. Steps 2 & 3 are repeated until step 2 condition becomes false.
Ex : Write a program to print 10 numbers using for loop
   void main()
   {
   int i;
   clrscr();
   for(i=1;i<=10;i++)
   {
   printf(“%d”,i);
   }
   getch();
   }
   Output:
          1 2 3 4 5 6 7 8 9 10
To find the sum of n natural number. 1+2+3…+n
   void main()
   {
   int n, i, sum=0;
   clrscr();
   printf(“Enter the value for n”);
   scanf(“%d”,&n);
  for(i=1;i<=n;i++)
  {
  sum=sum+i;
  }
  printf(“Sum=%d”, sum);
  getch();
  }
  Output:
  Enter the value for n
  4
  sum=10
      while statement
      •  They are also known as Entry controlled loops because here the condition is
         checked before the execution of loop body.
  Syntax:
          while (expression)
          {
          statements;
          }
Execution of while loop
             Condition in while is evaluated
             i.   If it is true, body of the loop is executed.
            ii.   If it is false, loop is terminated
      d. After executing the while body, program control returns back to while header.
      e. Steps a & b are repeated until condition evaluates to false.
      f. Always remember to initialize the loop counter before while and manipulate loop counter
         inside the body of while.
Ex Write a program to print 10 numbers using while loop
  void main()
  {
  int i=1;
  clrscr();
  while (num<=10)
  {
  printf (“%d”,i);
  i=i+1;
  }
  getch();
  }
  Output:
  1 2 3 4 5 6 7 8 9 10
      do while statement
      •  They are also known as Exit controlled loops because here the condition is checked after
         the execution of loop body.
  Syntax:
          do
          {
          statements;
          }
          while(expression);
Execution of do while loop
      g. Body of do-while is executed.
      h. After execution of do-while body, do-while condition is evaluated
               i.   If it is true, loop body is executed again and step b is repeated.
             ii.    If it is false, loop is terminated
      •   The body of do-while is executed once, even when the condition is initially false.
To find the sum of n natural number. 1+2+3…+n
  void main()
  {
  int n, i=1, sum=0;
  clrscr();
  printf(“Enter the value for n”);
  scanf(“%d”,&n);
  do
  {
  sum=sum+i;
  i=i+1;
  } while(i<=n);
  printf(“Sum=%d”, sum);
  getch();
  }
  Output:
  Enter the value for n
  4
Nested loops
      •    If the body of a loop contains another iteration statement, then we say that the loops
           are nested.
      •    Loops within a loop are known as nested loop.
  Syntax
                     while(condition)
                     {
                            while(condition)
                            {
                            Statements;
                            }
                     Statements;
                     }
break statement
             A break statement can appear only inside a body of , a switch or a loop
             A break terminates the execution of the nearest enclosing loop or switch.
   Syntax
            break;
            break;
  Example:1
  #include<stdio.h>
  void main()
  {
  int c=1;
  while(c<=5)
  {
          if (c==3)
             break;
  printf(“\t %d”,c);
  c++;
  }
  Output : 1 2
  continue statement
             •   A continue statement can appear only inside a loop.
             •   A continue statement terminates the current iteration of the nearest enclosing
                 loop.
Syntax:
        Continue
Example :1
#include<stdio.h>
void main()
{
int c=1;
while(c<=5)
{
    if (c==3)
       continue;
    printf(“\t %d”,c);
    c++;
}
}
Output : 1 2 4 5
Example :2
#include<stdio.h>
main()
{
int i;
for(i=0;i<=10;i++)
{
    if (i==5)
       continue;
    printf(“ %d”,i);
}
}
Output :1 2 3 4 6 7 8 9 10
   return statement:
        A return statement terminates the execution of a function and returns the control to the
calling function.
Syntax:
          return;
VCET 2025   CS25C01   Problem Solving Using C Programming