题目
给出一个标准输入的正数(开头末尾没有多余的 0),输出其科学计数法表示结果。
比如:输入 0.000002,输出 2e-6;输入 123.456,输出 1.23456e2;输入 123456,输出
1.23456e2主要是 分为 0.0002 22323.12 20000 这几种类型
之后是计算一下e
最后要控制0的shu
代码
#define M 100
int main() {
char str[M];
char c;
int p_pre = 0;
int p_tail = 0;
int p = 0;
int i=0;
c = (char)getchar();
// input nummber and record the position of '.'
while(c!='\n'){
str[i++] = c;
if(c == '.' && p == 0){
p = i-1;
}
c = (char)getchar();
}
int n=0;
int fir = 0; // the first number which is not zero
int fflag = 0; // caculate e only once
int pflag = 0; // print '.' only once
int e = 0;
while(n<i){
if(str[n] != '0' && str[n]!='.'){
//caculate e
if(fflag == 0){ // only once
fflag = 1;
fir = n;
if( p == 0){ // 0 present it is a integer
e = i-1;
}
else if(fir>p){ // present the first number is 0 for example 0.02
e = p-fir;
}
else if(fir<p-1){ // for example 23.23
e = p-fir-1;
}
}
printf("%c",str[n]);
if(pflag==0 && n+1<i){ //print '.' only once
printf(".");
pflag=1;
}
}
else if( str[n] == '0' && str[0]!='0' && p!=0){ // print 0 for example 20.002 2000.23
printf("%c",str[n]);
}
n++;
}
if(e!=0) {
printf("e%d", e);
}
return 0;
}