| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
- #include "stdafx.h"
 
 - #include "stdio.h"
 
 - #include "math.h"
 
 - void main()
 
 - {
 
 -         float e=1,n=1,t=1,x; 
 
 -         scanf("%lf",&x);
 
 -         do
 
 -         {
 
 -                 t=t*x/n;
 
 -                 e=e+t;
 
 -                 n++;
 
 -         }while(t>=1e-5);
 
 -         printf("%lf\n",e);
 
 - }
 
 
  复制代码 
 
怎么结果都是1.000000呀??? 
 本帖最后由 行客 于 2019-2-11 17:02 编辑 
这个问题出在scanf("%lf",&x);的"%lf"上。
 
%f是读入一个单精度浮点数,%lf是读入一个双精度浮点数。
 
你定义x的类型为float,所以读入方式应该为 
scanf("%f",&x);
 
或者你把x的类型定义为double
 
修改代为具体如下:
 - #include "stdafx.h"
 
 - #include "stdio.h"
 
 - #include "math.h"
 
 - void main()
 
 - {
 
 -         //float e=1,n=1,t=1,x; 
 
 -         double e=1,n=1,t=1,x; 
 
 -         scanf("%lf",&x);
 
 -         do
 
 -         {
 
 -                 t=t*x/n;
 
 -                 e=e+t;
 
 -                 n++;
 
 -         }while(t>=1e-5);
 
 -         printf("%lf\n",e);
 
 - }
 
  复制代码 
“%lf是默认六位小数的,如果你要保留几位小数,就要加%.nf保留n位小数”,这里指的是输出时的格式符: 
printf("%lf\n",e); 
可以改为 
printf("%.3f"); 
表示输出小数位为3位  
 
 
 |   
 
 
 
 |