lima-city: Webhosting, Domains und Cloud
0 Pluspunkte 0 Minuspunkte

Ich habe diesen Code

#include <stdio.h>

int main() {
    
    char operation;
    int n1, n2;

    printf("Enter an operator (+, -, *, /): ");
    scanf("%c", &operation);
    printf("Enter two operands: ");
    scanf("%d %d",&n1, &n2);

    switch(operation)
    {
        case '+':
            printf("%d + %d = %d",n1, n2, n1+n2);

        case '-':
            printf("%d - %d = %d",n1, n2, n1-n2);

        case '*':
            printf("%d * %d = %d",n1, n2, n1*n2);

        case '/':
            printf("%d / %d = %d",n1, n2, n1/n2);

        default:
            break;
    }

    return 0;
    
}

Aber wenn ich z.B + eingebe wird alles ab + ausgeführt. Wenn ich - als Operand eingebe wird alles ab - ausgeführt also immer alles was danach kommt. Was ist der Fehler?

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Es fehlt der break nach jedem case. Ohne break Anweisung wird das Programm nach einem Treffer in der switch Anweisung weiter die nachfolgenden Fälle ausführen, bis es auf ein break stößt oder die switch-Anweisung endet.

#include <stdio.h>

int main() {
    
    char operation;
    int n1, n2;

    printf("Enter an operator (+, -, *, /): ");
    scanf(" %c", &operation); // Beachten Sie das Leerzeichen vor %c, um Zeilenumbrüche zu überspringen
    printf("Enter two operands: ");
    scanf("%d %d", &n1, &n2);

    switch(operation)
    {
        case '+':
            printf("%d + %d = %d", n1, n2, n1 + n2);
            break; // Hinzugefügt, um den Fall zu beenden

        case '-':
            printf("%d - %d = %d", n1, n2, n1 - n2);
            break; // Hinzugefügt, um den Fall zu beenden

        case '*':
            printf("%d * %d = %d", n1, n2, n1 * n2);
            break; // Hinzugefügt, um den Fall zu beenden

        case '/':
            printf("%d / %d = %d", n1, n2, n1 / n2);
            break; // Hinzugefügt, um den Fall zu beenden

        default:
            printf("Error! operator is not correct");
    }

    return 0;
}
von  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Fragen und Antworten bewerten
  • Themen von Fragen bearbeiten
  • Fragen, Antworten und Kommentare bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft.

2.3k Fragen

2.8k Antworten

261 Kommentare

13 Nutzer