科学计数法 (20)

科学计数法 (20)

时间限制 1000 ms  内存限制 32768 KB  代码长度限制 100 KB  判断程序 Standard  (来自 小小)

题目描述

科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分

只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出。



现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。

输入描述:

每个输入包含1个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999。


输出描述:

对每个测试用例,在一行中按普通数字表示法输出A,并保证所有有效位都被保留,包括末尾的0。

输入例子:

+1.23400E-03

输出例子:

0.00123400

#include<stdio.h>
#include<string.h>
int main(){
int lenb,l=0,n=0,j=0,fi=0,n1[2]={0};
char b[1000]={'\0'},inter,low[1000]={'\0'},f[3]={'\0'},finger[1000]={'\0'};
scanf("%s",b);
inter=b[1];
lenb=strlen(b);
for(int i=0;i<lenb;i++){
if(b[i]=='+'||b[i]=='-'){
f[j]=b[i];
n1[j]=i;
j++;
if(j==2)break;
}
}
for(int i=3;i<n1[1]-1;l++,i++){
low[l]=b[i];
}
j=0;
for(int i=n1[1]+1;i<lenb;i++){
finger[j]=b[i];
j++;
}
for(int i=0;i<j;i++){
fi=fi*10+(finger[i]-'0');
}
if(f[0]=='-')printf("-");
if(f[1]=='+'){
printf("%c",inter);
if(fi>l){
for(int i=0;i<l;i++){
printf("%c",low[i]);
}
for(int i=0;i<fi-l;i++){ printf("0");
}
}
if(fi<l){
for(int i;i<fi;i++){
printf("%c",low[i]);
}
printf(".");
for(int i=fi;i<l;i++){
printf("%c",low[i]);
}
}
}
if(f[1]=='-'){
printf("0.");
if(l>fi){
printf("%c",inter);
for(int i=0;i<l;i++)
printf("%c",low[i]);
}
if(l<fi){
for(int i=0;i<fi-1;i++){
printf("0");
}
printf("%c",inter);
for(int i=0;i<l;i++){
printf("%c",low[i]);
}
}
}
return 0;

猜你喜欢

转载自blog.csdn.net/yizhixiaoma/article/details/80157322
今日推荐