编写一段程序,其功能是由用户输入a,b,c三个实数,根据以下条件判断ax*x+bx+c=0的根的情况:1. 当a等于0时: (1) b不等于0,x1=−cb ; (2) b为0时无解,输出Wrong!2. 当a不等于0时: (1)当b^2-4ac=0,方程有两个相等的实根,x1=x2=−b2a; (2)当b^2-4ac>0,方程有两个不相等的实根,x1=−b+b2−4ac√2a, x2=−b−b2−4ac√2a; (3)当b^2- 4ac<0,方程无实数根;注:1e-6代表足够小的数请改正下面程序的错误。 #include <stdio.h>int main(){ float a,b,c,x1,x2,disc; scanf("%f,%f,%f",a,b,c); if (a=0) { if (b != 0) x1 = -c/b; printf("x1=%f\n",x1); else printf("Wrong!\n"); } else { disc=b*b-4*a*c; if (disc < 0) { printf("without resolution"); } else { x1=(-b)/2*a; printf("x1=x2=%f\n",x1); } if (disc > 0) { x1=-b+sqrt(disc)/2*a; x2=-b-sqrt(disc)/2*a; printf("x1=%f; x2=%f\n",x1,x2); } } return 0;}注:(1)请将修改正确后的完整源程序拷贝粘贴到答题区内。(2)当且仅当错误全部改正,且程序运行结果调试正确,才给加分,部分正确不得分。(3)改错时不能改变程序原有的意图,也不要改变代码的输入输出格式。
时间: 2024-01-16 08:03:25 浏览: 73
修改后的程序如下:
```
#include <stdio.h>
#include <math.h>
int main() {
float a, b, c, x1, x2, disc;
scanf("%f,%f,%f", &a, &b, &c); // 注意需要加上 & 符号
if (fabs(a) < 1e-6) { // 注意需要使用 fabs 函数
if (fabs(b) >= 1e-6) // 注意需要使用 fabs 函数
x1 = -c / b;
else {
printf("Wrong!\n");
return 0; // 需要在此处结束程序
}
printf("x1=%f\n", x1);
} else {
disc = b * b - 4 * a * c;
if (fabs(disc) < 1e-6) { // 注意需要使用 fabs 函数
x1 = -b / (2 * a); // 修正公式
printf("x1=x2=%f\n", x1);
} else if (disc > 1e-6) {
x1 = (-b + sqrt(disc)) / (2 * a); // 修正公式
x2 = (-b - sqrt(disc)) / (2 * a); // 修正公式
printf("x1=%f; x2=%f\n", x1, x2);
} else {
printf("without resolution\n"); // 修正输出
}
}
return 0;
}
```
阅读全文