如何解决“预期”;在C中的'{'token'之前?

时间:2016-04-07 11:43:21

标签: c compilation compiler-errors runtime-compilation

我创建了一个打印罗马相当于一年的程序,但是我的程序显示了一个编译错误。我的节目说:

  

33 4 C:\ Users \ ABC \ Desktop \ c.c [Error] expected';'在'{'令牌

之前

这是我的代码:

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

4 个答案:

答案 0 :(得分:7)

使用else if代替elseif

答案 1 :(得分:3)

您错过了else if中的空格..它不是elseif,而是else if

答案 2 :(得分:2)

如果使用else而不是elseif

,则使用拼写错误
            if(c==0)
            {
                printf("m\n");
            }
            else if(c==1)
            {
                printf("d\n");
                for(l=m-5;l>0;l--)
                    printf("c");
                printf("\n");
            }

答案 3 :(得分:1)

C中没有elseif。您必须写else if(2个单独的单词)。

但不可否认的是,错误信息有些误导,但是再看看它实际上很正常。

说明:

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

编译器假设elseif是以int为参数的某个函数的名称,因此在;的右括号后需要elseif;

这是编译器认为你想要的东西:

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

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

{                    // unconditional {} block
   ...
}

如果编译时启用了所有警告,编译器就会发出警告,例如

  

&lt; elseif&#39;

的隐含函数声明