一点一点的判断
判断 E 后面是+ 还是- ,然后 判断 指数的大小 与E前面数字部分的长度大小
最后判断 第一位是+ 还是-
代码:
#include <iostream>
#include<cstring>
using namespace std;
char b1[10000],b2[10000];
int main()
{
string s1;
cin>>s1; //+1.23400E-03
int len=s1.find("E");
string a1=s1.substr(0,len);
string a2=s1.substr(len+1,s1.length()-1);
for (int i=0;i<a1.length() ;i++ )
{
b1[i]=a1.at(i); // +1.23400
}
for (int j=0;j<a2.length() ;j++ )
{
b2[j]=a2.at(j); // -03
}
if (b2[0]=='+')
{
int sum=0;
for (int i=1; i<strlen(b2);i++ )
{
sum+=b2[i]-48;
sum*=10;
}
sum=sum/10;
if (sum>=strlen(b1))
{
char d[10000];
int num=sum-strlen(b1)+3;
for (int i=0;i<num ;i++ )
{
d[i]='0';
}
if (b1[0]=='+')
{
if (b1[1]=='0')
{
for (int i=1;i<strlen(b1) ;i++ )
{
if (b1[i]!='.'&&i!=1)
{
cout<<b1[i];
}
}
for (int j=0; j<num;j++ )
{
cout<<d[j];
}
}
else
{
for (int i=1;i<strlen(b1) ;i++ )
{
if (b1[i]!='.')
{
cout<<b1[i];
}
}
for (int j=0; j<num;j++ )
{
cout<<d[j];
}
}
}
if (b1[0]=='-')
{
if (b1[1]=='0')
{
for (int i=0;i<strlen(b1) ;i++ )
{
if (b1[i]!='.'&&i!=1)
{
cout<<b1[i];
}
}
for (int j=0; j<num;j++ )
{
cout<<d[j];
}
}
else
{
for (int i=0;i<strlen(b1) ;i++ )
{
if (b1[i]!='.')
{
cout<<b1[i];
}
}
for (int j=0; j<num;j++ )
{
cout<<d[j];
}
}
}
}
if (sum<strlen(b1))
{
if (sum+3==strlen(b1))
{
for (int i=2;;i++ )
{
char dian=b1[i];
b1[i]=b1[i+1];
b1[i+1]=dian;
if (b1[2+sum]=='.')
{
break;
}
}
if (b1[1]=='0')
{
for (int j=0;j<strlen(b1) ;j++ )
{
if (b1[j]!='+' && b1[j]!='.' && j!=1)
{
cout<<b1[j];
}
}
}
else
{
for (int j=0;j<strlen(b1) ;j++ )
{
if (b1[j]!='+'&&b1[j]!='.')
{
cout<<b1[j];
}
}
}
}
else if (sum>strlen(b1)-3)
{
char d[10000];
for (int i=0;i<sum-strlen(b1)+3 ;i++ )
{
d[i]='0';
}
for (int i=2;;i++ )
{
char dian=b1[i];
b1[i]=b1[i+1];
b1[i+1]=dian;
if (b1[2+sum]=='.')
{
break;
}
}
if (b1[1]=='0')
{
for (int j=0;j<strlen(b1) ;j++ )
{
if (b1[j]!='+'&&j!=1)
{
cout<<b1[j];
}
}
for (int i=0;i<sum+3-strlen(b1) ;i++ )
{
cout<<d[i];
}
}
else
{
for (int j=0;j<strlen(b1) ;j++ )
{
if (b1[j]!='+')
{
cout<<b1[j];
}
}
for (int i=0;i<sum+3-strlen(b1) ;i++ )
{
cout<<d[i];
}
}
}
else
{
for (int i=2;;i++ )
{
char dian=b1[i];
b1[i]=b1[i+1];
b1[i+1]=dian;
if (b1[2+sum]=='.')
{
break;
}
}
if (b1[1]=='0')
{
for (int j=0;j<strlen(b1) ;j++ )
{
if (b1[j]!='+'&&j!=1)
{
cout<<b1[j];
}
}
}
else
{
for (int j=0;j<strlen(b1) ;j++ )
{
if (b1[j]!='+')
{
cout<<b1[j];
}
}
}
}
}
}
if (b2[0]=='-')
{
int sum=0;
for (int i=1; i<strlen(b2);i++ )
{
sum+=b2[i]-48;
sum*=10;
}
sum=sum/10;
int num=sum+2;
char c[10000];
for (int i=0;i<sum+2 ;i++ )
{
if (i==0)
{
c[0]=b1[0];
}
else if (i==2)c[i]='.';
else c[i]='0';
}
if (c[0]=='+')
{
for (int i=1 ;i<num ;i++ )
{
cout<<c[i];
}
for (int i=1;i<strlen(b1) ;i++ )
{
if (b1[i]!='.')
{
cout<<b1[i];
}
}
}
if (c[0]=='-')
{
for (int i=0 ;i<num ;i++ )
{
cout<<c[i];
}
for (int i=1;i<strlen(b1) ;i++ )
{
if (b1[i]!='.')
{
cout<<b1[i];
}
}
}
}
}