12. Integer to Roman

来源:互联网 发布:网络出版服务管理 编辑:程序博客网 时间:2024/05/16 10:38

题目:Integer to Roman

Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.

【罗马数字】

1~9: {"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};

10~90: {"X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};

100~900: {"C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};

1000~3000: {"M", "MM", "MMM"}.


代码:

char* intToRoman(int num) {    int i=0;    //申明“”1,2,3,4,5,6,7,8,9 (10个)    //“”,10,20,30,40,50,60,70,80,90 (10个)    //“”,100,200,300,400,500,600,700,800,900(10个)    //“”,1000,2000,3000(4个)    //这些数字对应的罗马字符        char string[34][5]={        "","I","II","III","IV","V","VI","VII","VIII","IX",        "","X","XX","XXX","XL","L","LX","LXX","LXXX","XC",        "","C","CC","CCC","CD","D","DC","DCC","DCCC","CM",        "","M","MM","MMM"    };        //3999的表示为“MMMCMXCIX”    char* ret=(char *)malloc(sizeof(char)*10); //用char ret[10]=""是不行    for(i=0;i<10;i++) //初始化很重要    {        ret[i]='\0';    }        int digit=0;    while(num!=0)    {        //分别得到个十百千位的数        int tmp=num%10;        //保存ret中的值。        char* t=(char *)malloc(sizeof(char)*10);                strcpy(t,ret);        strcpy(ret,string[digit*10+tmp]);        strcat(ret,t);                digit++;        num=num/10;    }        return ret;}








0 0
原创粉丝点击