Sample Input 1
+1.23400E-03
Sample Output 1
0.00123400
Sample Input 2
-1.2E+10
Sample Output 2
-12000000000
思路: 字符串输入,先记录符号位,然后将E之前的数字转化成数字,将E后面的数字转化成幂的数。然后计算。
代码
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
char a[10000];
int len;
scanf("%s",a);
int i=0;
len=strlen(a);
while(a[i]!='E'){
i++;
}
int h=i;
int sum=0;
for(i=h+2;i<len;i++){
sum=(a[i]-'0')+sum*10;
}
if(a[0]=='-'){
printf("-");
}
if(sum==0){
for(i=1;i<h;i++){
printf("%c",a[i]);
}
}
else if(a[h+1]=='-'){
printf("0.");
for(i=1;i<=sum-1;i++){
printf("0");
}
printf("%c",a[1]);
for(i=3;i<h;i++){
printf("%c",a[i]);
}
}
else{
printf("%c",a[1]);
if(sum<h-3){
for(i=3;i<3+sum;i++){
printf("%c",a[i]);
}
printf(".");
for(i=3+sum;i<h;i++){
printf("%c",a[i]);
}
}
else{
for(i=3;i<h;i++){
printf("%c",a[i]);
}
for(i=1;i<=sum-h+3;i++){
printf("0");
}
}
}
return 0;
}
感谢 再吃一个橘子 更正。