(unfinished)自己写了一半,后面写不出了,参考书上的也看不懂了,郁闷~
#include<cstdio>
int main()
{
char str[10010];
gets(str);
int len=strlen(str);
if(str[0]=='-') printf("-");
int pos=0;
for(int i=0;i<len;i++)
{
if(str[i]=='E')
{
pos=i;
}
}
int exp=0;
for(int i=pos+2;i<len;i++)
{
exp=exp*10+(str[i]-'0');
}
if(exp==0)
{
for(int i=1;i<pos;i++)
{
printf("%c",str[i]);
}
}
if(str[pos+1]=='-')
{
printf("0.");
for(int i=0;i<exp-1;i++)
{
printf("0");
}
printf("%c",str[1]);
for(int i=3;i<pos;i++)
{
printf("%c",str[i]);
}
}else
{
for(int i=1;i<pos;i++)
{
if(str[i]=='.') continue; ****
printf("%c",str[i]);
if(i==exp+2&&pos-3!=exp) /// 从此处开始不理解,为什么exp+2?
{
printf(".");
}
}
for(int i=0;i<exp-(pos-3);i++) printf("0");
}
return 0;
}