Leetcode c语言-Integer to Roman

Title:

Given an integer, convert it to a roman numeral.

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


这道题目就是将数字转换成罗马数字。比较简单。

Solutions:

char* intToRoman(int num) {
    char* string = (char*)malloc(sizeof(char)*100);
    int index=0;
    char* c[4][10]={
        {"","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"}
    };
    /*这里要注意由于c[][]是字符串二维数组,因此每一个元素都是一个字符串,因此都包含结束符'\0'
      因此不能使用如下代码:
                string[index++] = c[3][num/1000];
                string[index++] = c[2][num/100%10];
                string[index++] = c[1][num/10%10];
                string[index++] = c[0][num%10];
                string[index] = 0;
      会导致第一个string的元素就包含了结束符0,这样最后输出只能输出第一个元素。*/
    strcat(string,c[3][num/1000]);
    strcat(string,c[2][num/100%10]); 
    strcat(string,c[1][num/10%10]);
    strcat(string,c[0][num%10]);
 
    return string;
}


posted on 2017-09-11 21:53  sichenzhao  阅读(123)  评论(0编辑  收藏  举报

导航