数字转为罗马数字
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
这个题在做的时候,返回值一直为空,一直不明白。后来查到,在函数内部申请的数组,返回时为null,是一个局部变量,超出这个函数内部便会失效。解决方法有两个,一个是申请全局变量,本题就是这么解决的,另外一个是申请指针,malloc空间。这样传递的时候就不会返回null。
strcat函数用来拼接两个字符串,注意第一个参数要留出足够多的空间来存储新生成的字符串。
strcpy是用来拷贝字符串的。
#include<string.h>
char str1[30];
char* intToRoman(int num) {
char *thousands[4]={"","M","MM","MMM"};
char *hundreds[10]={"","C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
char *tens[10] = {"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};
char *digits[10] = {"","I","II","III","IV","V","VI","VII","VIII","IX"};
strcpy(str1,thousands[num/1000]);
char str2[4];
strcpy(str2,hundreds[num%1000/100]);
char str3[4];
strcpy(str3,tens[num%100/10]);
char str4[4];
strcpy(str4,digits[num%10]);
strcat(str1,str2);
strcat(str1,str3);
strcat(str1,str4);
return str1;
}