首页 > 其他 > 详细

1024 科学计数法 (20分)

时间:2020-02-13 20:12:39      阅读:55      评论:0      收藏:0      [点我收藏+]
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。

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

输入格式:

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

输出格式:

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

输入样例 1:

+1.23400E-03
 

输出样例 1:

0.00123400
 

输入样例 2:

-1.2E+10
 

输出样例 2:

-12000000000

 1 #include <stdio.h>
 2 #include <string.h>
 3 int main(){
 4     int a=0,b=0,e=0;
 5     char s[10005];
 6     
 7     scanf("%s",s);
 8     
 9     //a是负数则输出负号,正数不输出‘+’ 
10     if(s[0]==-)
11         printf("-");    
12     
13     for(int i=0;i<strlen(s);i++){
14         if(s[i]==E){
15             e=i;    //e为‘E‘所在的下标 
16         }                
17     }
18     for(int i=e+2;i<strlen(s);i++){        
19         b = b*10 + (s[i]-0);    //b为指数部分 
20     }
21     //指数为负数的情况
22     if(s[e+1]==-){
23         printf("0.");    //输出整数部分
24         //输出小数点后0的个数
25         for(int i=1;i<=b-1;i++){
26             printf("0");
27         }
28         printf("%c",s[1]);
29         //输出小数点后非零部分 
30         for(int i=3;i<e;i++){            
31             printf("%c",s[i]);
32         }
33     //指数为正数的情况 
34     }else {
35         printf("%c",s[1]);
36         if(b<(e-3)){    //指数够大,不需要小数点 ,需补足后面的零 
37             //先输出正数部分
38             for(int i=3;i<3+b;i++){                            
39                 printf("%c",s[i]);                        
40             }
41             //输出小数点 
42             printf(".");
43             //输出小数部分
44             for(int i=b+3;i<e;i++){                            
45                 printf("%c",s[i]);                    
46             }
47         }else{            //指数不够大,小数点要向右移位 
48             for(int i=3;i<e;i++){                            
49                 printf("%c",s[i]);                            
50             }
51             for(int i=1;i<=b-e+3;i++){
52                 printf("0");
53             }    
54             
55         }
56         
57     }    
58     
59     
60     return 0;
61 } 

 

 

1024 科学计数法 (20分)

原文:https://www.cnblogs.com/geyang/p/12304769.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!