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