I made up this problem for myself. This code prints integer numbers up to n in Romans. The code works fine. Is there any way to make it shorter and more efficient? Also, point out any mistakes made.
#include <stdio.h>
void roman(int num)
{
printf("%d = ", num);
while(num)
{
if(num>=1000)
{
num=num-1000;
printf("M");
continue;
}
if(num>=900)
{
num=num-900;
printf("CM");
continue;
}
if(num>=500)
{
num=num-500;
printf("D");
continue;
}
if(num>=400)
{
num=num-400;
printf("CD");
continue;
}
if(num>=100)
{
num=num-100;
printf("C");
continue;
}
if(num>=90)
{
num=num-90;
printf("XC");
continue;
}
if(num>=50)
{
num=num-50;
printf("L");
continue;
}
if(num>=40)
{
num=num-40;
printf("XL");
continue;
}
if(num>=10)
{
num=num-10;
printf("X");
continue;
}
if(num>=9)
{
num=num-9;
printf("IX");
continue;
}
if(num>=5)
{
num=num-5;
printf("V");
continue;
}
if(num>=4)
{
num=num-4;
printf("IV");
continue;
}
if(num>=1)
{
num=num-1;
printf("I");
continue;
}
}
printf("\n");
}
void main()
{
int scan;
printf("Print Roman numbers till: ");
scanf("%d", &scan);
for(int i=1;i<=scan;i++)
roman(i);
}
The code works fine. Is there any way to make it shorter and more efficient? Point out mistakes I've made, if any.