0

我知道这对我来说可能是一个非常愚蠢的错误,但我刚刚开始学习 C。我想制作一个基本的计算器,但我不断收到关于程序的错误,该程序需要一个 const char * 但我有一个浮点数。它还说最后一个 printf 命令(我相信第 50 行)没有正确的语法或正确的形式。再次,我真的很新,很抱歉给你带来不便。谢谢大家的帮助!我的代码如下。

#include <stdio.h>

#include <math.h>

int main()
{
    char firstnum, secondnum, answer;
    char function;

    printf("Hello and welcome to my calculator!");

    printf("Please input the function you would like to use");

    scanf("%c", &function);

    printf("Now please input the two variables.");

    scanf("%f", &firstnum);

    scanf("%f", &secondnum);

    if (function == '+')
    {
        answer = firstnum+secondnum;
    }
    else if (function == '-')
    {
        answer = firstnum-secondnum;
    }
    else if (function == '*')
    {
        answer = firstnum*secondnum;
    }
    else if (function == '/')
    {
        answer = firstnum/secondnum;
    }
    else
    {
        printf("Sorry that was an incorrect function.  The correct inputs are +, -, *, /.");
    }

    printf(answer);

    return 0;


}
4

5 回答 5

3

几件事:

1)换行,因为你想使用浮点数

char firstnum, secondnum, answer;

应该

float firstnum, secondnum, answer;

2)换线

printf(answer);

printf("Answer %f \n", answer);
于 2013-02-20T05:29:00.900 回答
0

你的决赛printf应该是

printf("%f", answer);

或者更好

printf("Answer : %f \n", answer);

这是因为 的声明printf如下

int printf ( const char * format, ... );

预期的第一个参数是输出的格式,其余的是要插入的变量。

除此之外,您应该像其他人指出的那样修复您的数据类型。

于 2013-02-20T05:28:38.667 回答
0
char firstnum, secondnum, answer;
:
scanf("%f", &firstnum);

这根本不会有好的结局。您必须将您的数据类型scanf与格式说明符匹配。

这些变量应该是类型float,但老实说,现在没有真正的理由不使用双精度数来获得额外的范围和精度。在这种情况下,请确保使用%lf格式说明符。

此外,您的 finalprintf完全缺少格式说明符,这意味着它将尝试使用该answer变量作为说明符。一旦您按照上述方式修复了数据类型,应将其更改为:

printf ("%f\n", answer);  // %lf for double.
于 2013-02-20T05:29:30.147 回答
0

像这样声明你的变量 -

float firstnum, secondnum, answer;

最后更改printf为 -

printf("Answer is: %f", answer);
于 2013-02-20T05:27:29.810 回答
0

将您的声明更改为 printf("%f",answer);.

此外,您已将变量声明为chars ,将它们声明为floats。

推荐的:

由于您似乎是初学者,因此我有一个建议给您。尝试减少您的程序执行时间并尝试使程序高效。if---else因此,您可能已经使用了switch案例,而不是这么多块。

于 2013-02-20T05:31:40.133 回答