# Calculator Program in C

«
»

Calculator in C: A calculator is a tool used to compute mathematical operations on numbers. Simple calculators can only perform the mathematical operations of addition, subtraction, multiplication, and division. In contrast, complex calculators can work with hyperbolic, trigonometric, square-root, logarithmic, and exponential functions. Simple Calculator Program in C will be explained in this article with an example.

Problem Description

Write a C Program that simulates a simple calculator.

Problem Solution

Step 1: Declare the variables.
Step 2: Enter the two numbers.
Step 3: Enter the operator of your choice.
Step 4: Store the result in the variable ‘result’.
Step 5: Print the result.
Step 6: Exit the Program.

Let’s discuss different ways to create a calculator program in C.

Method 1: (Calculator Program in C using Switch Case)

In this C Program we are going to construct a simple calculator using Switch Case.

Program/Source Code

Here is the source code of the C program that simulates a simple calculator using a switch case statement. The C program is successfully compiled and run on a Linux system. The program output is also shown below.

Sanfoundry Certification Contest of the Month is Live. 100+ Subjects. Participate Now!
```/*
* C program to simulate a simple calculator to perform arithmetic
* operations like addition, subtraction, multiplication and division
*/
#include <stdio.h>

void main()
{
char operator;
float num1, num2, result;

printf("Simulation of a Simple Calculator\n");
printf("*********************************\n");
printf("Enter two numbers \n");
scanf("%f %f", &num1, &num2);
fflush(stdin);
printf("Enter the operator [+,-,*,/] \n");
scanf("%s", &operator);
switch(operator)
{
case '+': result = num1 + num2; // add two numbers
break;
case '-': result = num1 - num2; // subtract two numbers
break;
case '*': result = num1 * num2; // multiply two numbers
break;
case '/': result = num1 / num2; // divide two numbers
break;
default : printf("Error in operation");
break;
}
printf("\n %5.2f %c %5.2f = %5.2f\n", num1, operator, num2, result);
}```
Program Explanation

In this C program, we read three float values and an operator symbol using num1, num2, result and operator variables respectively.

Switch case statement is used to perform arithmetic operations like addition, subtraction, multiplication and division in each case. The user needs to enter the operator on which they need to perform the operation. If the operator symbol does not match any case in the switch case, then execute the default statement and print the statement as “Error in operation”.

Examples:

Check this: C Books | BCA MCQs
• Consider, the two numbers entered by user are 2 and 3, and the operator entered by the user is ‘+’. We enter the switch case and find that the operator + matches with the first case, so we will enter the first case i.e. case ‘+’ and compute the result (result = 2 + 3 = 5). Since, result is a float variable therefore, output printed will be 5.00.
• Consider, the two numbers entered by user are 65000 and 4700, and the operator entered by the user is ‘’. We enter the switch case and find that the operator matches with the second case, so we will enter the second case i.e. case ‘-‘ and compute the result (result = 65000 – 4700 = 60300). Since, result is a float variable therefore, output printed will be 60300.00.

Time Complexity: O(1)
The above calculator program has a time complexity of O(1) as there are no loops and each condition is executed only once.

Space Complexity: O(1)
In the above program, space complexity is O(1) as no extra variable has been taken to store the values in the memory. All the variables initialized takes a constant O(1) space.

Runtime Test Cases

Test Case 1: In this case, we are simulating an addition operation with a simple calculator.

```
Simulation of a Simple Calculator
*********************************
Enter two numbers
2 3
Enter the operator [+,-,*,/]
+

2.00 +  3.00 =  5.00```

Test Case 2: In this case, we are simulating an multiplication operation with a simple calculator.

```
Simulation of a Simple Calculator
*********************************
Enter two numbers
50 40
Enter the operator [+,-,*,/]
*

50.00 * 40.00 = 2000.00```

Test Case 3: In this case, we are performing Division operation using simple calculator.

```
Simulation of a Simple Calculator
*********************************
Enter two numbers
500 17
Enter the operator [+,-,*,/]
/

500.00 / 17.00 = 29.41```

Test Case 4: In this case, we are performing Subtraction operation using simple calculator.

```
Simulation of a Simple Calculator
*********************************
Enter two numbers
65000 4700
Enter the operator [+,-,*,/]
-

65000.00 - 4700.00 = 60300.00```

Method 2: (Calculator Program in C using if-else)

In this C Program we are going to construct a simple calculator using if-else condition.

Program/Source Code

Here is the source code of the C program that simulates a simple calculator using the if-else condition. The C program is successfully compiled and run on a Linux system. The program output is also shown below.

```/*
* C program to simulate a simple calculator to perform arithmetic
* operations like addition, subtraction, multiplication and division
*/
#include <stdio.h>

void main()
{
char operator;
float num1, num2, result;

printf("Simulation of a Simple Calculator\n");
printf("*********************************\n");
printf("Enter two numbers \n");
scanf("%f %f", &num1, &num2);
printf("Enter the operator [+,-,*,/] \n");
scanf("%s", &operator);
if(operator == '+')
result = num1 + num2;
else if(operator == '-')
result = num1 - num2;
else if(operator == '*')
result = num1 * num2;
else if(operator == '/')
result = num1 / num2;
else
printf("Error in operation");
printf("\n%5.2f %c %5.2f = %5.2f\n", num1, operator, num2, result);
}```
Program Explanation

In this C program, we read three float values and an operator symbol using num1, num2, result and operator variables respectively.

If-else statement is used to perform arithmetic operations like addition, subtraction, multiplication and division in each condition. The user needs to enter the operator on which they need to perform the operation. If the operator symbol does not match any condition, then execute the else statement and print the statement as “Error in operation”.

Examples:

• Consider, the two numbers entered by user are 50 and 40, and the operator entered by the user is ‘*’. Now, in the if-else condition we will check the condition that matches operator==’*’. Now, in that condition multiplication will be performed over the two numbers and the result (50*40 = 2000) will be stored in the result variable. Finally, the result will be printed as 2000.00.
• Consider, the two numbers entered by user are 400 and 16, and the operator entered by the user is ‘/’. Now, in the if-else condition we will check the condition that matches operator==’/’. Now, in that condition multiplication will be performed over the two numbers and the result (400/16 = 25) will be stored in the result variable. Finally, the result will be printed as 25.00.

Time Complexity: O(1)
The above calculator program has a time complexity of O(1) as there are no loops and each condition is executed only once.

Space Complexity: O(1)
In the above program, space complexity is O(1) as no extra variable has been taken to store the values in the memory. All the variables initialized takes a constant O(1) space.

Runtime Test Cases

```
Simulation of a Simple Calculator
*********************************
Enter two numbers
3 5
Enter the operator [+,-,*,/]
+

3.00 + 5.00 =  8.00```

Test Case 2: Multiplication

```
Simulation of a Simple Calculator
*********************************
Enter two numbers
40 50
Enter the operator [+,-,*,/]
*

40.00 * 50.00 = 2000.00```

Test Case 3: Division

```
Simulation of a Simple Calculator
*********************************
Enter two numbers
400 16
Enter the operator [+,-,*,/]
/

400.00 / 16.00 = 25.00```

Test Case 4: Subtraction

```
Simulation of a Simple Calculator
*********************************
Enter two numbers
6500 4700
Enter the operator [+,-,*,/]
-

5500.00 - 4100.00 = 1400.00```

Method 3: (Calculator Program in C using do-while and Switch Case)

In this C Program we are going to construct a simple calculator using do-while loop and Switch Case which will allow users to repeatedly perform calculation until they want to exit.

Program/Source Code

Here is the source code for a C program that simulates a simple calculator using a do-while loop and switch case. The C program is successfully compiled and run on a Linux system. The program output is also shown below.

```/*
* C program to simulate a simple calculator to perform arithmetic
* operations like addition, subtraction, multiplication, division, remainder etc.
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void main()
{
float num1, num2, result;  // used for all other operations except remainder
int ch,n1,n2,res;  //used for remainder operation
do{
printf("\nSimulation of a Simple Calculator\n");
printf("*********************************\n");
printf("Select a number to perform operation on Calculator");
5->Remainder\t 6- >Square\t 7->Square Root 8->Exit\n");
scanf("%d",&ch);

switch(ch)
{
case 1:
printf("Enter two numbers \n");
scanf("%f %f", &num1, &num2);
result = num1 + num2;
printf("\n%.2f + %.2f = %.2f\n",num1,num2,result);
break;

// Subtract two numbers
case 2:
printf("Enter two numbers \n");
scanf("%f %f", &num1, &num2);
result = num1 - num2;
printf("\n%.2f - %.2f = %.2f\n",num1,num2,result);
break;

// Multiplication of two numbers
case 3:
printf("Enter two numbers \n");
scanf("%f %f", &num1, &num2);
result = num1 * num2;
printf("\n%.2f * %.2f = %.2f\n",num1,num2,result);
break;

// Division of two numbers
case 4:
printf("Enter two numbers \n");
scanf("%f %f", &num1, &num2);
result = num1 / num2;
printf("\n%.2f / %.2f = %.2f\n",num1,num2,result);
break;

// Remainder of two numbers
case 5:
printf("Enter two numbers \n");
scanf("%d %d", &n1, &n2);
res = n1 % n2;
printf("Remainder of two numbers = %d\n",res);
break;

// Square of number
case 6:
printf("Enter the number \n");
scanf("%f", &num2);
result = num2 * num2;
printf("Square of %.2f = %.2f\n",num2,result);
break;

// Square root of a number
case 7:
printf("Enter the number \n");
scanf("%f", &num1);
result = sqrt(num1);
printf("Square Root of %.2f = %.2f\n",num1,result);
break;

case 8:
printf ("Execution Terminated");
exit(0);
break;

default:
printf("Error in Operation");
break;
}
}while(ch!=8);
}```
Program Explanation

In this C program, we use do-while loop and switch case. The do-while loop runs until the user give the input as 8(exit) while choosing operations that needs to be performed.

Switch case statement is used to perform arithmetic operations like addition, subtraction, multiplication, division etc. in each case. The user needs to enter the values on which they need to perform the operation in each specific switch case statement. If the user enters any other number except 1-8 while choosing the operation, then the default statement will be executed and an error message will be prompted “Error in operation”.

Examples:
In this calculator program, 1st the users need to choose the number associated with the operator on which they need to perform the calculation. Then they need to enter the number for calculation.

• Suppose the operator chosen by user is ‘7 i.e., square root’. Now, in the switch case we will enter the case 7 where the user needs to enter a number to calculate square root. Suppose the number chosen by user is 49, so square root of 49 will be calculated and the result = 7 will be printed as output.
• Suppose the operator chosen by user is ‘6 i.e., square’. Now, in the switch case we will enter the case 6 where the user needs to enter a number to calculate square of a number. Suppose the number chosen by user is 5, so square root of 5 will be calculated and the result = 25 will be printed as output.

Time Complexity: O(n)
The above calculator program has a time complexity of O(n) as there is a do while loop and each condition is executed only once, where n is the number of times user enters the choice before exiting the condition.

Space Complexity: O(1)
In the above program, space complexity is O(1) as no extra variable has been taken to store the values in the memory. All the variables initialized takes a constant O(1) space.

Runtime Test Cases
```
Simulation of a Simple Calculator
*********************************
Select a number to perform operation on Calculator
6->Square     7->Square Root     8->Exit
1
Enter two numbers
2 3
2.00 + 3.00 = 5.00

Simulation of a Simple Calculator
*********************************
Select a number to perform operation on Calculator
6->Square     7->Square Root     8->Exit
5
Enter two numbers
10 8
Remainder of two numbers = 2

Simulation of a Simple Calculator
*********************************
Select a number to perform operation on Calculator
6->Square     7->Square Root     8->Exit
6
Enter the number
5
Square of 5.00 = 25.00

Simulation of a Simple Calculator
*********************************
Select a number to perform operation on Calculator
6->Square     7->Square Root     8->Exit
7
Enter the number
49
Square Root of 49.00 = 7.00

Simulation of a Simple Calculator
*********************************
Select a number to perform operation on Calculator
6->Square     7->Square Root     8->Exit
8
Execution Terminated```

To practice programs on every topic in C, please visit “Programming Examples in C”, “Data Structures in C” and “Algorithms in C”.