原題:
實現思路: 按照前後符號不同可以分4種情況, 分別如下
input: +1.23400e-03 output: 0.00123400
input: -1.2e-10 output: -0.00000000012 (一共10個0)
input: -1.2e+10 output: -12000000000 (一共9個0)
input: +1.23400e+03 output: 1234.00
首先, 經過我的測試, 明確一點, 並不存在e-0, e+0這種情況.
正如***的**定義的變數一樣, 通過迴圈我們需要拿出: 中間字串, 第1, 第2個符號,
最後的整數.
事實上具體到**實現, 我們只需要按照第2個符號的不同, 分2種情況即可.
首先是第2個符號是負號, 也就是e-x, 這種形式, 結果肯定是形如0.00123400這種形式,
可以看到, 唯一需要確定就是中間有多少個0的問題, 通過分析可知, 中間需要end-1個0,
也就是e後面數的絕對值-1
第2種情況是後面的符號是正號的情況, 這種情況稍微有點複雜, 需要分成小數點在中間和
小數點在末尾(也就是無小數點)兩種情況. 小數點在末尾我們可以通過2次迴圈, 第1次把我們
提取出來的中間字串放進結果陣列, 第2次把0新增到小數點之前. 小數點在中間的情況只需
遍歷我們提取出來的字串, 在適當的位置插入小數點即可.
完整c語言實現:
#include int main ()
mid[mlen] = *ptr;
mlen++;
ptr++;
if (*ptr == 'e')
}// 把end拿到
while (*ptr != '\0')
// 現在搞res結果陣列, 一共分2種情況
if (two == '-')
for (i=0; i= mlen + 1)
temp = rlen;
for (i=temp; i} else }}
}// 列印
for (i=0; iprintf("%c", res[i]);
}return 0;
}
1024 科學計數法 20
時間限制 100 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 hou,qiming 科學計數法是科學家用來表示很大或很小的數字的一種方便的方法,其滿足正規表示式 1 9 0 9 e 0 9 即數字的整數部分只有1位,小數部分至少有1位,該數字及其指數...
1024 科學計數法 20
科學計數法是科學家用來表示很大或很小的數字的一種方便的方法,其滿足正規表示式 1 9 0 9 e 0 9 即數字的整數部分只有1位,小數部分至少有1位,該數字及其指數部分的正負號即使對正數也必定明確給出。現以科學計數法的格式給出實數a,請編寫程式按普通數字表示法輸出a,並保證所有有效位都被保留。輸入...
1024 科學計數法 20
科學計數法是科學家用來表示很大或很小的數字的一種方便的方法,其滿足正規表示式 1 9 0 9 e 0 9 即數字的整數部分只有1位,小數部分至少有1位,該數字及其指數部分的正負號即使對正數也必定明確給出。現以科學計數法的格式給出實數a,請編寫程式按普通數字表示法輸出a,並保證所有有效位都被保留。輸入...