鱼C论坛

 找回密码
 立即注册
查看: 1598|回复: 5

[已解决]简单四则计算器问题

[复制链接]
发表于 2020-9-29 10:31:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <stdbool.h>
 
int main()
{
    float Num1, Num2;
    char ch;
    float result;
    bool invalid = true;

    printf("Please enter the formula:");
    scanf("%f %c %f", &Num1, ch, Num2);

    switch (ch)
    {
        case '-': Num2 = -Num2; //No Break!!!
        case '+': Num1 + Num2; break;
        case '*': Num1 * Num2; break;
        case '/':
            if (Num2 != 0)
            {
             result = Num1 / Num2; break;
            }
            else
            {
                invalid = false; break;
            }
    }
    
    if (invalid)
    {
        printf("Divisor cannot be zero!\n");
    }
    else
    {
        printf("result is : %.2f\n", result);
    }
    
    return 0;
}
上面是仿造小甲鱼的代码写的


下面是小甲鱼的
#include <stdio.h>
#include <stdbool.h>

int main()
{
        float op1, op2;
        char ch;
        float result;
        bool invalid = false;

        printf("请输入式子:");
        scanf("%f %c %f", &op1, &ch, &op2);

        switch (ch)
        {
                case '-': op2 = -op2; // no break
                case '+': result = op1 + op2; break;
                case '*': result = op1 * op2; break;
                case '/':
                        if (op2 != 0)
                        {
                                result = op1 / op2;
                                break;
                        }
                        else
                        {
                                invalid = true;
                                break;
                        }
        }

        if (invalid)
        {
                printf("除数不能为零!\n");
        }
        else
        {
                printf("结果是:%.2f\n", result);
        }

        return 0;
}



自己的运行后总是出错 找不出错误 请各位指点指点
最佳答案
2020-9-29 13:12:57
四处错误,帮你修改并注释了
#include <stdio.h>
#include <stdbool.h>
 
int main()
{
    float Num1, Num2;
    char ch;
    float result;
    bool invalid = true;

    printf("Please enter the formula:");
    scanf("%f %c %f", &Num1, &ch, &Num2);//错误1、这里后两个变量没有加取地址符

    switch (ch)
    {
        case '-': Num2 = -Num2; //No Break!!!
        case '+': result = Num1 + Num2; break;//错误2、计算结果没有赋值给result
        case '*': result = Num1 * Num2; break;//错误3、计算结果没有赋值给result
        case '/':
            if (Num2 != 0)
            {
             result = Num1 / Num2; break;
            }
            else
            {
                invalid = false; break;
            }
    }
    
    if (!invalid)//错误4、你的invalid是当除数为0的时候设为false,那么这里应该是除数为0的时候进入else
    {
        printf("Divisor cannot be zero!\n");
    }
    else
    {
        printf("result is : %.2f\n", result);
    }
    
    return 0;
}
截屏2020-09-29 10.25.59.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-29 11:37:25 | 显示全部楼层
#include <stdio.h>
#include <stdbool.h>
 
int main()
{
    float Num1, Num2;
    char ch;
    float result;
    bool invalid = true;

    printf("Please enter the formula:");
    scanf("%f %c %f", &Num1, &ch, &Num2); // 后面少了两个& 

    switch (ch)
    {
        case '-': Num2 = -Num2; //No Break!!!
        case '+': Num1 + Num2; break;
        case '*': Num1 * Num2; break;
        case '/':
            if (Num2 != 0)
            {
             result = Num1 / Num2; break;
            }
            else
            {
                invalid = false; break;
            }
    }
    
    if (invalid == flase) //注意你invalid的变量怎么设的,什么时候改变 
    {
        printf("Divisor cannot be zero!\n");
    }
    else
    {
        printf("result is : %.2f\n", result);
    }
    
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-9-29 13:12:57 | 显示全部楼层    本楼为最佳答案   
四处错误,帮你修改并注释了
#include <stdio.h>
#include <stdbool.h>
 
int main()
{
    float Num1, Num2;
    char ch;
    float result;
    bool invalid = true;

    printf("Please enter the formula:");
    scanf("%f %c %f", &Num1, &ch, &Num2);//错误1、这里后两个变量没有加取地址符

    switch (ch)
    {
        case '-': Num2 = -Num2; //No Break!!!
        case '+': result = Num1 + Num2; break;//错误2、计算结果没有赋值给result
        case '*': result = Num1 * Num2; break;//错误3、计算结果没有赋值给result
        case '/':
            if (Num2 != 0)
            {
             result = Num1 / Num2; break;
            }
            else
            {
                invalid = false; break;
            }
    }
    
    if (!invalid)//错误4、你的invalid是当除数为0的时候设为false,那么这里应该是除数为0的时候进入else
    {
        printf("Divisor cannot be zero!\n");
    }
    else
    {
        printf("result is : %.2f\n", result);
    }
    
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

头像被屏蔽
发表于 2020-9-30 06:58:25 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-1 13:50:34 | 显示全部楼层
我的系统里竟然没有 stdbool.h,下载了一个,小甲鱼的程序才运行正常

你的问题还没解决?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-9 11:11:27 | 显示全部楼层
乐乐学编程 发表于 2020-10-1 13:50
我的系统里竟然没有 stdbool.h,下载了一个,小甲鱼的程序才运行正常

你的问题还没解决?

我是用 VS code
很方便 可以自定义很多插件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 23:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表