PAT B 1024 科學計數法 20分

2021-10-02 13:01:39 字數 985 閱讀 2450

科學計數法是科學家用來表示很大或很小的數字的一種方便的方法,其滿足正規表示式[+-][1-9]"."[0-9]+e[+-][0-9]+,即數字的整數部分只有1位,小數部分至少有1位,該數字及其指數部分的正負號即使對正數也必定明確給出。

現以科學計數法的格式給出實數a,請編寫程式按普通數字表示法輸出a,並保證所有有效位都被保留。

輸入格式:

每個輸入包含1個測試用例,即乙個以科學計數法表示的實數a。該數字的儲存長度不超過9999位元組,且其指數的絕對值不超過9999。

輸出格式:

對每個測試用例,在一行中按普通數字表示法輸出a,並保證所有有效位都被保留,包括末尾的0。

輸入樣例1:

+1.23400e-03

輸出樣例1:

0.00123400

輸入樣例2:

-1.2e+10

輸出樣例2:

-12000000000

本題不算難題,但確實是一道煩題,主要就是考察對字串的操作以及對細節的把握,分類討論是否嚴謹等。首先容易想到先將科學計數法的字串分割,得到底數的符號,底數,指數的符號,指數這四部分,具體的討論這位仁兄思路跟我基本一樣,可參考

記錄一下我開始審題時候踩的幾個坑,我看樣例指數的符號就兩位,下意識認為指數就兩位,轉換就錯了,應該是不僅限於兩位的。指數還可能是0,需要分出來討論,但是經檢測題目的測試樣例並沒有在這挖坑。滿足正規表示式 [+-][1-9].[0-9]+e[+-][0-9]+,審題務必仔細,這裡底數的整數部分是[1-9],不取0,例如就不會是+0.12e+03,這就少了一大部分討論

#include#includeusing namespace std;

string symbol1,dishu,symbol2,index;//分別是底數的符號,底數,指數的符號,指數

int changeexp(string index)

return exp;

}void change(int exp)

PAT B1024 科學計數法

1024 科學計數法 20 分 科學計數法是科學家用來表示很大或很小的數字的一種方便的方法,其滿足正規表示式 1 9 0 9 e 0 9 即數字的整數部分只有 1 位,小數部分至少有 1 位,該數字及其指數部分的正負號即使對正數也必定明確給出。現以科學計數法的格式給出實數 a,請編寫程式按普通數字表...

PAT B1024 科學計數法

科學計數法是科學家用來表示很大或很小的數字的一種方便的方法,其滿足正規表示式 1 9 0 9 e 0 9 即數字的整數部分只有 1 位,小數部分至少有 1 位,該數字及其指數部分的正負號即使對正數也必定明確給出。現以科學計數法的格式給出實數 a,請編寫程式按普通數字表示法輸出 a,並保證所有有效位都...

PAT B 1024 科學計數法 (20 分)

科學計數法是科學家用來表示很大或很小的數字的一種方便的方法,其滿足正規表示式 1 9 0 9 e 0 9 即數字的整數部分只有 1 位,小數部分至少有 1 位,該數字及其指數部分的正負號即使對正數也必定明確給出。現以科學計數法的格式給出實數 a,請編寫程式按普通數字表示法輸出 a,並保證所有有效位都...