生活随笔
收集整理的這篇文章主要介紹了
科学计数法 (C语言)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
對于非常大或者非常小的數據,我們通常用科學記數法來表示。例如在科技文獻和電腦中經常遇到的 2.3×106 (計算機中的科學記數法表示為:2.3E6),或者 9.18×10-5 (科學記樹法表示:9.18E-5)這種類型的數據。
輸入:
??? 用科學記數法表示的數據。即為符合C語言表示的科學記數法表示。
輸出:
??? 該數據的雙精度表示
說明:
??? 輸入數據的精度不高于小數點后50位。
??? 輸入數據時,在實數和冪之間有空格進行分隔,空格個數不定。
??? 結果保留到小數點后8位,如不足8位用0補足,超過8位則截斷,不進行四舍五入的處理。
#include <stdio.h>
#include<math.h>
int main(){int arr[100];int flen=0,blen=0,i=0,j=0,k=1,ci=0,e=1;char cc;for(i=0;i<100;i++){//initialize arr[i]=0;}i=0;do{//輸入小數點前的部分cc=getchar();ci=cc;if((ci>=48)&&(ci<=57)){//判斷為數字則存入數組arr[i]=ci-48;i++;flen++;//記錄整數的位數}if(cc=='.'){//檢測到小數點break; }if(cc==' '){//檢測到空格 break;}} while(1);i=flen;if('.'==cc){ //上個循環于小數點處結束,輸入小數部分do{cc=getchar();ci=cc;if((ci>=48)&&(ci<=57)){//判斷為數字,輸入arr[i++]=ci-48;blen++;//記錄小數的位數}if(cc==' '){//檢測到空格,小數輸入結束break;}} while(1);}//end numbers inputdo{cc=getchar();if((cc='e')||(cc='E')){scanf(" %d",&e);break;}}while(1);//Nothing wrong above//printf("%d\n%d\n%d\n",flen,blen,e);if(e>0){for(j=0;j<flen+e;j++){printf("%d",arr[j]);}printf(".");for(k=flen+e;k<flen+e+8;k++){printf("%d",arr[k]);}printf("\n");return 0;}if(e==0){for(j=0;j<flen;j++){printf("%d",arr[j]);}printf(".");for(k=flen;k<flen+8;k++){printf("%d",arr[k]);}printf("\n");return 0;}if(e<0){//power is nagetivee=0-e;if(e>=flen){//左移超出整數位數printf("0.");if((e-flen)<=8){for(j=1;j<=e-flen;j++){printf("0");}}else{for(j=1;j<=8;j++){printf("0");}}for(k=0;k<=(7-e+flen);k++){printf("%d",arr[k]);}printf("\n");}else{//左移不超過整數位數for(i=0;i<(flen-e);i++){printf("%d",arr[i]);}printf(".");for(i=flen-e;i<(flen-e+8);i++){printf("%d",arr[i]);}printf("\n"); return 0;}}}
總結
以上是生活随笔為你收集整理的科学计数法 (C语言)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。