写这个题的时候头昏脑胀,思路很不清晰,写的代码很复杂,效果还不好,参考了下面的程序。整个思路比较不错,分享一下。
链接如下:http://www.ithao123.cn/content-10177836.html
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string s;
cin>>s;
int index;
index = s.find('E');
string num = s.substr(1,index-1);
string e = s.substr(index+1);
int exp;
stringstream ss;
ss<<e;
ss>>exp;
if( exp>= 0)
{
if(s[0] == '-')
cout << '-';
++exp;
bool flag = true;
for(int i=0;i<num.length();++i)
{
if( num[i] == '0' && flag)
{
--exp;
}
else if(num[i] != '.')
{
flag = false;
cout<<num[i];
--exp;
}
if (exp == 0 && i != num.length()-1)
cout<<'.';
}
while(exp >= 0 && exp--)
{
cout<<'0';
}
}
else
{
if(s[0] == '-')
cout<<'-';
cout << "0.";
++exp;
while(exp++)
{
cout<<'0';
}
for(int i=0;i<num.length();++i)
{
if(num[i] != '.')
cout<<num[i];
}
}
return 0;
}