這題挺麻煩的,各種小數點和正負號搞的亂死,看的時候要看仔細了,我特意用1.1~2.3標出了6種情況,實際上只分了3種,前3種情況理解了,後面的就是對應地方都-1的問題
#include
#include
intmain()
;//輸入
char b[
20000]=
;//輸出
int d=
0,i=
2,x=
0,n=
0,j=0;
scanf
("%s"
,a);
//printf("%s\n",a); 檢驗是否正確接收字串
while
( a[n]
!='e'
) n++
;//結束後,a[n]=='e'
while
( a[n+x]
) x++
; x = x-2;
//結束後,指數部分有x位數
while
(x)if
(a[n+1]
=='-'
) d = d *(-
1);//d是小數點要左或右移動多少位
//printf("%d\n",d); 檢驗指數部分d是否正確
i=0;if
( a[0]
==45
)//1.負數,負數與正數只有第乙個符號有無的區別,內容相似
if( a[
3+i]
!=69
)//要加'.'
}while
( d )
//要補'0'
}else
if(d==0)
- 0情況
while
(a[i]
!=69
)else
- -情況
b[3+i]
= a[1]
; i++
;while
( a[
3+j]
!=69)}
}else
//2.正數
if( a[
3+i]
!=69)}
while
( d )
}else
if(d==0)
+ 0情況
while
(a[i+1]
!=69
)else
+ -情況
b[2+i]
= a[1]
; i++
;while
( a[
3+j]
!=69)}
}printf
("%s\n"
,b);
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,並保證所有有效位都被保留。輸入...