【发布时间】:2017-02-26 20:31:50
【问题描述】:
将十进制数字转换为罗马数字的简单函数,但是如何从函数中返回此字符串?我尝试了这个解决方案,但我的程序崩溃了。
char roman(int number)
{
char ROMAN[][3] = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };
int NUM[] = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
int i;
char buff[100]="\0";
for(i = 0; number > 0 && number < 3999; i++)
while(number/NUM[i]){
strcat(buff,ROMAN[i]);
number -= NUM[i];
}
return buff;
}
主要我得到了:
printf("\nAfter change: %s",roman(decimal_number));
感谢您的帮助。
【问题讨论】:
-
最简单的做法是在
main中声明缓冲区,并将其传递给函数。所以函数签名是void roman(int number, char buff[100])。 -
顺便说一句,你想
number < 4000
标签: c string function return decimal