int roman(int year)
{
int i;
printf("The year %d is converted to Roman------->",year);
i=(year/1000);
while(i)
{
printf("m");i--;
}
i=((year/100)%10);
switch(i)
{
case 1:printf("c");
break;
case 2:printf("cc");
break;
case 3:printf("ccc");
break;
case 4:printf("cd");
break;
case 5:printf("d");
break;
case 6:printf("dc");
break;
case 7:printf("dcc");
break;
case 8:printf("dccc");
break;
case 9:printf("cm");
break;
}
i=((year/10)%10);
switch(i)
{
case 1:printf("x");
break;
case 2:printf("xx");
break;
case 3:printf("xxx");
break;
case 4:printf("xl");
break;
case 5:printf("l");
break;
case 6:printf("lx");
break;
case 7:printf("lxx");
break;
case 8:printf("lxxx");
break;
case 9:printf("xc");
break;
}
i=(year%10);
switch(i)
{
case 1:printf("i");
break;
case 2:printf("ii");
break;
case 3:printf("iii");
break;
case 4:printf("iv");
break;
case 5:printf("v");
break;
case 6:printf("vi");
break;
case 7:printf("vii");
break;
case 8:printf("viii");
break;
case 9:printf("ix");
break;
}
printf("\n\n");
}
main()
{
int year;
printf("Enter any year:");
scanf("%d",&year);
roman(year);
}
*************************OR*****************************************
#include
#include
void roman(char *s, unsigned n)
/* Writes the Roman numeral representing n into the buffer s.
Handles up to n = 3999. Since C doesn't have exceptions, n = 0
causes the whole program to exit unsuccessfully. s should be
have room for at least 16 characters, including the trailing
null. */
{if (n == 0)
{puts("Roman numeral for zero requested.");
exit(EXIT_FAILURE);}
#define digit(loop, num, c) \
loop (n >= num) \
{*(s++) = c; \
n -= num;}
#define digits(loop, num, c1, c2) \
loop (n >= num) \
{*(s++) = c1; \
*(s++) = c2; \
n -= num;}
digit ( while, 1000, 'M' )
digits ( if, 900, 'C', 'M' )
digit ( if, 500, 'D' )
digits ( if, 400, 'C', 'D' )
digit ( while, 100, 'C' )
digits ( if, 90, 'X', 'C' )
digit ( if, 50, 'L' )
digits ( if, 40, 'X', 'L' )
digit ( while, 10, 'X' )
digits ( if, 9, 'I', 'X' )
digit ( if, 5, 'V' )
digits ( if, 4, 'I', 'V' )
digit ( while, 1, 'I' )
#undef digit
#undef digits
*s = 0;}
int main(void)
{char buffer[16];
int i;
for ( i = 1 ; i < 1000 ; ++i)
{roman(buffer, i);
printf("%4d: %s\n", i, buffer);}
return 1;}