#include <stdio.
h>
#include <math.h>
void display_menu() {
printf("----- Scientific Calculator -----\n");
printf("1. Addition (+)\n");
printf("2. Subtraction (-)\n");
printf("3. Multiplication (*)\n");
printf("4. Division (/)\n");
printf("5. Sine (sin)\n");
printf("6. Cosine (cos)\n");
printf("7. Tangent (tan)\n");
printf("8. Logarithm (log)\n");
printf("9. Power (pow)\n");
printf("10. Square Root (sqrt)\n");
printf("11. Factorial (!)\n");
printf("12. Absolute Value (|x|)\n");
printf("13. Exit\n");
printf("---------------------------------\n");
double add(double a, double b) {
return a + b;
}
double subtract(double a, double b) {
return a - b;
double multiply(double a, double b) {
return a * b;
double divide(double a, double b) {
if (b == 0) {
printf("Error: Division by zero!\n");
return 0;
return a / b;
double calculate_factorial(int n) {
if (n < 0) return -1; // Error for negative numbers
double fact = 1;
for (int i = 1; i <= n; i++) {
fact *= i;
return fact;
}
int main() {
int choice;
double num1, num2, result;
while (1) {
display_menu();
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1: // Addition
printf("Enter two numbers: ");
scanf("%lf %lf", &num1, &num2);
result = add(num1, num2);
printf("Result: %.2lf\n", result);
break;
case 2: // Subtraction
printf("Enter two numbers: ");
scanf("%lf %lf", &num1, &num2);
result = subtract(num1, num2);
printf("Result: %.2lf\n", result);
break;
case 3: // Multiplication
printf("Enter two numbers: ");
scanf("%lf %lf", &num1, &num2);
result = multiply(num1, num2);
printf("Result: %.2lf\n", result);
break;
case 4: // Division
printf("Enter two numbers: ");
scanf("%lf %lf", &num1, &num2);
result = divide(num1, num2);
if (num2 != 0) printf("Result: %.2lf\n", result);
break;
case 5: // Sine
printf("Enter an angle in radians: ");
scanf("%lf", &num1);
result = sin(num1);
printf("Result: %.2lf\n", result);
break;
case 6: // Cosine
printf("Enter an angle in radians: ");
scanf("%lf", &num1);
result = cos(num1);
printf("Result: %.2lf\n", result);
break;
case 7: // Tangent
printf("Enter an angle in radians: ");
scanf("%lf", &num1);
result = tan(num1);
printf("Result: %.2lf\n", result);
break;
case 8: // Logarithm
printf("Enter a number: ");
scanf("%lf", &num1);
if (num1 > 0) {
result = log(num1);
printf("Result: %.2lf\n", result);
} else {
printf("Error: Logarithm of non-positive number!\n");
break;
case 9: // Power
printf("Enter base and exponent: ");
scanf("%lf %lf", &num1, &num2);
result = pow(num1, num2);
printf("Result: %.2lf\n", result);
break;
case 10: // Square Root
printf("Enter a number: ");
scanf("%lf", &num1);
if (num1 >= 0) {
result = sqrt(num1);
printf("Result: %.2lf\n", result);
} else {
printf("Error: Square root of negative number!\n");
break;
case 11: // Factorial
printf("Enter a positive integer: ");
int n;
scanf("%d", &n);
result = calculate_factorial(n);
if (result != -1) printf("Result: %.0lf\n", result);
else printf("Error: Factorial of negative number not defined!\n");
break;
case 12: // Absolute Value
printf("Enter a number: ");
scanf("%lf", &num1);
result = fabs(num1);
printf("Result: %.2lf\n", result);
break;
case 13: // Exit
printf("Exiting the calculator.\n");
return 0;
default:
printf("Invalid choice! Please try again.\n");
return 0;
}
Calculator with bit more functions
#include <stdio.h>
#include <math.h>
#define PI 3.14159265358979323846
#define E 2.71828182845904523536
double memory = 0.0;
void display_menu() {
printf("----- Scientific Calculator -----\n");
printf("1. Addition (+)\n");
printf("2. Subtraction (-)\n");
printf("3. Multiplication (*)\n");
printf("4. Division (/)\n");
printf("5. Sine (sin)\n");
printf("6. Cosine (cos)\n");
printf("7. Tangent (tan)\n");
printf("8. Inverse Sine (asin)\n");
printf("9. Inverse Cosine (acos)\n");
printf("10. Inverse Tangent (atan)\n");
printf("11. Hyperbolic Sine (sinh)\n");
printf("12. Hyperbolic Cosine (cosh)\n");
printf("13. Hyperbolic Tangent (tanh)\n");
printf("14. Logarithm (log)\n");
printf("15. Log10 (log10)\n");
printf("16. Power (pow)\n");
printf("17. Exponential (e^x)\n");
printf("18. Square Root (sqrt)\n");
printf("19. Factorial (!)\n");
printf("20. Absolute Value (|x|)\n");
printf("21. Modulus (%%)\n");
printf("22. Percent (%% of number)\n");
printf("23. Store in Memory\n");
printf("24. Recall from Memory\n");
printf("25. Clear Memory\n");
printf("26. Use Constant π\n");
printf("27. Use Constant e\n");
printf("28. Convert Degrees to Radians\n");
printf("29. Convert Radians to Degrees\n");
printf("30. Exit\n");
printf("---------------------------------\n");
double add(double a, double b) {
return a + b;
}
// Basic and Advanced Operations (code remains the same for add, subtract, etc.)
// Degrees to radians
double degrees_to_radians(double degrees) {
return degrees * (PI / 180.0);
// Radians to degrees
double radians_to_degrees(double radians) {
return radians * (180.0 / PI);
int main() {
int choice;
double num1, num2, result;
while (1) {
display_menu();
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 5: // Sine (sin in radians)
printf("Enter an angle in radians: ");
scanf("%lf", &num1);
result = sin(num1);
printf("Result: %.2lf\n", result);
break;
case 8: // Inverse Sine (asin)
printf("Enter value: ");
scanf("%lf", &num1);
result = asin(num1);
printf("Result (in radians): %.2lf\n", result);
break;
case 11: // Hyperbolic Sine (sinh)
printf("Enter value: ");
scanf("%lf", &num1);
result = sinh(num1);
printf("Result: %.2lf\n", result);
break;
case 15: // Log10 (base 10 logarithm)
printf("Enter a number: ");
scanf("%lf", &num1);
if (num1 > 0) {
result = log10(num1);
printf("Result: %.2lf\n", result);
} else {
printf("Error: Logarithm of non-positive number!\n");
}
break;
case 17: // Exponential (e^x)
printf("Enter value: ");
scanf("%lf", &num1);
result = exp(num1);
printf("Result: %.2lf\n", result);
break;
case 21: // Modulus
printf("Enter two integers: ");
int a, b;
scanf("%d %d", &a, &b);
if (b != 0) {
printf("Result: %d\n", a % b);
} else {
printf("Error: Division by zero!\n");
break;
case 22: // Percentage
printf("Enter base number and percentage to find: ");
scanf("%lf %lf", &num1, &num2);
result = (num1 * num2) / 100;
printf("Result: %.2lf\n", result);
break;
case 23: // Store in Memory
printf("Enter number to store in memory: ");
scanf("%lf", &memory);
printf("Stored %.2lf in memory.\n", memory);
break;
case 24: // Recall from Memory
printf("Memory Recall: %.2lf\n", memory);
break;
case 25: // Clear Memory
memory = 0.0;
printf("Memory Cleared.\n");
break;
case 26: // Use Constant π
printf("π = %.10lf\n", PI);
break;
case 27: // Use Constant e
printf("e = %.10lf\n", E);
break;
case 28: // Degrees to Radians
printf("Enter degrees: ");
scanf("%lf", &num1);
result = degrees_to_radians(num1);
printf("Radians: %.5lf\n", result);
break;
case 29: // Radians to Degrees
printf("Enter radians: ");
scanf("%lf", &num1);
result = radians_to_degrees(num1);
printf("Degrees: %.5lf\n", result);
break;
case 30: // Exit
printf("Exiting the calculator.\n");
return 0;
default:
printf("Invalid choice! Please try again.\n");
return 0;