可以帮我看看哪里错了吗,运行不出来,急

可以帮我看看哪里错了吗,运行不出来,用函数编写程序求出一元二次方程的根,并且不使用全局变量,急

img

你main函数里 也没有调 gen子函数呀,gen子函数 算的也不是你要传的a,b,c,问题有点多

img

代码帮你改了一下:

#include<stdio.h>
#include<math.h>

int main(){
    double * gen(int a, int b, int c);
    
    int a,b,c;

    printf("请输入a,b,c为:");
    scanf("%d%d%d", &a, &b, &c);

    double *p = gen(a, b, c);

    printf("方程的根为:%lf, %lf", *p, *(p + 1));

    return 0;
}

double* gen(int a, int b, int c)
{
    double i = sqrt(b * b - 4 * a * c);
    double x = (-b + i) / (2 * a);
    double y = (-b - i) / (2 * a);

    double z[2] = {x, y};
    double *p = z;
    return p;
}

修改后的代码及注释如下

#include<stdio.h>
#include<math.h>

int main() {
  // 声明函数并调用,得到根的指针
  double* solution(int a, int b, int c);
  int a, b, c;
  printf("请输入一元二次方程系数a,b,c:");
  scanf("%d%d%d", &a, &b, &c);
  double* p = solution(a, b, c);
  printf("方程的根为:%lf, %lf", *p, *(p + 1));
  return 0;
}

// 函数用于求出一元二次方程的根
double* solution(int a, int b, int c) {
  // 求出根
  double i = sqrt(b * b - 4 * a * c);
  double x = (-b + i) / (2 * a);
  double y = (-b - i) / (2 * a);
  double z[2] = {x, y};
  // 将根的指针返回
  double* p = z;
  return p;
}