分析:將輸入的實數a分成幾部分分別存放
根據題意判斷這幾部分並輸出
opt1儲存』+』,opt2儲存』-』;char s[10000] 儲存"1.23400",int num儲存"03"
符號位:opt1為正就不輸出,負就輸出
opt2為負:左移小數點num位
先輸出num個0(格式為0.000…),再輸出s1(不輸出小數點)
考慮num為0的特殊情況
opt2為正:右移小數點num位
如果移動過程中小數點到了最右邊,輸出多餘的0,去除小數點
未到最右邊,右移小數點num位即可
#include
using
namespace std;
intmain()
//輸出符號位 負號 if(
'-'== opt2)
//輸出因為左移而多
for(
int i =
0; i < num; i++
) cout <<
'0';
for(
int i =
0; i < count -
1; i++
)//輸出s,count-1,不輸出e if(
'.'!= s[i]
) cout << s[i];}
if('+'== opt2)if(
'.'!= s[i])}
}if(num > count-3)
for(
int i =
0; i < num-count+
3; i++
)//小數點移動了count-3位,還要加num-(count-3)個0
cout <<
'0';}}
}
反饋:
這個思路可以ac,但是花了我乙個小時,有點久了吧…
寫得我頭暈
反思:debug的時候,for迴圈裡i++寫成了count++,一直沒找出來…有20min左右在找它
以後如果出現無限迴圈的bug,優先檢查for迴圈條件
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,並保證所有有效位都被保留。輸入...