c++中将字符串转化为数字_在C和C ++中将十进制数转换为罗马数字

本文介绍了一种在C和C++中将十进制数字转换为罗马数字的方法。通过将数字除以特定的基数并查找相应的罗马符号,程序能够准确地进行转换。示例展示了如何使用此算法将250、1550和670转换为罗马数字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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。
Convert Decimal Number to Roman Numeral in C and C++

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++中将字符串转化为数字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值