lin5720qwq 发表于 2022-8-11 20:30:04

关于S1E12中计算器使用if语句遇到的问题

以下为代码:

#include <stdio.h>

int main()

{
        float a, b, d;
        char c;
        printf("这是一个极其简单的计算器,只能进行四则远算且只具备a+b的形式,别忘了用空格隔开,请输入:");
        scanf_s("%f %c %f",&a,&c,&b);
        getchar();
        if (c = '+')
        {
                d = a + b;
                printf("结果:%f", d);
        }
        else if (c = '-')
        {
                d = a - b;
                printf("结果:%f",d);
        }
        else if (c = '*')
        {
                d = a * b;
                printf("结果:%f", d);
        }
        else if (c = '/')
        {
                if(b=0)
                {
                        printf("错误!");
                }
                d = a / b;
                printf("结果:%f", d);
        }
        else
        {
                printf("错误!");
        }
        return 0;
}



调试时,输入了12+8并回车后会如图报错

wp231957 发表于 2022-8-11 21:48:35

if后面的等号换成==试一下

lin5720qwq 发表于 2022-8-11 21:52:31

还是不行,呜呜呜{:10_266:}

wp231957 发表于 2022-8-11 21:55:30

lin5720qwq 发表于 2022-8-11 21:52
还是不行,呜呜呜

更改后的代码和错误信息发出来

lin5720qwq 发表于 2022-8-11 22:24:08

复制小甲鱼的代码(因为是vs2022,所以把scanf改为scanf_s),还是一样的报错,如下
0x000007FEB5B98BAE (ucrtbased.dll)处(位于 S1E12.exe 中)引发的异常: 0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突。

一点点儿 发表于 2022-8-11 22:46:01

#include <stdio.h>

int main()

{
        float a, b, d;
        char c;
        printf("这是一个极其简单的计算器,只能进行四则远算且只具备a+b的形式,别忘了用空格隔开,请输入:");
        scanf_s("%f %c %f", &a, &c, &b);
        getchar();
        if (c == '+') {
                d = a + b;
                printf("结果:%f", d);
        } else if (c == '-') {
                d = a - b;
                printf("结果:%f", d);
        } else if (c == '*') {
                d = a * b;
                printf("结果:%f", d);
        } else if (c == '/') {
                if (b == 0) {
                        printf("错误!");
                } else {
                        d = a / b;
                        printf("结果:%f", d);
                }
        } else {
                printf("错误!");
        }
        return 0;
}

jackz007 发表于 2022-8-12 00:03:44

本帖最后由 jackz007 于 2022-8-12 00:13 编辑

#include <stdio.h>

int main()

{
      float a , b , d                           ;
      int k = 0                                 ;
      char c                                    ;
      printf("这是一个极其简单的计算器,只能进行四则远算且只具备a+b的形式,别忘了用空格隔开,请输入:") ;
      if(scanf_s("%f%c%f" , & a , & c , & b) == 3) {
                k = 1                               ;
                switch(c) {
                        case '+': d = a + b ; break ;
                        case '-': d = a - b ; break ;
                        case '*': d = a * b ; break ;
                        case '/': k = 0 ; if(b != 0.0) {d = a / b ; k = 1 ;} break ;
                        defalut : k = 0             ;
                }
      }
      if(k) printf("结果:%f\n", d)               ;
      else printf("错误!\n")                     ;
}
      编译、运行实况:
D:\\C>g++ -o x x.c

D:\\C>x
这是一个极其简单的计算器,只能进行四则远算且只具备a+b的形式,别忘了用空格隔开,
请输入:1.234/0
错误!

D:\\C>x
这是一个极其简单的计算器,只能进行四则远算且只具备a+b的形式,别忘了用空格隔开,
请输入:1.234/1.234
结果:1.000000

D:\\C>x
这是一个极其简单的计算器,只能进行四则远算且只具备a+b的形式,别忘了用空格隔开,
请输入:12 + 8
错误!

D:\\C>x
这是一个极其简单的计算器,只能进行四则远算且只具备a+b的形式,别忘了用空格隔开,
请输入:12+8
结果:20.000000

D:\\C>

额外减小 发表于 2022-8-12 00:12:08

我用DEV-C++的试了下,没问题阿{:10_269:}
页: [1]
查看完整版本: 关于S1E12中计算器使用if语句遇到的问题