鱼C论坛

 找回密码
 立即注册
查看: 642|回复: 4

[已解决]关于if括号内语句的问题

[复制链接]
发表于 2020-7-24 05:45:08 | 显示全部楼层 |阅读模式

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

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

x
#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
请按任意键继续. . .

最佳答案
2020-7-24 08:38:51
我运行了你的代码,发现s2无法赋值,显示无法写入。有权限。将函数scanf_s改为scanf就正常了。无论输入1+2还是1 + 2都可以正常运行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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了,不然太...

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-24 08:38:51 | 显示全部楼层    本楼为最佳答案   
我运行了你的代码,发现s2无法赋值,显示无法写入。有权限。将函数scanf_s改为scanf就正常了。无论输入1+2还是1 + 2都可以正常运行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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,它告诉你要用这个。在项目属性里面,预处理器,给定义这个。或者直接在代码里预处理。编译器就不会报错了,忽略了这个警告
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 10:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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