給出一個标準輸入的正數(開頭末尾沒有多餘的0),輸出其科學計數法表示結果。比如:輸入0.000002,輸出2e-6;輸入123.456,輸出1.23456e2;輸入123456,輸出1.23456e2
解題:
首先将其放入到Char數組中,找到loc即為小數點所在位數,和first 即為第一位非零數的位置。然後分兩種情況輸出,大于1和小于1的兩種情況;大于一是10的指數是loc - first-1;
小于一的10的指數是loc - first; 注意要判斷一下是否要輸出“.”,因為當first == 總長-1 不用輸出“.”
#include <cstdio>
#include <string.h>
#define maxn 105
int main()
{
char s[maxn] ;
while ( scanf("%s",s) )
{
int loc = 0 ;
for ( int i = 0 ; i < strlen(s) ; i ++ )
{
if( s[i] == '.')
{
loc = i;
break;
}
}
int first = 0;
for ( int i = 0 ; i < strlen(s) ; i++)
{
if(s[i] != '0'&&s[i] !='.')
{
first = i ;
break;
}
}
if ( loc > first ){
printf("%c",s[first]);
if(first != strlen(s)- 1)
printf(".");
for( int i = first + 1 ; i < loc ; i ++ )
printf("%c",s[i]);
for ( int i = loc + 1 ; i < strlen(s) ; i ++ )
printf("%c",s[i]);
printf("e%d\n",loc - first - 1);
}
else {
printf("%c",s[first]);
if(first != strlen(s)- 1)
printf(".");
for ( int i = first + 1; i < strlen(s) ; i++ )
printf("%c",s[i]);
printf("e%d\n",loc - first);
}
}
return 0 ;
}