关于#c语言#的问题,请各位专家解答!

各位大6为什么运行输入数以后结果不对


#include
#include
double t ;
int main()
{
    double a, b, c;
    scanf_s("%f,%f,%f", &a, &b, &c);
    t =(b * b) - (4 * a * c);
    double geng(double a, double b, double c);
    geng(a, b, c);
    return 0; 
}

double geng(double a, double b, double c)
{
    double x1, x2,x;
    if ( t > 0)
    {
        x1 = ( - b + sqrt(t))/(2 * a);
        x2 = (-b - sqrt(t)) / (2 * a);
        printf("函数的根为x1=%f,x2=%f", x1, x2);
    }
    else if (t == 0)
    {
        x = (-b + sqrt(t)) / (2 * a);
        printf("函数的根为x1=x2=%f", x);
    }
    
    else {
        printf("此函数无解");
    }
    
}

1,geng的这个函数在main函数中调用,因此在main函数之前需要声明;
2.scanf_s修改为scanf,%f对应的是float,需要输入到double类型,需要修改为%lf。
希望能对你有帮助:
对程序做了如下修改:


#include <stdio.h>
#include <math.h>
double t ;
double geng(double a, double b, double c);
int main()
{
    double a, b, c;
    scanf("%lf,%lf,%lf", &a, &b, &c);
    t =(b * b) - (4 * a * c);
    
    geng(a, b, c);
    return 0; 
}

double geng(double a, double b, double c)
{
    double x1, x2,x;
    if ( t > 0)
    {
        x1 = ( -1*b + sqrt(t))/(2 * a);
        x2 = (-1*b - sqrt(t)) / (2 * a);
        printf("函数的根为x1=%f,x2=%f", x1, x2);
    }
    else if (t == 0)
    {
        x = (-1*b + sqrt(t)) / (2 * a);
        printf("函数的根为x1=x2=%f", x);
    }
    
    else {
        printf("此函数无解");
    }
    
}
```c


```


#include<stdio.h>
#include<math.h>
double t ;
int main()
{
    double a, b, c;
    scanf("%lf%lf%lf", &a, &b, &c);
    t =(b * b) - (4 * a * c);
    double geng(double a, double b, double c);
    geng(a, b, c);
    return 0; 
}
double geng(double a, double b, double c)
{
    double x1, x2,x;
    if ( t > 0)
    {
        x1 = ( - b + sqrt(t))/(2 * a);
        x2 = (-b - sqrt(t)) / (2 * a);
        printf("函数的根为x1=%lf,x2=%lf", x1, x2);
    }
    else if (t == 0)
    {
        x = (-b + sqrt(t)) / (2 * a);
        printf("函数的根为x1=x2=%lf", x);
    }
    else {
        printf("此函数无解");
    }
}