首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用switch语句创建计算程序。

问使用switch语句创建计算程序。
EN

Stack Overflow用户
提问于 2022-04-15 11:18:07
回答 1查看 132关注 0票数 0

为了开发一个计算器,我不得不面对这个程序中的一些问题,我已经尝试在开关语句之前对数学运算进行计算。输入“值”和“数学”操作后,打印结果仅提示默认语句上的无效条目。

代码语言:javascript
复制
#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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-15 13:42:41

%c读取字符。空格和换行符也是字符。%d只等待int输入。这就是为什么每次你想提供不同的数字,你必须按返回或空格让程序读取下一个int输入。所以,如果你选择像这样提供你的投入:

代码语言:javascript
复制
1 + 3

该方案理解如下:

代码语言:javascript
复制
&num1 = 1 , &num2 = 3, &function = (space)

如果您选择这样输入您的角色:

代码语言:javascript
复制
1+3(return)

它会正常运行的。但那不是友好的计算器。

你能做的是:

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71883362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档