C中的简单计算器程序

时间:2014-06-08 09:57:03

标签: c calculator

我需要在C中编写一个简单的程序,它可以简单地计算:+, - ,*,/

现在,我正在使用Visual Studio Express 2013,这里是代码:

#include <stdio.h>
#include <stdlib.h>

int main(){

    double a, b;
    double sum = 0;
    char o; //operator

    printf("Enter operator\n");
    scanf_s("%c", &o);
    printf("Enter first operand\n");
    scanf_s("%f", &a);
    printf("Enter second operand\n");
    scanf_s("%f", &b);


    if (o == '+'){
        sum = a + b;
        printf("The result is", &sum);
    }

    if (o == '-'){

        sum = a - b;
        printf("The result is", sum);

    }

    if (o == '*'){

        sum = a*b;
        printf("The result is", sum);

    }

    if (o == '/'){

        if (b == !0){

            sum = a / b;
            printf("The result is", sum);
        }
        else printf("Error");
    }
getchar();

    }

我的输出:输入运算符 + 输入第一个操作数 3.5 输入第二个操作数 5.4

输入第二个数字后,程序退出,什么都没有! 没有编译错误,我不知道该怎么做。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

您未正确使用printf。这就是你正在使用的。

printf("The result is", &sum);

您未在格式字符串中指定输出类型,并且您要传递要打印的变量的地址,而不是值。

您应该使用:

printf("The result is %lf\n", sum);

%lf指定您要打印double\n添加换行符,并传递变量sum的值,而不是&#39;的地址。

另外,您应该将if (b == !0){更改为if (b != 0){。如果你保留你所放的东西,那就相当于if (b == 1){,这可能不是你想要的。

编辑以下是我的修改后的代码,它可以提供正确的结果。我将指出我更改了​​哪些行

#include <stdio.h>
#include <stdlib.h>

int main(){

    double a, b;
    double sum = 0;
    char o; //operator

    /* I had to use scanf, since I'm not using MS/Visual Studio, but GCC */
    printf("Enter operator\n");
    scanf("%c", &o);
    printf("Enter first operand\n");
    scanf("%lf", &a); /* changed %f to %lf */
    printf("Enter second operand\n");
    scanf("%lf", &b); /* changed %f to %lf */

    /* I prefer to use if ... else if ..., this is personal preference */
    if (o == '+'){
        sum = a + b;
        printf("The result is %lf\n", sum); /* Changed, see original post */
    } else if (o == '-'){
        sum = a - b;
        printf("The result is %lf\n", sum); /* Changed, see original post */
    } else if (o == '*'){
        sum = a*b;
        printf("The result is %lf\n", sum); /* Changed, see original post */
    } else if (o == '/'){
        if (b != 0){
        sum = a / b;
            printf("The result is %lf\n", sum); /* Changed, see original post */
        }
        else printf("Error");
    }

    getchar();

    return 0;

}

答案 1 :(得分:0)

  1. 您正在使用%f格式来阅读双打。您应该使用%lfscanf_s("%lf", &a);
  2. 打印方法实际上不打印结果(格式不完整)。并且,而不是值,您传递变量的地址。它应该是: printf("The result is %e", sum);
  3. 您还应将if (b == !0)更改为if (b != 0)

答案 2 :(得分:-1)

现在一切正常,我对其进行了一些更改

问题出在您的“ scanf_s”和“%f”上

+refs/tags/*:refs/remotes/origin/tags/*