一、求一元二次方程的解
1.题目
求一元方程ax^2+bx+c=0(a!=0)的实数根,a,b,c通过键盘输入
2.思路
解一元二次方程a不为0的时候有三种情况,一、有两个不相等的实数根;二、有两个相等的实数根;三、有两个不相等的共轭复根。使用=b^2-4ac与0的关系来控制执行条件,再用求根公式求解(需要用求根函数sqrt(),在头文件需要声明一下#include"math.h")
3.代码
#include "stdio.h"
#include "math.h"
int main() {
float a, b, c, d, x1, x2, p, q;
printf("请输入a,b,c:");
scanf("%f%f%f", &a, &b, &c);
d = b * b - 4 * a * c;
if (d > 0) {
x1 = (-b + sqrt(d)) / (2 * a);
x2 = (-b - sqrt(d)) / (2 * a);
printf("方程有两个不相等的实数根,分别为:");
printf("%.2f,%.2f", x1, x2);
} else if (d == 0) {
x1 = (-b + sqrt(d)) / (2 * a);
x2 = x1;
printf("方程有两个相等的实数根,分别为:");
printf("%.2f,%.2f", x1, x2);
} else {
p = -b / (2 * a);
q = sqrt(-d) / (2 * a);
printf("方程有两个不相等的共轭复根,分别为:");
printf("%.2f+%.2fi,%.2f+%.2fi", p, q, p, q);
}
return 0;
}
补充知识点
1.math.h
math.h头文件中声明了常用的一些数学运算(大多是数学公式)
**1.绝对值
**
int n=-1;
abs(n); 求整型的绝对值
2.三角函数
double sin(n);正弦
double cos(n);余弦
double tan(n);正切
**
3.求根**
int 4;
sqrt(n);
2.控制输出格式
%3d:输出所占的格子(向右对齐),比如输出数字,前面就空3-1=2个空格。
代码结果:
#include "stdio.h"
int main() {
int n = 2;
printf("%3d", n);
return 0;
}
执行结果:
%9s: 输出所占的格子(向右对齐),输出字符串,前面空9-字符串的长度个空格
代码:
#include "stdio.h"
int main() {
char str[6] = "china";
printf("%9s", str);
return 0;
}
执行结果:
注意定义字符数组要比字符串的长度大1
%.2f:保留两位小数点
代码:
#include "stdio.h"
int main() {
float n = 2;
printf("%.2f", n);
return 0;
}
执行结果:
%5.3f:占5个位,数值保留三位小数点
代码:
#include "stdio.h"
int main() {
float n;
scanf("%f", &n);
printf("%8.3f", n);
return 0;
}
执行结果:
5保留三位小数为5.000,占5个位,小数点也占一个位,所以前面就空三个位