我变秃了。 发表于 2020-7-24 05:45:08

关于if括号内语句的问题

#include <stdio.h>

int main()
{
        char ch;
        float s1, s2;
        printf("请输入:\n");
        scanf_s("%f %c %f", &s1, &ch, &s2);

        if (ch == '-')
        {
                s1 = s1 - s2;
                printf("%f\n", s1);
        }
        else if (ch == '+')
        {
                s1 = s1 + s2;
                printf("%f\n", s1);
        }
        else if (ch == '*')
        {
                s1 = s1 * s2;
                printf("%f\n", s1);
        }
        else if (ch == '/' && s2 != 0)
        {
                s1 = s1 / s2;
                printf("%f\n", s1);
        }
        else
                printf("非法输入");

        return 0;
}


这段代码能正常运行,但是运行后不是想要的结果,
VC2013下运行结果:
请输入:
1
+
2
请按任意键继续. . .

livcui 发表于 2020-7-24 08:21:16

本帖最后由 livcui 于 2020-7-24 08:25 编辑

改为:
#include <stdio.h>

int main()
{
    char ch;
    float s1, s2;
    printf("请输入:\n");
    scanf("%f%c%f", &s1, &ch, &s2);

    switch (ch) {

    case '-':
      s1 = s1 - s2;
      printf("%f\n", s1);
      break;
    case '+':
      s1 = s1 + s2;
      printf("%f\n", s1);
      break;
    case '*':
      s1 = s1 * s2;
      printf("%f\n", s1);
      break;
    case '/':
        if (s2 != 0){

                s1 = s1 / s2;
              printf("%f\n", s1);
              break;

        }
    default:
      printf("非法输入");

    }

    return 0;

}scanf_s 的问题,改为scanf就可以了,C我不熟,scanf_s 也不知道错哪里了,
代码帮你改成switch了,不然太...

405794672 发表于 2020-7-24 08:38:51

我运行了你的代码,发现s2无法赋值,显示无法写入。有权限。将函数scanf_s改为scanf就正常了。无论输入1+2还是1 + 2都可以正常运行

我变秃了。 发表于 2020-7-25 01:37:20

405794672 发表于 2020-7-24 08:38
我运行了你的代码,发现s2无法赋值,显示无法写入。有权限。将函数scanf_s改为scanf就正常了。无论输入1+2 ...

我用的VS2013,用scanf会报错显示如下

错误        1        error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.        f:\练习\consoleapplication34\consoleapplication34\计算器725.c        8        1        ConsoleApplication34

405794672 发表于 2020-7-25 08:41:20

我变秃了。 发表于 2020-7-25 01:37
我用的VS2013,用scanf会报错显示如下

错误        1        error C4996: 'scanf': This function or variable may...

百度一下,查找一下该警告解决办法。C4996的。。就是把你上面写的那个_CRT_SECURE_NO_WARNINGS,它告诉你要用这个。在项目属性里面,预处理器,给定义这个。或者直接在代码里预处理。编译器就不会报错了,忽略了这个警告
页: [1]
查看完整版本: 关于if括号内语句的问题