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