A1073
科学计数法转化为普通表示。
需要想清楚指数的符号以及0和小数点的位置及个数。
1 #include<cstdio> 2 #include<iostream> 3 using namespace std; 4 int main(){ 5 string str; 6 cin>>str; 7 int len=str.length(); 8 if(str[0]=='-') printf("-"); 9 10 int pos=0; 11 while(str[pos]!='E'){ 12 pos++; 13 } 14 int exp=0;//exp存放指数,先不考虑正负 15 for(int i=pos+2;i<len;i++){ 16 exp=exp*10+(str[i]-'0'); 17 } 18 if(exp==0){//判断指数为0的情况 19 for(int i=1;i<pos;i++){ 20 printf("%c",str[i]); 21 } 22 } 23 if(str[pos+1]=='-'){//如果指数为负 24 printf("0."); 25 for(int i=0;i<exp-1;i++){ 26 printf("0"); 27 } 28 printf("%c",str[1]); 29 for(int i=3;i<pos;i++){ 30 printf("%c",str[i]); 31 } 32 } 33 else{//如果指数为正 34 for(int i=1;i<pos;i++){ 35 if(str[i]=='.') continue; 36 printf("%c",str[i]); 37 if(i==exp+2&&pos-3!=exp){ 38 printf("."); 39 } 40 } 41 for(int i=0;i<exp-(pos-3);i++){ 42 printf("0"); 43 } 44 } 45 return 0; 46 }