C趣味編程百例(31)將阿拉伯數(shù)字轉(zhuǎn)換為羅馬數(shù)字

字號:

95.將阿拉伯數(shù)字轉(zhuǎn)換為羅馬數(shù)字
     將大于0小于1000的阿拉伯數(shù)字轉(zhuǎn)換為羅馬數(shù)字。阿拉伯數(shù)字與羅馬數(shù)字的對應關(guān)系如下:
    *問題分析與算法設計
     題目中給出了阿拉伯數(shù)字與羅馬數(shù)字的對應關(guān)系,題中的數(shù)字轉(zhuǎn)換實際上就是查表翻譯。即將整數(shù)的百、十、個位依次從整數(shù)中分解出來,查找表中相應的行后輸出對應的字符。
    *程序與程序設計
    #include
    void main()
    {
     static char *a[][10]={"","I","II","III","IV","V","VI","VII","VIII","IX"
     "","X","XX","XXX","XL","L","LX","LXX","LXXX","XCC",
     "","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"
     }; /*建立對照表*/
     int n,t,i,m;
     printf("Please enter number:");
     scanf("%d",&n); /*輸入整數(shù)*/
     printf("%d=",n);
     for(m=0,i=1000;m<3;m++,i/=10)
     {
     t=(n%i)/(i/10); /*從高位向低位依次取各位的數(shù)字*/
     printf("%s",a[2-m][t]); /*通過對照表翻譯輸出*/
     }
     printf("\n");
    }
    *運行結(jié)果
     1. Please enter number:863
     863=DCCCLXIII
     2. Please enter number: 256
     256=CCLVI
     3. Please enter number:355
     355=CCCLV
     4. Please enter number:522
     522=DXXII
     5. Please enter number:15
     15=XV
    *思考題
     輸入正整數(shù)N,產(chǎn)生對應的英文數(shù)字符串并輸出,例如:
     1 ONE 2 TWO 3 THREE
     10 TEN 11 ELEVEN
     135 ONE HUNDRED THIRTY FIVE