此计算器应使用一个功能(开关/外壳)。 不幸的是我收到编译错误,我不明白为什么。
#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
编辑:对不起,忘记了错误
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
答案 0 :(得分:0)
更改
ergebnis = calculate(char optr, float opr1, float opr2);
到
ergebnis = calculate(optr,opr1,opr2);
并在float ergebnis;
函数中添加calculate
。同时将return1;
更改为return 1;
。您还需要进行一些检查以避免被零除。您在cout
案例中也使用了printf
而不是default
。您需要包含<stdlib.h>
才能使用exit(0);
答案 1 :(得分:0)
您需要在return和1之间留出空格,如下所示:
返回1;
需要调用没有任何类型信息的方法,如:
ergebnis = calculate(optr,opr1,opr2);
在您的计算器函数中,您使用的是变量ergebnis但没有定义它,所以您应该如下定义:
float ergebnis = 0;
您正在使用c,因此请删除cout并使用printf进行更改。
根据退出函数的错误,您需要包含stdlib.h,如下所示
#include
这应该是整体代码:
#include <stdio.h>
#include <stdlib.h>
float calculate(char optr, float opr1, float opr2) {
float ergebnis = 0;
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 1;
}
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;
}
答案 2 :(得分:0)
这对你有用。你做错了一些事情:
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用英语单词编程! (例如结果,输入,输出等)所以更多的人可以理解你的代码并更快地理解它!
答案 3 :(得分:0)
ergebnis = calculate(char optr, float opr1, float opr2);//Ausgabe
float Calculate(char optr, float opr1, float opr2)
{
switch (optr)
{
case '+': return opr1 + opr2;
case '-': return opr1 - opr2;
case '*': return opr1 * opr2;
case '/': return opr1 / opr2;
case 'q': return 0f;
default: return 0f;
}
}
你的&#34;计算功能只能返回一个浮动&#34;
答案 4 :(得分:0)
如果问题与编译错误有关,请首先提供这些错误的输出。
它可能来自您的代码的这一部分:
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;
}
在使用或返回变量之前,您没有定义变量ergebnis
。请注意,这并不是因为您必须从ergebnis
函数将此函数返回到名为main()
的变量中,您必须使用相同名称将其调用到calculate(...)
函数中。
另外,在调用calculate()
函数