一:科学计数位的正负分情况
二:如果不memeset数组为0,输出时会出现其他字符,但可以规避memeset
三:不足0补0
四:判断小数点的位置,s<0的时候小数点的位置一定.
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int main()
{
char opr,ing,fat[10000];
memset(fat,'\0',10000*sizeof(char));
int s;
scanf("%c%c.%[0-9]E%d",&opr,&ing,fat,&s);
if(opr=='-')cout<<'-';
if(s<0)
{
for(int i=0;i<(-s);i++)
printf(i==0?"0.":"0");
cout<<ing<<fat<<endl;
}else if(s==0){
cout<<ing<<'.'<<fat;
}else if(s>0){
int i=0;
cout<<ing;
for(;i<s||fat[i]!='\0';i++)
{
if(i==s)cout<<'.';
if(fat[i]>='0'&&fat[i]<='9')printf("%c",fat[i]);
else cout<<'0';
}
if(fat[i]!='\0')cout<<fat+i;
cout<<endl;
}
}