具有一种功能的计算器

标签 c

这个计算器应该使用一个函数(开关/大小写)来工作。 不幸的是,我遇到编译错误,但我不明白为什么。

#include <stdio.h>

float calculate(char optr, float opr1, float opr2) {

switch(optr) {
case '+': ergebnis = opr1+opr2; break;
case '-': ergebnis = opr1-opr2; break;
case '*': ergebnis = opr1*opr2; break;
case '/': ergebnis = opr1/opr2; break;
case 'q': exit(0);
default: cout <<"unbekanntes Rechenzeichen...\n"; return1;
}
return ergebnis;
}


int main(void) {
char optr;
float opr1, opr2, ergebnis;

//Eingabe
printf("\nEingabe Operator(+,-,*,/,q)"); scanf("%c", &optr);
printf("\nEingabe Zahl1"); scanf("%f", &opr1);
printf("\nEingabe Zahl2"); scanf("%f", &opr2);

//Verarbeitung
ergebnis = calculate(char optr, float opr1, float opr2);//Ausgabe
printf("\nErgebnis: %f\n", ergebnis);
return 0;
}

我需要改变什么?

prog.c: In function ‘calculate’:
prog.c:6:15: error: ‘ergebnis’ undeclared (first use in this function)
 case '+': ergebnis = opr1+opr2; break;
           ^
prog.c:6:15: note: each undeclared identifier is reported only once for each function it appears   in
prog.c:10:5: error: implicit declaration of function ‘exit’ [-Werror=implicit-function-declaration]
 case 'q': exit(0);
 ^
prog.c:10:15: error: incompatible implicit declaration of built-in function ‘exit’ [-Werror]
 case 'q': exit(0);
           ^
prog.c:11:14: error: ‘cout’ undeclared (first use in this function)
 default: cout <<"unbekanntes Rechenzeichen...\n"; return1;
          ^
prog.c:11:55: error: ‘return1’ undeclared (first use in this function)
 default: cout <<"unbekanntes Rechenzeichen...\n"; return1;
                                                   ^
prog.c: In function ‘main’:
prog.c:27:26: error: expected expression before ‘char’
 ergebnis = calculate(char optr, float opr1, float opr2);//Ausgabe
                      ^
prog.c:27:26: error: too few arguments to function ‘calculate’
prog.c:3:11: note: declared here
 float calculate(char optr, float opr1, float opr2) {
       ^
prog.c: In function ‘calculate’:
prog.c:14:5: error: control reaches end of non-void function [-Werror=return-type]
 }
 ^
cc1: all warnings being treated as errors

编辑:抱歉,忘记了错误

哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈)哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

最佳答案

这应该适合你。你做错了一些事情:

  • exit() 位于库 stdlib.h
  • 你的返回太多了
  • 您忘记声明ergebnis

固定代码:

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

float calculate(char optr, float opr1, float opr2) {
    float ergebnis;
    switch(optr) {
        case '+': ergebnis = opr1+opr2; break;
        case '-': ergebnis = opr1-opr2; break;
        case '*': ergebnis = opr1*opr2; break;
        case '/': ergebnis = opr1/opr2; break;
        case 'q': exit(0);
        default: printf("unbekanntes Rechenzeichen...\n");
    }
    return ergebnis;
}

int main(void) {
    char optr;
    float opr1, opr2, ergebnis;

    //Eingabe
    printf("\nEingabe Operator(+,-,*,/,q)"); scanf("%c", &optr);
    printf("\nEingabe Zahl1"); scanf("%f", &opr1);
    printf("\nEingabe Zahl2"); scanf("%f", &opr2);

    //Verarbeitung
    ergebnis = calculate(optr,  opr1,  opr2);//Ausgabe
    printf("\nErgebnis: %f\n", ergebnis);
    return 0;
}

编辑:

我还建议您从德语到德语;D 用英语单词进行编程! (例如结果、输入、输出等)让更多的人可以理解您的代码并更快地理解它!

关于具有一种功能的计算器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27127013/

相关文章:

无法通过 malloc

通过分而治之检查所有元素是否相同

c - 无需服务器访问的套接字连接

c - 如何将 SHA1 返回值转换为 ascii

c - 将数组转换为以一个数组作为成员的结构体是否安全?

c - 如何递归地将整数数组的所有项移动到第一个单元格?

c - C 中耗时

c++ - 为内存中的位图声明缓冲区

c++ - C/C++ Linux下的Packet Sniffer

c - 从 C 程序中写入 ip 地址的最简单方法是什么?