zwj.123 发表于 2022-11-28 16:06:00

请问一下大佬们,为啥输入double类型的数用%f而不是%lf会出错

如果为%f时输出的全是0.在gdb的时候我发现输入的积分下限b=4是显示的是很奇怪的指数,改成%lf就正确了,想请教一
下具体原因捏,谢谢啦{:5_96:}
#include <math.h>
#include <stdio.h>
double g(double);
double count1(double a,double b,int n,double (*f)(double));
double count2(double a,double b,int n,double (*f)(double));
double count3(double a,double b,int n,double (*f)(double));
int main()
{
    int n;
    double a=0,b=0;

    printf("输入积分下限:");
    scanf("%lf",&a);
    printf("输入积分上限:");
    scanf("%lf",&b);
    printf("输入分割区间:");
    scanf("%d",&n);
    double (*f)(double);
    f=g;
    double result=count1(a,b,n,f);
    printf("下限面积是:%f\n",result);
    printf("上限面积是:%f\n",count2(a,b,n,f));
    printf("梯形面积是:%f\n",count3(a,b,n,f));
    return 0;
}

double g(double x)
{

return x*x;
}
double count1(double a,double b,int n,double (*f)(double))
{
    double s=0;
    int i;
    double k=0;
       k=(b-a)/n;
    for(i=0;i<n;i++)
    {
      s=s+f(a+i*k);
   }

    return s*k;
}

jackz007 发表于 2022-11-28 16:15:41

      知道用 %lf 能正确显示,那就用它不就完了。

tommyyu 发表于 2022-11-28 16:23:03

这就是语法规则,%f 用于输入 float 类型,%lf 用于输入 double 类型。

zwj.123 发表于 2022-11-28 18:06:31

tommyyu 发表于 2022-11-28 16:23
这就是语法规则,%f 用于输入 float 类型,%lf 用于输入 double 类型。

谢谢啦{:5_95:}

zwj.123 发表于 2022-11-28 18:06:51

jackz007 发表于 2022-11-28 16:15
知道用 %lf 能正确显示,那就用它不就完了。

好吧哈哈哈哈{:5_96:}
页: [1]
查看完整版本: 请问一下大佬们,为啥输入double类型的数用%f而不是%lf会出错