注意點:
1.數字儲存長度不超過9999位元組,所以儲存字串長度需要大於等於10000。
2.一次性讀入字串,然後分割。pos代表「e」的位置,exp代表指數大小。
int pos=0;
while
(str[pos]
!='e'
) pos++
;
3.對於指數處理分三種情況:
1>. 指數=0,直接輸出字串,注意從下標1開始。
2>. 指數<0,輸出數字肯定以「0.」開頭。然後是exp-1個0,然後輸出原字串,這裡沒有特殊需要注意的。
3>. 指數》0,需要考慮原數字的長度和exp的大小,判斷是否需要輸出"."。因此對於原來數中的"."可以直接忽略了。「.」輸出位置的判斷通過i==exp+2&&pos-3>exp判斷,前者表示該點需要輸出「.」,後者表示數字長度大於exp才需要輸出「.」,需要兩者同時滿足。
最後就是判斷需不需要輸出多餘的0了。
#include
using
namespace std;
intmain()
for(i+=2
;i) exp=exp*10+
(str[i]
-'0');
if(exp==0)
for(i=
1;i)printf
("%c"
,str[i]);
if(str[pos+1]
=='-'
)else
for(i=
0;i3;i++
)printf
("0");
}return0;
}
1024 科學計數法
科學計數法是科學家用來表示很大或很小的數字的一種方便的方法,其滿足正規表示式 1 9 0 9 e 0 9 即數字的整數部分只有1位,小數部分至少有1位,該數字及其指數部分的正負號即使對正數也必定明確給出。現以科學計數法的格式給出實數a,請編寫程式按普通數字表示法輸出a,並保證所有有效位都被保留。輸入...
1024 科學計數法
科學計數法是科學家用來表示很大或很小的數字的一種方便的方法,其滿足正規表示式 1 9 0 9 e 0 9 即數字的整數部分只有1位,小數部分至少有1位,該數字及其指數部分的正負號即使對正數也必定明確給出。現以科學計數法的格式給出實數a,請編寫程式按普通數字表示法輸出a,並保證所有有效位都被保留。輸入...
1024 科學計數法
科學計數法是科學家用來表示很大或很小的數字的一種方便的方法,其滿足正規表示式 1 9 0 9 e 0 9 即數字的整數部分只有1位,小數部分至少有1位,該數字及其指數部分的正負號即使對正數也必定明確給出。現以科學計數法的格式給出實數a,請編寫程式按普通數字表示法輸出a,並保證所有有效位都被保留。輸入...