可以帮我看看哪里错了吗,运行不出来,用函数编写程序求出一元二次方程的根,并且不使用全局变量,急
你main函数里 也没有调 gen子函数呀,gen子函数 算的也不是你要传的a,b,c,问题有点多
代码帮你改了一下:
#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;
}