
c++中将字符串转化为数字
Here you will get program to convert decimal number to roman numeral in C and C++.
在这里,您将获得将C和C ++中的十进制数字转换为罗马数字的程序。
How it Works?
这个怎么运作?
- Divide the given number in the order 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 to find largest base value. 将给定数字按顺序依次除以1000、900、500、400、100、90、50、40、10、9、5、4、1,以找到最大底值。
- Display the corresponding roman symbol of largest base value obtained by above method in output. 在输出中显示通过上述方法获得的最大基值的相应罗马符号。
- Subtract the given number with largest base value to get new number. 减去具有最大基值的给定数字以获得新数字。
- Repeat above process with the new number until it becomes 0. 对新数字重复上述过程,直到它变为0。

Example:
例:
Decimal Number: 250
小数:250
- Divide it in order 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 to find largest base value. Here 250 is divided by 100. The corresponding roman symbol for 100 is C. 依次将其除以1000、900、500、400、100、90、50、40、10、9、5、4、1,以找到最大底值。 此处250除以100。100对应的罗马符号是C。
- Subtract 250 with 100 (largest base value in previous step) to get new number i.e. 150. 用100(上一步中的最大基值)减去250以得到新的数字,即150。
- Again divide 150 in the order mentioned earlier. It is divided by 100, so corresponding roman symbol is C. 再次按前面提到的顺序除以150。 它除以100,因此对应的罗马符号为C。
- Subtract 150 with 100 to get new number i.e. 50. 用100减去150以得到新的数字,即50。
- Divide 50 again in the order mentioned earlier. 50 is divided by 50, so corresponding roman symbol is L. 按照前面提到的顺序再次除以50。 50除以50,因此对应的罗马符号为L。
- Subtract 50 with 50. The new number obtained is 0 so we stop here. 用50减去50。获得的新数字为0,因此我们在这里停止。
The final roman numeral is CCL.
最终的罗马数字是CCL 。
Below program implements above algorithm.
下面的程序实现上面的算法。
在C中将十进制数转换为罗马数字的程序 (Program to Convert Decimal Number to Roman Numeral in C)
#include<stdio.h>
void decimal2roman(int num){
int decimal[] = {1000,900,500,400,100,90,50,40,10,9,5,4,1}; //base values
char *symbol[] = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; //roman symbols
int i = 0;
while(num){ //repeat process until num is not 0
while(num/decimal[i]){ //first base value that divides num is largest base value
printf("%s",symbol[i]); //print roman symbol equivalent to largest base value
num -= decimal[i]; //subtract largest base value from num
}
i++; //move to next base value to divide num
}
}
int main()
{
printf("250 -> ");
decimal2roman(250);
printf("\n1550 -> ");
decimal2roman(1550);
printf("\n670 -> ");
decimal2roman(670);
return 0;
}
Output
输出量
250 -> CCL 1550 -> MDL 670 -> DCLXX
250-> CCL 1550-> MDL 670-> DCLXX
在C ++中将十进制数转换为罗马数字的程序 (Program to Convert Decimal Number to Roman Numeral in C++)
#include<iostream>
using namespace std;
void decimal2roman(int num){
int decimal[] = {1000,900,500,400,100,90,50,40,10,9,5,4,1}; //base values
char *symbol[] = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; //roman symbols
int i = 0;
while(num){ //repeat process until num is not 0
while(num/decimal[i]){ //first base value that divides num is largest base value
cout<<symbol[i]; //print roman symbol equivalent to largest base value
num -= decimal[i]; //subtract largest base value from num
}
i++; //move to next base value to divide num
}
}
int main()
{
cout<<"250 -> ";
decimal2roman(250);
cout<<"\n1550 -> ";
decimal2roman(1550);
cout<<"\n670 -> ";
decimal2roman(670);
return 0;
}
Comment below if you any queries related to above program.
如果您对以上程序有任何疑问,请在下面评论。
翻译自: https://www.thecrazyprogrammer.com/2017/09/convert-decimal-number-roman-numeral-c-c.html
c++中将字符串转化为数字