首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >时间循环中的开关语句

时间循环中的开关语句
EN

Stack Overflow用户
提问于 2014-04-21 07:39:30
回答 3查看 71关注 0票数 0

当我运行这段代码时,这是我的输出:

代码语言:javascript
运行
复制
$ make 6-4 && ./6-4
`6-4' is up to date.
Begin calculations
S 3
 = 3.000000
+ 2
Invalid operator
 = 3.000000
 = 5.000000

它开始的很好,‘S3’给我‘= 3.000000’。在我输入"+ 2“时,这会给出‘无效运算符’和两个答案。这就是我想要的:

代码语言:javascript
运行
复制
S 3
 = 3.000000
+ 2
 = 5.000000

我遗漏了什么?

代码语言:javascript
运行
复制
#include<stdio.h>

char operator;
float number = 0;
float result = 0;

main()
{
        printf("Begin calculations\n");

        while (1) {
                scanf("%c%f", &operator, &number);
                switch(operator)
                {
                        case '+': {
                                result += number;
                                break;
                                }
                        case '-': {
                                result -= number;
                                break;
                                }
                        case '*': {
                                result *= number;
                                break;
                                }
                        case '/': {
                                result /= number;
                                break;
                                }
                        case 'S': {
                                result = number;
                                break;
                                }
                        case 'E': {
                                return 0;
                                break;
                                }
                        default: {
                                printf("Invalid operator\n");
                                break;
                                }
                }
                printf(" = %f\n", result);
        }
}

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-21 07:42:15

在您的示例中,在第二次调用中,scanf将换行符读入&操作符。若要跳过空白字符,请尝试使用:

代码语言:javascript
运行
复制
scanf(" %c%f", &operator, &number);

而不是。也就是说,在格式的开头放一个空格字符。在%c%f之间放置一个空格可能是个好主意。

票数 3
EN

Stack Overflow用户

发布于 2014-04-21 07:43:30

当读取第二行输入时,scanf()将读取%c格式规范的\n换行符。

票数 0
EN

Stack Overflow用户

发布于 2014-04-21 07:45:35

试着打印操作符和数字的值,这样我们就知道为什么这个值不是执行大小写'+‘了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23193056

复制
相关文章

相似问题

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