简单的模拟题,理清逻辑就OK.
#include "iostream"
#include "stdio.h"
#include "string"
#include "string.h"
#include "algorithm"
using namespace std;
int main()
{
string input;
int i,numlen,k;
int nweinum = 0;
char num[10000];
char weinum[100];
bool flag1;
bool flag2;
cin>>input;
//input = "+1.23400E+6";
if(input[0] == '+')
flag1 = 1;
else
flag1 = 0;
i = 1;
numlen = 0;
while(input[i]!='E')
{
if(input[i]!='.')
{
num[numlen] = input[i];
numlen++;
}
i++;
}
i++;
if(input[i] == '+')
flag2 = 1;
else
flag2 = 0;
i++;
k=0;
while(input[i]!='\0')
{
weinum[k] = input[i];
i++;
k++;
}
for(i=0;i<k;i++)
{
nweinum = nweinum*10 + (weinum[i]-'0');
}
if(flag1 == 0)
cout<<"-";
if(flag2 == 0)
{
for(i=0;i<nweinum;i++)
{
if(i == 1)
cout<<".";
cout<<"0";
}
for(i=0;i<numlen;i++)
{
cout<<num[i];
}
cout<<endl;
}
else
{
if(nweinum<(numlen-1))
{
for(i=0;i<numlen;i++)
{
if(i == nweinum)
cout<<".";
cout<<num[i];
}
}
else
{
for(i=0;i<numlen;i++)
{
cout<<num[i];
}
for(i=0;i<nweinum-numlen+1;i++)
{
cout<<"0";
}
}
cout<<endl;
}
return 0;
}