if elseif写一元二次方程

设有一个一元二次方程ax^2+bx+c=0,输入a,b,c的值,判断该一元二次方程是有两个实根,还是一个实根,还是没有实根。若有两个实根则输出两个实根的解,若有一个实根则输出一个实根的解,若没有则不输出。

#include<stdio.h>
#include<math.h>
int main()
{
	int a,b,c,x1,x2,d,g;
	printf("输入a:");
	scanf("%d",&a);
	printf("输入b:");
	scanf("%d",&b);
	printf("输入c:");
	scanf("%d",&c);
	g=b*b-4*a*c;
	d=sqrt(b*b-4*a*c); 
	if(g>0){
	
		x1=(-b+d)/(2*a);
		x2=(-b-d)/(2*a);
		printf("一元二次方程x^%d+%dx+%d存在两个实根:x1=%d,x2=%d",a,b,c,x1,x2);
		}
	else if(g==0)
		{
		x1=(-b)/(2*a);
		x2=x1;
		printf("一元二次方程x^%d+%dx+%d存在一个实根:x=%d",a,b,c,x1);
		}
	else if(g<0)
	
	
		
		printf("一元二次方程x^%d+%dx+%d不存在实根",a,b,c);
	
	return 0;
		
	
	 
	
 } 

当然可以。在C语言中,我们可以使用if-else if结构来求解一元二次方程,具体步骤通常包括以下几步: 1. **获取输入**:首先,从用户那里获取方程的系数(a, b, c)。你可以使用`scanf`或类似函数来读取这些值。 ```c float a, b, c; printf("请输入一元二次方程的系数(a, b, c): "); scanf("%f %f %f", &a, &b, &c); ``` 2. **检查判别式**:计算判别式(Δ = b^2 - 4ac),以决定解的情况(实数、复数、重根)。 ```c float discriminant = b * b - 4 * a * c; ``` 3. **使用if-else if结构处理不同情况**: - 如果判别式大于0,方程有两个不相等的实根。 - 如果判别式等于0,方程有一个重根。 - 如果判别式小于0,方程有两个共轭复数根。 ```c if (discriminant > 0) { float root1 = (-b + sqrt(discriminant)) / (2 * a); float root2 = (-b - sqrt(discriminant)) / (2 * a); printf("方程有两个不同的实根: %.2f 和 %.2f\n", root1, root2); } else if (discriminant == 0) { float root = -b / (2 * a); printf("方程有重根: %.2f\n", root); } else { float realPart = -b / (2 * a); float imaginaryPart = sqrt(-discriminant) / (2 * a); printf("方程有两个复数根: %.2f + %.2fi 和 %.2f - %.2fi\n", realPart, imaginaryPart, realPart, imaginaryPart); } ``` 4. **结束程序**:确保在所有条件分支后都正确结束程序。 完整的示例代码如下: ```c #include <stdio.h> #include <math.h> // 引入sqrt函数 int main() { float a, b, c; printf("请输入一元二次方程的系数(a, b, c): "); scanf("%f %f %f", &a, &b, &c); float discriminant = b * b - 4 * a * c; if (discriminant > 0) { float root1 = (-b + sqrt(discriminant)) / (2 * a); float root2 = (-b - sqrt(discriminant)) / (2 * a); printf("方程有两个不同的实根: %.2f 和 %.2f\n", root1, root2); } else if (discriminant == 0) { float root = -b / (2 * a); printf("方程有重根: %.2f\n", root); } else { float realPart = -b / (2 * a); float imaginaryPart = sqrt(-discriminant) / (2 * a); printf("方程有两个复数根: %.2f + %.2fi 和 %.2f - %.2fi\n", realPart, imaginaryPart, realPart, imaginaryPart); } return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值