C语言 写一个解方程的程序
二次方程我会用公式法,但是我想用下面这种方法应该怎么改,还有,怎么才能输出负数#include<stdio.h>main(){inta,b,c;floatx;printf...
二次方程我会用公式法,但是我想用下面这种方法应该怎么改,还有,怎么才能输出负数#include<stdio.h>main()
{
int a,b,c;
float x;
printf("a= b= c=\n");
scanf("%d%d%d",&a,&b,&c);
if(a*x*x+b*x+c==0)
printf("%f",x);
getch();
} 展开
{
int a,b,c;
float x;
printf("a= b= c=\n");
scanf("%d%d%d",&a,&b,&c);
if(a*x*x+b*x+c==0)
printf("%f",x);
getch();
} 展开
4个回答
展开全部
如果答案是整数,那就扫描法,就是挨个带入x的值计算,当然你也可以根据你带入的x算出y的值然后通过算法很快定位x的大概值,在附近扫描,效率更高。
如果x是任意值可以是小数,那就用扫描十分法,就是你通过跟上面差不多的方法计算出假如x=5和x=6带入后y出现正负变化了或者y本来下降趋势,后来上升趋势。那说明x的值就加在5和6之间,然后缩小精度从5.0->到6.0再最多带入10次,测出在5.6 5.7 之间 在测5.60->5.70逐个带入。思想就是这样,其实就是逐渐逼近。
如果x是任意值可以是小数,那就用扫描十分法,就是你通过跟上面差不多的方法计算出假如x=5和x=6带入后y出现正负变化了或者y本来下降趋势,后来上升趋势。那说明x的值就加在5和6之间,然后缩小精度从5.0->到6.0再最多带入10次,测出在5.6 5.7 之间 在测5.60->5.70逐个带入。思想就是这样,其实就是逐渐逼近。
2014-03-10
展开全部
#include <stdio.h>
#include <math.h>
double x1,x2,p;
float file1(float a,float b)
{
x1=(-b+sqrt(p))/2*a;
x2=(-b-sqrt(p))/2*a;
return 0;
}
float file2(float a,float b)
{
x1=x2=(-b+sqrt(p))/2*a;
return 0;
}
void main()
{
float a,b,c;
printf("请依次输入方程的三个系数:\n");
scanf("%f%f%f",&a,&b,&c);
p=b*b-4*a*c;
printf("方程是:%.1f*x*x + %.1f*x + %.1f = 0\n",a,b,c);
if(p>0)
{
file1(a,b);
printf("X1=%f\tX2=%f\n",x1,x2);
}
else if(p==0)
{
file2(a,b);
printf("X1=%f\tX2=%f\n",x1,x2);
}
else printf("方程无解");
}
#include <math.h>
double x1,x2,p;
float file1(float a,float b)
{
x1=(-b+sqrt(p))/2*a;
x2=(-b-sqrt(p))/2*a;
return 0;
}
float file2(float a,float b)
{
x1=x2=(-b+sqrt(p))/2*a;
return 0;
}
void main()
{
float a,b,c;
printf("请依次输入方程的三个系数:\n");
scanf("%f%f%f",&a,&b,&c);
p=b*b-4*a*c;
printf("方程是:%.1f*x*x + %.1f*x + %.1f = 0\n",a,b,c);
if(p>0)
{
file1(a,b);
printf("X1=%f\tX2=%f\n",x1,x2);
}
else if(p==0)
{
file2(a,b);
printf("X1=%f\tX2=%f\n",x1,x2);
}
else printf("方程无解");
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include <math.h>
int main()
{
int a,b,c;
float x1,x2;
printf("a= b= c=\n");
scanf("%d%d%d",&a,&b,&c);
if(b*b-4*a*c>=0){
if(b*b-4*a*c==0){
x1=x2=-b*1.0/(2*a);
printf("%f\n",x1);
}else{
x1=(-b+sqrt(b*b-4*a*c))/(2.0*a);
x2=(-b-sqrt(b*b-4*a*c))/(2.0*a);
printf("%f,%f\n",x1,x2);
}
}else{
printf("没有实数解\n");
}
getchar();
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-03-10
展开全部
先判断b*b-4*a*c>0,<0<=0不要用unsigned是负数自然会输出的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询