C語言程式將羅馬數字轉換為十進位制數字


下面是使用 C 語言將羅馬數字轉換為十進位制數字的演算法:

演算法

步驟 1 - 開始

步驟 2 - 在執行時讀取羅馬數字

步驟 3 - length: = strlen(roman)

步驟 4 - for i = 0 to length-1 do

      步驟 4.1 - switch(roman[i])

          步驟 4.1.1 - case ‘m’

          步驟 4.1.2 - case ‘M’

               步驟 4.1.2.1 - d[i]: =1000

          步驟 4.1.3 - case ‘d’

               步驟 4.1.4 - case ‘D’

          步驟 4.1.4.1 - d[i]: =500

          步驟 4.1.5 - case ‘c’

               步驟 4.1.6 - case ‘C’

                   步驟 4.1.6.1 - d[i]: =100

          步驟 4.1.7 - case ‘l’

          步驟 4.1.8 - case ‘L’

                   步驟 4.1.8.1 - d[i]: =50

          步驟 4.1.9 - case ‘x’

          步驟 4.1.10 - case ‘X’

                   步驟 4.1.10.1 - d[i]: =10

           步驟 4.1.11 - case ‘v’

          步驟 4.1.12 - case ‘V’

                步驟 4.1.12.1 - d[i]: =5

          步驟 4.1.13 - case ‘i’

          步驟 4.1.14 - case ‘I’

                步驟 4.1.14.1 - d[i]: =1

          步驟 5 - for i =0 to length-1 do

                步驟 5.1 - if (i==length-1) or (d[i]>=d[i+1]) then

                      步驟 5.1.1 - deci += d[i]

          步驟 5.2 - else

              步驟 5.2.1 - deci -= d[i]

步驟 6 - 列印羅馬數字的十進位制等價物

步驟 7 - 停止

程式

以下是將**羅馬數字轉換為十進位制數字**的 C 程式:

#include <stdio.h>
#include <conio.h>
main(){
   char roman[30];
   int deci=0;
   int length,i,d[30];
   printf("The Roman equivalent to decimal
");    printf("Decimal:.........Roman
");    printf("%5d............%3c
",1,'I');    printf("%5d............%3c
",5,'V');    printf("%5d............%3c
",10,'X');    printf("%5d............%3c
",50,'L');    printf("%5d............%3c
",100,'C');    printf("%5d............%3c
",500,'D');    printf("%5d............%3c
",1000,'M');    printf("Enter a Roman numeral:");    scanf("%s",roman);    length=strlen(roman);    for(i=0;i<length;i++){       switch(roman[i]){          case 'm':          case 'M': d[i]=1000; break;          case 'd':          case 'D': d[i]= 500; break;          case 'c':          case 'C': d[i]= 100; break;          case 'l':          case 'L': d[i]= 50; break;          case 'x':          case 'X': d[i]= 10; break;;          case 'v':          case 'V': d[i]= 5; break;          case 'i':          case 'I': d[i]= 1;       }    }    for(i=0;i<length;i++){       if(i==length-1 || d[i]>=d[i+1])          deci += d[i];       else          deci -= d[i];    }    printf("The Decimal equivalent of Roman numeral %s is %d", roman, deci); }

輸出

執行上述程式時,會產生以下結果:

The Roman equivalent to decimal
Decimal:.........Roman
1............ I
5............ V
10............ X
50............ L
100............ C
500............ D
1000............ M
Enter a Roman numeral: M
The Decimal equivalent of Roman Numeral M is 1000

更新於: 2021年9月1日

2K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.