使用 switch 语句,创建一个计算程序

using switch statement, to create a program for calculation

在开发计算器的程序中不得不面对一些问题,我尝试在 switch 语句之前进行数学运算的计算。输入数值和数学运算后打印结果只提示invalid entry on my default statement

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
       // declare and initialise working storage
       char function;
       int num1, num2, sum, sub, multi, div, remainder;
    
    
       // prompt user to enter 2 number
       printf("Enter numbers and function: ");
       scanf("%d%c%d", &num1, &function, &num2);

       // calculation
       sum = num1 + num2;
       sub = num1 - num2;
       multi = num1 * num2;
       div = num1 / num2;
       remainder = num1 % num2;
    
       // print the result
       switch(function)
       {
            case '+':
                printf("The sum is %d\n", sum);
                break;
            case '-':
                printf("The subtraction is %d\n", sub);
                break;
            case '*':
                printf("The multiplication is %d\n", multi);
                break;
            case '/':
                if(num2 ==0)
                {
                     printf("Cannot divide by 0!\n");
                }
                else
                {
                    printf("The div is %d\n", div);
                }
                break;
            case '%':
                 if(num2 ==0)
                {
                     printf("Cannot divide by 0!\n");
                }
                else
                {
                    printf("The remainder is %d\n", remainder);
                }
                break;
    
            default:
                printf("Invalid Entry!!!!!\n");
                break;
    
       }
    
    
    
       return 0;
}

%c 读取一个字符。空格和换行符也是字符。 %d 仅等待 int 输入。 这就是为什么每次您想提供不同的数字时,您都必须按 return 或 space 让程序读取下一个 int 输入。 因此,如果您选择这样输入:

1 + 3

程序理解:

&num1 = 1 , &num2 = 3, &function = (space)

如果您选择这样输入字符:

1+3(return)

它将 运行 正确。但这不是一个友好的计算器。

您可以做的是:

printf("Enter numbers : ");
scanf("%d%d", &num1, &num2);// give 5(space)2 or 5(return)2 
scanf(%c,&enter); // reads the newline
printf("Enter function: ");
scanf("%c",&function);