繁体   English   中英

计算器和C语言中的浮点模数函数

[英]Calculator and a floating point modulus function in C

我必须为计算器的'%'(模数)函数编写一个案例。 编译时,它告诉我我没有正确使用fmod函数。 没有大小写'%',其余代码将按预期工作。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>    // Originally missing

#define MAXOP 100
#define NUMBER '0'

int getop(char []);
void push(double);
double pop(void);

main()
{
    int type;
    double op2;
    char s[MAXOP];

    printf("\nEnter numbers below in the following format\nwith a space between each:\n");
    printf("\tnum1 num2 operator\n");
    printf("\tyou may use (+, -, /, *) for the operators\n");

    while((type = getop(s)) != EOF)
    {
        switch(type)
        {
            case NUMBER:
                push(atof(s));
                break;

            case '+':
                push(pop() + pop());
                break;

            case '*':
                push(pop() * pop());
                break;

            case '-':
                op2 = pop();
                push(pop() - op2);
                break;

            case '/':
                op2 = pop();
                if(op2 != 0.0)
                    push(pop() / op2);
                else
                    printf("error: zero divisor\n");
                break;

              case '%':
                op2=pop();
                if(op2 != 0.0)
                    push(fmod(pop(),op2));
                else
                    printf("error: zero divisor");
                break;

            case '\n':
                printf("\t%.8g\n", pop());
                break;
            default:
                printf("error: unknown command %s\n", s);
                break;
        }
    }
    return 0;
}

我查找了fmod函数,但仍然不知道为什么它不起作用。 有什么想法吗?

我添加了math.h标头,现在收到的错误消息是:

/tmp/ccgiVhWI.o: In function `main':
calc.c:(.text+0x14f): undefined reference to `fmod'
collect2: ld returned 1 exit status

您缺少#include <math.h>因此编译器认为fmod()是返回int的函数,或者抱怨它知道fmod()但是您尚未正确声明或声明它。

您最好包含确切的编译器错误消息(除非文件名的路径很长,在这种情况下,截断文件名是一种礼貌)。

您缺少了math.h标头来提供fmod的原型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM