本题目要求一元二次方程ax2+bx+c=0的根,结果保留2位小数。(注意:0.00会在gcc下被输出为-0.00,需要做特殊处理,输出正确的0.00。)
输入格式:
输入在一行中给出3个浮点系数a、b、c,中间用空格分开。
输出格式:
根据系数情况,输出不同结果:
1)如果方程有两个不相等的实数根,则每行输出一个根,先大后小;
2)如果方程有两个不相等复数根,则每行按照格式“实部+虚部i”输出一个根,先输出虚部为正的,后输出虚部为负的;
3)如果方程只有一个根,则直接输出此根;
4)如果系数都为0,则输出"Zero Equation";
5)如果a和b为0,c不为0,则输出"Not An Equation"。
输入样例1:
2.1 8.9 3.5
输出样例1:
-0.44
-3.80
输入样例2:
1 2 3
输出样例2:
-1.00+1.41i
-1.00-1.41i
输入样例3:
0 2 4
输出样例3:
-2.00
输入样例4:
0 0 0
输出样例4:
Zero Equation
输入样例5:
0 0 1
输出样例5:
Not An Equation
#include<stdio.h>
#include<math.h>
int main() {
float a, b, c, m, n;
scanf("%f %f %f", &a, &b, &c);
if (a == 0 && b == 0 && c == 0) {
printf("Zero Equation\n");
}
else if (a == 0 && b == 0 && c != 0) {
printf("Not An Equation\n");
}
else if (b * b - 4 * a * c == 0 && a != 0) {
printf("%.2f\n", (-b - sqrt(b * b - 4 * a * c)) / (2 * a));
}
else if (b * b - 4 * a * c > 0 && a != 0) {
m = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
n = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
printf("%.2f\n%.2f\n", m, n);
}
else if (b * b - 4 * a * c < 0 && a != 0) {
double p;
p = b * b - 4 * a * c;
if (b == 0) {
printf("0.00+%.2fi\n0.00-%.2fi\n", sqrt(fabs(-4 * a * c)) / (2.0 * a), sqrt(fabs(-4 * a * c)) / (2.0 * a));
}
else {
printf("%.2f+%.2fi\n%.2f-%.2fi\n", (-b) / (2 * a), sqrt(fabs(p)) / (2.0 * a), (-b) / (2 * a), sqrt(fabs(p)) / (2.0 * a));
}
}
else {
printf("%.2f", (-c) / b);
}
return 0;
}
编译器
C (gcc)
内存
372 / 65536 KB
用时
2 / 400 ms
状态
答案正确
分数
20 / 20
评测时间
2024/03/27 10:09:23
评测详情
测试点 | 提示 | 内存(KB) | 用时(ms) | 结果 | 得分 | |
0 | sample 1 方程有两个实根 | 180 | 2 | 答案正确 | 4 / 4 | |
1 | sample 2 方程有两个复数根 | 364 | 2 | 答案正确 | 4 / 4 | |
2 | sample 3 方程只有一个根 | 280 | 2 | 答案正确 | 3 / 3 | |
3 | sample 4 参数都为零,方程无意义 | 368 | 2 | 答案正确 | 2 / 2 | |
4 | sample 5 a和b为0,c不为0,方程不成立 | 372 | 2 | 答案正确 | 2 / 2 | |
5 | 方程有重实根 | 188 | 1 | 答案正确 | 3 / 3 | |
6 | 方程有纯虚根 | 344 | 2 | 答案正确 | 2 / 2 |
标签:11,输出,方程,样例,sqrt,实验,&&,printf,一元二次方程 From: https://blog.csdn.net/m0_74846654/article/details/137357934