C 单功能计算器

C 单功能计算器,c,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; bre

此计算器应使用一个功能(开关/机箱)工作。 不幸的是,我有编译错误,我不明白为什么

#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;
}
#包括
浮点计算(字符optr、浮点opr1、浮点opr2){
开关(optr){
案例“+”:ergebnis=opr1+opr2;中断;
案例'-':ergebnis=opr1-opr2;中断;
案例“*”:ergebnis=opr1*opr2;中断;
案例“/”:ergebnis=opr1/opr2;中断;
案例“q”:退出(0);
默认值:coutChange

并在
计算
函数中添加
float ergebnis;
。同时将
return1;
更改为
return1;
。您还需要进行一些检查以避免被零除。您还使用了
cout
而不是
default
案例中的
printf
。您需要包括
才能使用退出(0);

  • 您需要返回和1之间的空格,如下所示:

    返回1

  • 需要在没有任何参数类型信息的情况下调用方法,如:

    ergebnis=计算(optr,opr1,opr2)

  • 在计算器函数中,您将其用作变量ergebnis,但未对其进行定义,因此应如下所示对其进行定义:

    float ergebnis=0

  • 您使用的是c,所以请删除cout并使用printf对其进行更改

  • 根据退出函数的错误,您需要包括stdlib.h,如下所示

    #包括

这应该是总体代码:

#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;
}
#包括
#包括
浮点计算(字符optr、浮点opr1、浮点opr2){
float ergebnis=0;
开关(optr){
案例“+”:ergebnis=opr1+opr2;中断;
案例'-':ergebnis=opr1-opr2;中断;
案例“*”:ergebnis=opr1*opr2;中断;
案例“/”:ergebnis=opr1/opr2;中断;
案例“q”:退出(0);
默认值:printf(“unbekannetes Rechenzeichen…\n”);返回1;
}
返回ergebnis;
}
内部主(空){
char optr;
浮动opr1、opr2、ergebnis;
//艾因加贝
printf(“\nEingabe运算符(+,-,*,/,q)”;scanf(“%c”,&optr);
printf(“\nEingabe Zahl1”);scanf(“%f”、&opr1);
printf(“\nEingabe Zahl2”);scanf(“%f”、&opr2);
//韦拉尔贝通
ergebnis=calculate(optr,opr1,opr2);//Ausgabe
printf(“\nErgebnis:%f\n”,ergebnis);
返回0;
}

这应该适合你。你做错了几件事:

  • exit()
    在库
    stdlib.h
  • 你的回报太多了
  • 你忘了说英语了
固定代码:

#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;
}
#包括
#包括
浮点计算(字符optr、浮点opr1、浮点opr2){
漂浮麦角;
开关(optr){
案例“+”:ergebnis=opr1+opr2;中断;
案例'-':ergebnis=opr1-opr2;中断;
案例“*”:ergebnis=opr1*opr2;中断;
案例“/”:ergebnis=opr1/opr2;中断;
案例“q”:退出(0);
默认值:printf(“unbekannetes Rechenzeichen…\n”);
}
返回ergebnis;
}
内部主(空){
char optr;
浮动opr1、opr2、ergebnis;
//艾因加贝
printf(“\nEingabe运算符(+,-,*,/,q)”;scanf(“%c”,&optr);
printf(“\nEingabe Zahl1”);scanf(“%f”、&opr1);
printf(“\nEingabe Zahl2”);scanf(“%f”、&opr2);
//韦拉尔贝通
ergebnis=calculate(optr,opr1,opr2);//Ausgabe
printf(“\nErgebnis:%f\n”,ergebnis);
返回0;
}
编辑:

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

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;
        }
    }

“Calculate函数只能返回浮点值”

如果问题与编译错误有关,请首先提供这些错误的输出

它可能来自代码的这一部分:

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;
}
浮点计算(char optr、float opr1、float opr2){
开关(optr){
案例“+”:ergebnis=opr1+opr2;中断;
案例'-':ergebnis=opr1-opr2;中断;
案例“*”:ergebnis=opr1*opr2;中断;
案例“/”:ergebnis=opr1/opr2;中断;
案例“q”:退出(0);

默认情况:你必须改变的第一件事是把错误信息添加到你的问题中。当你添加错误时,试着理解它们,并解释错误信息中你到底不理解什么。注意,代码> CUT//COD>在C中是不起作用的。这是C++的。好答案-不知道为什么它会被否决,但我会很高兴。给它一个放弃投票来取消它!@PaulR谢谢!我很荣幸听到你这样说:D@PaulR添加了一个有利于OP的特别提示!
#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;
}
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;
        }
    }
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;
}