#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char * intToRoman(int num){
int value[]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
char* roman[]={"M","DM","D","CD","C","LD","L","XL","X","XV","V","IV","I"};
char* result=(char*)malloc(16*sizeof(char));
int i=0;
char* p1;
p1=result;
for(;num>0;){
if(num>=value[i]){
num-=value[i];
strcpy(p1,roman[i]);
p1+=strlen(roman[i]);
}
while(num<value[i]&&i<12)
i++;
}
return result;
}
int main()
{
int num;
scanf("%d",&num);
puts(intToRoman(num));
}
通过从大往小的不断替换,值得学习