1024 科学计数法 (20 分)
题目链接:1024 科学计数法 (20 分)
本题考查字符串处理,因此我的输入输出均按照字符串来处理。
解题思路:首先用一个变量存储该数的正负。定义三个整型变量integer,dec和exp分别存储该数的整数部分,小数部分和指数部分。
这样分开处理的好处时统一处理数据的类型,不用考虑小数点。其它的按照题目要求编写即可。注意最后输出的字符串前面要加上数
的正负号。
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 int string_to_int(string str) 5 { 6 stringstream ss; 7 int ans; 8 ss<<str; 9 ss>>ans; 10 return ans; 11 } 12 13 int main() 14 { 15 string s; 16 cin>>s; 17 string integer,dec,str,sign; 18 int exp; 19 sign=s[0]; 20 integer=s.substr(1,1); //截取整数 21 dec=s.substr(3,s.find("E")-3); //截取小数 22 str=s.substr(s.find("E")+1); 23 exp=string_to_int(str); //截取指数并转化为int 24 if(exp<0) 25 { 26 for(;exp!=0;exp++) 27 integer.insert(0,"0"); 28 integer.insert(1,"."); 29 } 30 else 31 { 32 if(exp<dec.length()) 33 dec.insert(exp,"."); 34 else 35 { 36 for(;dec.length()!=exp;) 37 dec+="0"; 38 } 39 } 40 string ans=integer+dec; 41 if(sign!="+") 42 ans.insert(0,sign); 43 cout<<ans<<endl; 44 return 0; 45 }