2016-04-07 7 views
-3

Ich habe ein Programm erstellt, um das römische Äquivalent eines Jahres zu drucken, aber mein Programm zeigt einen Kompilierungsfehler an. Mein Programm sagt:So lösen Sie "erwartet"; vor '{' token "in C?

33 4 C: \ Benutzer \ ABC \ Desktop \ c.c [Fehler] erwartet ';' vor '{' token

Hier ist mein Code:

#include<stdio.h> 
main() 
{ 
    int a,rom; 
    printf("Enter the year."); 
    scanf("%d",&a); 
    rom=reverse(a); 
    printf("Roman equivalent of %d is:",a); 
} 
reverse(int a) 
{ 
    int i,rev=0,rem; 
    for(i=a;i>0;i=i/10) 
    { 
     rem=i%10; 
     rev=rev*10+rem; 
    } 
    roman(a); 
} 
roman(int a) 
{ 
    int c=0,i,j,k,l,m; 
    for(i=a;i>0;i=i/10) 
    { 
     m=i%10; 
     for(j=1;j>0;j--) 
     { 
      if(c==0) 
      { 
       printf("m\n"); 
      } 
      elseif(c==1) 
      { 
       printf("d\n"); 
       for(l=m-5;l>0;l--) 
        printf("c"); 
       printf("\n"); 
      } 
      elseif(c==2) 
      { 
       printf("l\n"); 
       for(l=m-5;l>0;l--) 
       { 
        printf("x"); 
       } 
       printf("\n"); 
      } 
      elseif(c==3) 
      { 
       printf("v\n"); 
       for(l=m-5;l>0;l--) 
       { 
        printf("i"); 
       } 
       printf("\n"); 
      } 
     } 
     c++; 
    } 
} 
+1

Haben Sie die Fehler gelesen, die der Compiler Ihnen gab? –

+0

ja der GCC-Compiler sagt: c.c: 33: 4: Fehler erwartet ';' vor '{' token { –

+3

Zugegeben, die Fehlermeldung ist ein bisschen irreführend ... – Ctx

Antwort

7

Verwendung else if statt elseif.

+0

Dank ich bin so dumm –

+0

@SnehilGupta passiert uns allen..relax :) –

+0

danke mann ... !! –

3

Sie haben einen Platz in Ihrem else if verpasst .. seine nicht elseif aber else if

2

ist es Tippfehler Fehler Verwendung sonst, wenn anstelle elseif von

#include<stdio.h> 
main() 
{ 
    int a,rom; 
    printf("Enter the year."); 
    scanf("%d",&a); 
    rom=reverse(a); 
    printf("Roman equivalent of %d is:",a); 
} 
reverse(int a) 
{ 
    int i,rev=0,rem; 
    for(i=a;i>0;i=i/10) 
    { 
     rem=i%10; 
     rev=rev*10+rem; 
    } 
    roman(a); 
} 
roman(int a) 
{ 
    int c=0,i,j,k,l,m; 
    for(i=a;i>0;i=i/10) 
    { 
     m=i%10; 
     for(j=1;j>0;j--) 
     { 
      if(c==0) 
      { 
       printf("m\n"); 
      } 
      else if(c==1) 
      { 
       printf("d\n"); 
       for(l=m-5;l>0;l--) 
        printf("c"); 
       printf("\n"); 
      } 
      else if(c==2) 
      { 
       printf("l\n"); 
       for(l=m-5;l>0;l--) 
       { 
        printf("x"); 
       } 
       printf("\n"); 
      } 
      else if(c==3) 
      { 
       printf("v\n"); 
       for(l=m-5;l>0;l--) 
       { 
        printf("i"); 
       } 
       printf("\n"); 
      } 
     } 
     c++; 
    } 
} 
1

Es gibt keine elseif in C ist Sie schreiben müssen else if (2 getrennte Wörter).

Aber freilich ist die Fehlermeldung etwas irreführend, aber auf den zweiten Blick ist es eigentlich ganz normal.

Erläuterung:

if(c==0) 
{ 
    printf("m\n"); 
} 
elseif(c==1) 
{ 
    ... 
} 

Der Compiler setzt elseif ist der Name einer Funktion ein int als Argument nehmen, daher ist es ein ; nach der schließenden Klammer der elseif erwartet;

Dies ist, was der Compiler denkt, dass Sie wollen:

if (...)   
{ 
    printf("m\n");  // normal conditional statement 
} 

elseif(c==1) ;  // call to some function elseif 

{     // unconditional {} block 
    ... 
} 

Wenn Sie mit allen Warnungen aktiviert kompiliert hatte, würde der Compiler eine Warnung wie

Implizite Funktionsdeklaration von ‚elseif ausgestellt '