Как решить "ожидаемый"; перед '{' токеном '' в C?
Я создал программу для печати римского эквивалента года, но моя программа показывает ошибку компиляции. Моя программа говорит:
33 4 C: \ Users \ ABC \ Desktop \ cc [Ошибка] ожидается ';' перед знаком "{"
Вот мой код:
#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 ответа
Вы пропустили место в вашем else if
.. это не elseif
но else if
Это ошибка опечатки использовать иначе, если вместо else if
#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++;
}
}
Здесь нет elseif
в C. Вы должны написать 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
...
}
Если вы скомпилировали со всеми включенными предупреждениями, компилятор выдаст предупреждение, такое как
Неявное объявление функции elseif