C语言求解一元二次方程
2019-03-17 16:38
106 查看
版权声明:转载请注明来源 https://blog.csdn.net/weixin_38679924/article/details/88621589
注意:
注意deta的判定条件。
/*----------------------- 功能:求解一元二次方程 无解时输出NAN 输入示例: 3 1 2.1 1 1 -2 1 1.3 1 1.2 输出示例: -0.73 -1.37 1.00 1.00 NAN ------------------------- Author: Zhang Kaizhou Date: 2019-3-17 16:39:46 ------------------------*/ #include <stdio.h> #include <stdlib.h> #include <math.h> typedef struct node{ float a, b, c; struct node * pnext; } Node; void compute_res(Node * phead); void list_tail_insert(Node ** pphead, Node ** pptail, Node * p); int main(){ Node * phead = NULL, * ptail = NULL; int n, i; scanf("%d", &n); for(i = 0; i < n; i++){ Node * pnew = (Node *)calloc(1, sizeof(Node)); scanf("%f %f %f", &pnew->a, &pnew->b, &pnew->c); list_tail_insert(&phead, &ptail, pnew); } compute_res(phead); return 0; } void compute_res(Node * phead){ float deta, res1, res2; while(phead != NULL){ deta = phead->b * phead->b - 4 * phead->a * phead->c; if(deta < 0){ printf("NAN\n"); } if(deta == 0){ res1 = -phead->b / (2 * phead->a); res2 = -phead->b / (2 * phead->a); printf("%.2f %.2f\n", res1, res2); } if(deta > 0){ res1 = (-phead->b + sqrt(deta)) / (2 * phead->a); res2 = (-phead->b - sqrt(deta)) / (2 * phead->a); printf("%.2f %.2f\n", res1, res2); } phead = phead->pnext; } return; } void list_tail_insert(Node ** pphead, Node ** pptail, Node * p){ if(* pphead == NULL){ * pphead = p; * pptail = p; }else{ (* pptail)->pnext = p; * pptail = p; } return; }
相关文章推荐
- 一元二次方程求解---C语言
- c语言求解一元二次方程
- C语言求解一元二次方程
- 用c语言求解一元二次方程
- 用C求解一元二次方程的解,遇到的问题及解决办法 分类: C语言 2012-03-13 00:26 3094人阅读 评论(0) 收藏
- 运用C语言求解一元二次方程
- C语言实现一元二次方程的求解
- C语言 求解一元二次方程
- C语言简单编程之一元二次方程求解
- c语言求解一元二次方程
- 利用C语言求解一元二次方程组的解
- 用c语言求解一元二次方程
- c语言求解一元二次方程
- C语言求解素数(质数)的优化:打印100-200之间的素数
- #问题求解与编程# 实验1 B 一元二次方程问题
- C语言-解一元二次方程
- 一元二次方程求解
- c语言:一元二次方程的计算
- C语言——求解数独(深搜)
- 迷宫问题的C语言求解