C语言:if语句 一元二次方程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言:if语句 一元二次方程相关的知识,希望对你有一定的参考价值。
#include<stdio.h>
#include<math.h>
#define FLOATZERO le-6
void main()
float a,b,c,d,disc,x1,x2,realpart,imagpart;
scanf("%f%f%f",&a,&b,&c);
printf("The equation");
if(fabs(a)<=FLOATZERO)
printf("is not a quadratic");
else
disc=b*b-4*a*c;
if(fabs(disc)<=FLOATZERO)
printf("has two equal roots:%f\n",-b/(2*a));
else
if(disc>FLOATZERO)
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("has distinct real:%f\n",-b/(2*a));
else
realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf("has complex roots:\n");
printf("%f+%fi\n",realpart,imagpart);
printf("%f-%fi\n",realpart,imagpart);
请哪位大大从头到尾详细的解说一遍!!! 哪里有错的?
PS:这些是什么意思?
#define FLOATZERO le-6
realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
if(fabs(a)<=FLOATZERO)
if(fabs(disc)<=FLOATZERO)
if(disc>FLOATZERO)
哪位大大帮帮忙啊~~~~!!!
!!!!!!!!!!!!!!!!!!
#include<math.h>
void main()
float a,b,c;
double m;
double x1,x2;
printf("please insert a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
m=b*b-4*a*c;
if (m<0)
printf("the number is wrong,please insert again:");
else
x1=(-b+sqrt(m))/2*a;
x2=(-b-sqrt(m))/2*a;
printf("the answer is : %f,%f",x1,x2);
printf("\n");
参考技术B 1.用“FLOATZERO” 代替“le-6 ”,下面的代码中出现“FLOATZERO”,其值都是“le-6”的意思
2.realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
都是赋值语句。
3.if(fabs(a)<=FLOATZERO)
如果 a 的绝对值小于 FLOATZERO,也即小于 le-6
后面的以此类推....
还有,le-6 你要改为1e-6,因为你写的是“l”,其实是 “1 ”哦,是一个数字,float 改为double吧本回答被提问者采纳 参考技术C #define FLOATZERO le-6:定义宏变量,也就是下面出现FlOATZERO,其值都是1e-6;
realpart=-b/(2*a):求复根的实部;
imagpart=sqrt(-disc)/(2*a);:求复根的虚部;
if(fabs(a)<=FLOATZERO:括号里面的表达式可以理解为a=0;
if(fabs(disc)<=FLOATZERO):括号里面的表达式可以理解为disc=0;
if(disc>FLOATZERO):括号里面的表达式可以理解为disc>0。 参考技术D 这个题目,谭浩强的书上讲解得非常清楚,建议你好好看看教材.
#define FLOATZERO le-6
定义一个符号常量,值为10^(-6)
realpart实部,imagpart虚部
abs绝对值disc是一元二次方程的判别式 第5个回答 2009-04-16 没有什么大问题就是#define FLOATZERO le-6 其中的le-6 中的"l"换成数字1就OK了
一元二次方程 C语言IF语句嵌套问题
老师要求只用IF语句,我写了下面的代码。在VC6.0里编译和链接否都没大问题(只有说数据转换会丢失数据的,懂得请说下这是为什么。)
#include<stdio.h>
#include<math.h>
void main()
float a,b,c,s,x,x1,x2,m,n;
printf("请依次输入系数a,b,c的值(用逗号隔开):\n");
scanf("%f,%f,%f",&a,&b,&c);
if (a==0)
if(b==0)
if(c==0)
printf("方程有无数个解\n");
else
printf("1方程无解\n");
else
if(c==0)
printf("1方程有唯一解0\n");
else
x=-(c/b);
printf("2方程有唯一解x=\n",x);
else
s=b*b-4*a*c;
if(s<0)printf("2方程无解\n");
else
m=-(b/2*a),n=sqrt(s)/2*a;
x1=m+n,x2=m-n;
printf("方程有两个解分别是\n%f\n%f\n",x1,x2);
代码如上,但是但我输入0,0,0时,编译器却输出了“方程有无数个解”和“方程无解”
2个都有,求解????我知道这个算法不好,可我的 目的在if语句的嵌套上,希望大家帮我看看。谢谢了!
------------------------------------分割--------------------------------------------
printf("2方程有唯一解x=%f\n",x); %f漏掉了楼主。。 参考技术B 这里有点问题:
else
s=b*b-4*a*c;
===》这个花括号删掉,加到else之后,s=b*b-4*a*c;之前追问
嗯,果然是这里有问题。不过貌似还有另外的一个问题:但我输入0,1,1时,编译器就只输出 “2方程有唯一解x=”,完全没有计算的结果-1,能帮忙解决吗?我会追加分的。谢谢。
追答哦,你这里改下,printf("2方程有唯一解x=\n",x); ===》printf("2方程有唯一解x= %d \n",x);
追问应该是%f。非常感谢你。
本回答被提问者采纳以上是关于C语言:if语句 一元二次方程的主要内容,如果未能解决你的问题,请参考以下文章