7 23 幣值轉換

2021-08-22 02:44:46 字數 1160 閱讀 3933

輸入乙個整數(位數不超過9位)代表乙個人民幣值(單位為元),請轉換成財務要求的大寫中文格式。如23108元,轉換後變成「貳萬叄仟壹百零捌」元。為了簡化輸出,用小寫英文本母a-j順序代表大寫數字0-9,用s、b、q、w、y分別代表拾、百、仟、萬、億。於是23108元應被轉換輸出為「cwdqbbai」元。

輸入在一行中給出乙個不超過9位的非負整數。

在一行中輸出轉換後的結果。注意「零」的用法必須符合中文習慣。

813227345
iybqdbcscwhqdbesf
6900
gqjb
這個題目的題幹看似簡單,實際上還是蠻複雜的。因為程式的輸出要符合我們的語言習慣,所以就要開始思考我們平時到底是怎樣轉換的呢?(從這裡似乎也看出了人腦的優越性)比如對於零的處理,1001,應該是一千零一,而不是一千零零一,這就啟發我們是不是當零的下一位不為零的時候可以將零輸出呢。1900,是一千九百,而非一千九百零零,似乎也符合這樣的規律。又比如0,要單獨輸出零。還有比較坑(不過好像並沒有這個測試點)的一點是100000001,因為我的程式中一開始是必須要輸輸出萬的,所以要判斷一下萬位到千萬位是否都為零,再決定要不要輸出萬。

解決了零的問題,其他就比較好說了。我的程式是從高位開始處理的,看起來有些冗雜。看到網上有人從低位開始處理,再逆序輸出,這也不失為乙個好的方法。

#includeusing namespace std;

int main();

int n, temp, flag = 0;

int k = 100000000;

cin >> n;

if(n == 0)

//判斷萬位到千萬位是否為零

if(n - (n % 10000) - (n / k) * k == 0) flag = 1;

//找到最高位

while(n > 0)

while(n > 0)

else

if(k == 10000 && !flag) cout << 'w';

else if(k == 100000000) cout << 'y';

n -= temp * k;

k /= 10;

}}

7 23 幣值轉換(20 分)

7 23 幣值轉換 20 分 輸入乙個整數 位數不超過9位 代表乙個人民幣值 單位為元 請轉換成財務要求的大寫中文格式。如23108元,轉換後變成 貳萬叄仟壹百零捌 元。為了簡化輸出,用小寫英文本母a j順序代表大寫數字0 9,用s b q w y分別代表拾 百 仟 萬 億。於是23108元應被轉換...

7 23 幣值轉換 (20 分

輸入乙個整數 位數不超過9位 代表乙個人民幣值 單位為元 請轉換成財務要求的大寫中文格式。如23108元,轉換後變成 貳萬叄仟壹百零捌 元。為了簡化輸出,用小寫英文本母a j順序代表大寫數字0 9,用s b q w y分別代表拾 百 仟 萬 億。於是23108元應被轉換輸出為 cwdqbbai 元。...

7 23 幣值轉換 20 分

輸入乙個整數 位數不超過9位 代表乙個人民幣值 單位為元 請轉換成財務要求的大寫中文格式。如23108元,轉換後變成 貳萬叄仟壹百零捌 元。為了簡化輸出,用小寫英文本母a j順序代表大寫數字0 9,用s b q w y分別代表拾 百 仟 萬 億。於是23108元應被轉換輸出為 cwdqbbai 元。...