2016-07-25 13 views
-5

Heres den Code auszuführen:Im einen Rechner in c tun und Fehler Pop-up, wenn ich versuche, es

#include <stdio.h> 
#include <stdlib.h> 

void main() { 
    int op,a,b; 

    printf("***Welcome to the calculatron***\n\n"); 

    do{ 
     printf("choose an operation\n\n"); 
     print(" 1 : Addition\n 2: Substraction\n 3: Multiplication\n 4: Division"); 
     scanf("%d",&op) 
    }while((op != 1 && (op != 2) && (op != 3) && (op != 4)); 

    printf("Type the first number"); 
    scanf("%d",&op) 
    printf("Type the second number"); 
    scanf("%d",&op); 


    switch(op) 
    case 1: 
     printf("You have chosen the Addition\n"); 
     printf("%d + %d = %d",a,b,a+b); 
     break; 

    case 2: 
     printf("You have chosen the Substraction\n"); 
     printf("%d + %d = %d",a,b,a-b); 
     break; 

    case 3: 
     printf("You have chosen the Multiplication\n"); 
     printf("%d + %d = %d",a,b,a*b); 
     break; 

    case 4: 
     printf("You have chosen the Division\n"); 
     printf("%d + %d = %d",a,b,a/b); 
     break; 
    } 

Der Fehler

expected " ; " before " } " token and expected ") " before " ; " token are in lines 13 and 41

Ich weiß nicht, was zu tun ist bitte hilfe.

+0

das umfasst die folgenden sind: #include #include

+0

'void main()' ist eine ungültige Signatur, Aufrufen UB. – Olaf

+2

Zwei der 'scanf' Aufrufe werden ohne abschließende'; 'geschrieben ... –

Antwort

1

Es sollte ein Semikolon nach Scanf sein:

printf("Type the first number"); 
    scanf("%d",&op); 

Auch sind Sie öffnende Klammer des Schaltergehäuses fehlt:

switch(op) 
{ 
} 
0

Sie auch { nach switch verpasst? Überprüfen Sie die Compilerfehler genau. und sehen Sie, ob Sie die Syntax verpasst haben.

0

Sie vermissen die geschweiften Armband { Öffnung nach dem Einschalten (op)

switch(expression) { 
    case constant-expression : 
     statement(s); 
     break; /* optional */ 

    case constant-expression : 
     statement(s); 
     break; /* optional */ 

    default : /* Optional */ 
    statement(s); 
} 
1

Es gibt mehrere Fehler in Ihrem Programm.

Für den Anfang funktioniert Haupt ohne Parameter sollten in C wie

int main(void) 
{ 
    //... 
} 

Sie deklariert werden vergessen in diesem Codeblock mit scanf wie zum Beispiel Semikolons in Aussagen zu setzen

do{ 
    printf("choose an operation\n\n"); 
    print(" 1 : Addition\n 2: Substraction\n 3: Multiplication\n 4: Division"); 
    scanf("%d",&op) 
    // must be scanf("%d, &op); 
}while((op != 1 && (op != 2) && (op != 3) && (op != 4)); 

Die Bedingung in der während kann einfacher geschrieben werden wie

}while (op < 1 || op > 4); 

Es ist besser, die Variable op mit dem Typ unsigned int zu deklarieren, wenn angenommen wird, dass sie keine negativen Werte annehmen soll.

In diesen Aussagen

printf("Type the first number"); 
scanf("%d",&op) 
printf("Type the second number"); 
scanf("%d",&op); 

Sie Werte für die Variablen eingeben müssen a und b anstelle der variablen op.

printf("Type the first number"); 
scanf("%d",&a) 
printf("Type the second number"); 
scanf("%d",&b); 

Die switch-Anweisung wird eine zusammengesetzte Anweisung, die Sie in Klammern in dem Schalter einschließen müssen die Aussagen

switch(op) 
{ 
    //... 
} 

Auch wäre es gut Label default im Fall aufzunehmen, wenn der Benutzer eingeben wird eine ungültige Operation.

auch printf Aussagen im Schalter haben ungültigen Text und Operationen

case 2: 
    printf("You have chosen the Substraction\n"); 
    printf("%d + %d = %d",a,b,a-b); 
    // should be printf("%d - %d = %d",a,b,a-b); 
    break; 

case 3: 
    printf("You have chosen the Multiplication\n"); 
    printf("%d + %d = %d",a,b,a*b); 
    // should be printf("%d * %d = %d",a,b,a * b); 
    break; 

case 4: 
    printf("You have chosen the Division\n"); 
    printf("%d + %d = %d",a,b,a/b); 
    // should be printf("%d/%d = %d",a,b,a/b); 
    break; 

Und es ist besser, Ausgang Ergebnisse der Operationen als Typ mit long long int

Zum Beispiel

printf("You have chosen the Multiplication\n"); 
    printf("%d * %d = %lld", a, b, (long long int)a * b); 
    break; 
0

Sie Überprüfen Sie Ihren Code vor dem Posten. Auch Sie brauchen mehr gewissenhaft sein bei der Codierung gibt es viele Fehler auf Ihrem Beispiel (ich werde nur sprach über die do... while hier, viele Menschen bereits über diese Fehler sprechen:

  • Fehlende f auf dem zweiten printf()
  • Fehlende ; nach scanf()
  • Fehlende Klammer auf Ihrem while Zustand

Das Ergebnis ist:

do { 
    printf("choose an operation\n\n"); 
    printf("1 : Addition\n 2: Substraction\n 3: Multiplication\n 4: Division"); 
    scanf("%d",&op); 
} while ((op != 1) && (op != 2) && (op != 3) && (op != 4)); 

Sie müssen strenger sein mit Ihrem Code, vor allem, wenn das Lernen, sollten Sie darauf achten, nicht schlechte Gewohnheiten in Anspruch nehmen.

+0

danke, aber ich habe immer noch diese Probleme: –

+0

erwarteten Bezeichner oder "(" vor "tun" –

+0

@johndoe müssen Sie zuerst Ihren Code richtig umschreiben, Fehler entdeckt und dann Ihren Beitrag aktualisieren, wenn Sie die Lösung nicht selbst finden Wenn Sie nicht versuchen, Ihren Code ohne Hilfe zu korrigieren, können Sie nicht fortfahren. – naccyde