#541: 不聽話的switch........


jacky0102 (阿奇)

學校 : 不指定學校
編號 : 2382
來源 : [122.125.89.52]
最後登入時間 :
2008-11-13 13:55:21
a008. 中文大寫數字 -- admin | From: [122.125.80.194] | 發表日期 : 2008-08-29 14:38

請問switch 這樣使用,為什麼在輸出"億"的時候也會輸出"萬"的情況,我的使用方式有錯誤嗎?

請大家指點一下,程式如下:

============================

#include <iostream>
using namespace std;

int main()
{
    int i,a=0;
    int b[10]={0};
    char c[10][3]={"零","壹","貳","參","肆","伍","陸","柒","捌","玖"};                  
    char d[4][3]={"","拾","佰","仟"};
   
    while (cin >>a)
    {
        for(i=0;i>=0;i++)                              //由i得知數值為幾位數
        {
            b[i]=a%10;                                   //取得各個位數的值      
            a=int(a/10);                                  //降一位
            if (a==0)                                      //降至個位後跳出

                break;
                }

        for(;i>=1;i--)                                     //由最高位數遞減輸出 
        {
            if (b[i]||b[i-1])                               //輸出零限制
            {
                cout <<(b[i]||i%4 ? c[b[i]]:"");    //各位數輸出(I%4限制零萬(億)
                cout <<(b[i]? d[(i%4)]:"");         //單位輸出(該位數為零單位不輸出
               
                }
            switch (i)
            {
            case 4:
                      printf("萬");
                      break;
            case 8:
                      printf("億");
                      break;
            
                 }
            }
        if (b[0]!=0)                                        //個位數單獨輸出;
            cout <<c[b[0]];
            cout <<endl;
}
}

 
#543: Re:不聽話的switch........


niewolf (安東尼)

學校 : 元智大學
編號 : 2350
來源 : [210.61.122.2]
最後登入時間 :
2013-03-13 12:07:45
a008. 中文大寫數字 -- admin | From: [140.138.145.93] | 發表日期 : 2008-08-29 15:11

請問switch 這樣使用,為什麼在輸出"億"的時候也會輸出"萬"的情況,我的使用方式有錯誤嗎?

請大家指點一下,程式如下:


    char c[10][3]={"零","壹","貳","參","肆","伍","陸","柒","捌","玖"};                   
    char d[4][3]={"","拾","佰","仟"};

      for(;i>=1;i--)                                     //由最高位數遞減輸出  

        {
            if (b[i]||b[i-1])                               //輸出零限制 
            {
                cout <<(b[i]||i%4 ? c[b[i]]:"");    //各位數輸出(I%4限制零萬(億) 
                cout <<(b[i]? d[(i%4)]:"");         //單位輸出(該位數為零單位不輸出 
                
                }
            switch (i)
            {
            case 4:
                      printf("萬");
                      break;
            case 8:
                      printf("億");
                      break;
             
                 }
            }
        if (b[0]!=0)                                        //個位數單獨輸出; 
            cout <<c[b[0]];
            cout <<endl;
}
}

輸入 100000000 當i=4的時候
switch也會幫你輸出萬這個字

就會變成 壹億萬了

 
#544: Re:不聽話的switch........


jacky0102 (阿奇)

學校 : 不指定學校
編號 : 2382
來源 : [122.125.89.52]
最後登入時間 :
2008-11-13 13:55:21
a008. 中文大寫數字 -- admin | From: [122.125.80.194] | 發表日期 : 2008-08-29 15:17

如果有發現什麼不好的用法或是習慣,請幫忙指正,有什麼建議也請告知,謝謝~


 
#545: Re:不聽話的switch........


jacky0102 (阿奇)

學校 : 不指定學校
編號 : 2382
來源 : [122.125.89.52]
最後登入時間 :
2008-11-13 13:55:21
a008. 中文大寫數字 -- admin | From: [122.125.80.194] | 發表日期 : 2008-08-29 15:22

 輸入 100000000 當i=4的時候
switch也會幫你輸出萬這個字

就會變成 壹億萬了

回安東尼:

對喔! 遞減....... 謝謝你的回應,原來是我太大意了.......orz



 
ZeroJudge Forum