基礎程式設計題目集 7 23 幣值轉換 20分

2021-10-05 14:35:00 字數 2229 閱讀 8412

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

輸入格式:

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

輸出格式:

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

輸入樣例1:

813227345

輸出樣例1:

iybqdbcscwhqdbesf

輸入樣例2:

6900

輸出樣例2:

g**b

位數 2 3 4 5 6 7 8 9

單位 十位 百位 千位 萬位 十 百 千 億

5~8位數在(十百千)的後面加了萬 這個單位,

此外, 需注意這些規則:

int temp = n;

while

(temp)

⑤如何判斷0是否連續出現?

⑥如何使得中間的連續0唯讀一次 0?

if (z_c == 0) 才輸出,保證輸出的前提是上一次訪問的位的值不為0

本人的修改部分

(3)由於pow()函式引數和返回值為浮點型,執行時發現有精度錯誤,比如pow(10,w),w=2 時返回99, 故採用四捨五入接收其返回的資料

j =

(int)

(pow(10

, w -1)

+0.5

);

(4)將對非0一位數的判斷提前,將對n為0值的判斷放在在n值更新後.

經本人修改後的**

#include 

#include

int main()

;// 位數 2 3 4 5 6 7 8 9

// 單位 十位 百位 千位 萬位 十 百 千 億

char *st[8]

=;// 數字的位數

int w =0;

//10的整數次方

int j=0;

int temp = n;

while

(temp)

// pow 損失精度,四捨五入處理

j =(int)

(pow(10

, w -1)

+0.5);

//輸入的是個位數 0

if(n ==0)

// 對於 非零的情況

// 當前讀到的數字位

int h=0;

// 記錄0是否連續

int zerocontinue =0;

while

(n) h = n / j;

//當前位不為0

if(h)

else

//存在連續為0且連續0的中間不包含萬位

else}}

//去掉當前位的剩餘位

n = n % j;

if(n ==0)

j /=10;

w--;}

return0;

}

參考的**

#include 

#include

int main()

;// char *st[8]=;

char *st[8]

=;int w =0;

int j;

int temp = n;

while

(temp)

j =pow(

10, w -1)

; int h;

int z_c =0;

// 記錄0是否連續

if(n ==0)

while

(n)else

else}}

n = n % j;

j /=10;

w--;if

(j ==1)

printf

("%s"

, sv[n]);

break;}

}return0;

}

(1)pow()函式的浮點數精度問題的原因和解決

(2)獲取數值的位數,獲取每一位的數值

(3)對於連續0 的判斷

PTA基礎程式設計題目 7 23 幣值轉換 C語言

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

pta 基礎程式設計題 7 23幣值轉換

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

PAT基礎級 7 23 幣值轉換

需要注意的幾個點 末尾的0不讀 中間有多個0時,唯讀乙個0 如果數字大於萬,萬位一定要讀 我感覺我的 存在一點問題,但是竟然ak了 神奇 去查了查,網上有的說100000001的大寫是一億萬零一!就是我的 結果,也是我覺得有問題的地方 是的,你沒看錯!不是一億零一,也不是一億零零一 但也有的說一億零...