Chinaunix

标题: 我这个程序出现的问题,向大家请教 [打印本页]

作者: cos8888    时间: 2008-07-24 16:15
标题: 我这个程序出现的问题,向大家请教
下面这个程序是使用函数调用计算一元二次方程根的程序,发现程序出现的问题是在main中用scanf对全局变量a,b,c传值传不进去,scanf下面加上输出a,b,c的语句,发现a,b,c全为0。我不知道这是为什么,该用什么样的方法解决呢?
#include <stdio.h>
#include <math.h>
double x1,x2,a,b,c,disk;
int main()
{
        void deng(double);
        void dayu(double);
        void xiaoyu(double);
        printf("请输入一元二次方程的三个系数:");
                scanf("%f %f %f",&a,&b,&c);
                disk=b*b-4*a*c;
                if (disk==0)
        {
                   deng(disk);
                   printf("x1=x2=%lf\n",x1);
        }
        else if (disk>0)
        {
           dayu(disk);
           printf("x1=%lf\n",x1);
           printf("x2=%lf\n",x2);
        }
                else
              xiaoyu(disk);
    return 0;
}
void deng(double t)
{
   x1=x2=-b/(2*a);  
}
void dayu(double t)
{
    x1=(-b+sqrt(t))/(2*a);
    x2=(-b-sqrt(t))/(2*a);
}
void xiaoyu(double t)
{
    printf("没有实数解:\n");
}
作者: 5毛党党员    时间: 2008-07-24 16:31
double的话,应该用scanf("%lf")吧

float用%f
作者: cos8888    时间: 2008-07-24 16:37
确实是这样,谢谢




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2