C program to create calculator using switch case and functions

Simple calculator

Write a C program to create a simple calculator that performs basic arithmetic operations (add, subtract, multiply and divide) using switch case and functions. The calculator should read two numbers and an operator from user. The calculator should perform operation according to the operator entered.
The calculator should take input in following format:
[number 1] [operator] [number 2]

Example
Input

5.2 - 3

Output

2.2

Required knowledge

Basic C programming, Switch case, Operators, Functions

Logic to create calculator using switch

The real power of switch case comes here. Switch case is often used to create menu driven program or program that accepts user choices or switches between various choices. This program does not implement any new logic. Before I get down to the formal logic, I highly recommend you to learn the basic arithmetic operations.

Read more - Program to perform all arithmetic operations

Below is the step by step descriptive logic of this program.

  1. Input two integers and a character from user in the given format. Store them in some variable say num1, op and num2.
  2. Switch the op variable. Which contains the calculation operation character.
  3. For case '+', add the variables. Which is result = num1 + num2.
  4. For case '-', subtract the variables. Which is result = num1 - num2.
  5. Repeat the process for multiplication and division.
  6. Finally print the result.

Program to create calculator using switch case

/**
 * C program to create Simple Calculator using switch case
 */

#include <stdio.h>

int main()
{
    char op;
    float num1, num2, result=0.0f;

    /*
     * Print welcome message
     */
    printf("WELCOME TO SIMPLE CALCULATOR\n");
    printf("----------------------------\n");
    printf("Enter [number 1] [+ - * /] [number 2]\n");

    // Read two number and an operator from user
    scanf("%f %c %f", &num1, &op, &num2);

    switch(op)
    {
        case '+': 
            result = num1 + num2;
            break;

        case '-': 
            result = num1 - num2;
            break;

        case '*': 
            result = num1 * num2;
            break;

        case '/': 
            result = num1 / num2;
            break;

        default: printf("Invalid operator");
    }

    // Prints the result
    printf("%.2f %c %.2f = %.2f", num1, op, num2, result);

    return 0;
}

Let us code the same program using the functional approach.

Program to create calculator using switch and function

/**
 * C program to create simple calculator using switch case and functions
 */

#include <stdio.h>


/** 
 * Function declarations for calculator
 */
float add(float num1, float num2);
float sub(float num1, float num2);
float mult(float num1, float num2);
float div(float num1, float num2);



int main()
{
    char op;
    float num1, num2, result=0.0f;

    /*
     * Print welcome message
     */
    printf("WELCOME TO SIMPLE CALCULATOR\n");
    printf("----------------------------\n");
    printf("Enter [number 1] [+ - * /] [number 2]\n");

    // Read two number and an operator from user
    scanf("%f %c %f", &num1, &op, &num2);

    switch(op)
    {
        case '+': 
            result = add(num1, num2);
            break;

        case '-': 
            result = sub(num1, num2);
            break;

        case '*': 
            result = mult(num1, num2);
            break;

        case '/': 
            result = div(num1, num2);
            break;

        default: printf("Invalid operator");
    }

    // Print the result
    printf("%.2f %c %.2f = %.2f", num1, op, num2, result);

    return 0;
}



/**
 * Function to add two numbers
 */
float add(float num1, float num2)
{
    return num1 + num2;
}



/**
 * Function to subtract two numbers
 */
float sub(float num1, float num2)
{
    return num1 - num2;
}



/**
 * Function to multiply two numbers
 */
float mult(float num1, float num2)
{
    return num1 * num2;
}



/**
 * Function to divide two numbers
 */
float div(float num1, float num2)
{
    return num1 / num2;
}

Note: %.2f is used to print fractional values only up to two decimal places. You can also use %f to print fractional values normally up to six decimal places.

Output

WELCOME TO SIMPLE CALCULATOR
----------------------------
Enter [number 1] [+ - * /] [number 2]
22 * 6
22.00 * 6.00 = 132.00

Happy coding 😉

Write your doubts or suggestion. I will try my best to help. You must escape source code before commenting. To format your source code paste your source code inside
<pre><code> ----Your Source Code---- </code></pre>