C程序疑惑

来源:百度知道 编辑:UC知道 时间:2024/06/22 07:24:45
vc++6

#include<stdio.h>
main()
{
double s,a,f; /*此用double运行出错,换float输出就正确,为什么?
int n,d=1;
printf("求s=a+aa+aaa+...+a的n次方\n");
printf("请输入a:");
scanf("%f",&a);
s=f=a;
while(d!=0)
{
printf("请输入n:");
scanf("%d",&n);
if(n>0)
d=0;
}
printf("%.2f",a);
for(d=2;d<=n;d++)
{
a*=f;
s+=a;
printf("+%.2f",a);
}
printf("=%.2f\n",s);
}

用scanf输入double类型的值需要使用%lf说明符
%f只能给float类型的变量赋值

只能证明你的电脑配置低,双精度能提供15~16位有效数字,比起float单精度的7位有效数字,当然当数字有效位超过7位时系统会自动切换为双精度同时运算速度降低