关于c语言编程
发布网友
发布时间:2022-03-01 16:29
我来回答
共5个回答
热心网友
时间:2022-03-01 17:59
兄弟!我觉得你思路有点乱呢。。。
还有就是你代码也有错误。。比如第一个if,你本来的意思是a==b==0的时候就输出错误信息,然后不执行后面的了,但你这个if后没有else,编译器会接着执行后面的if,一直到结束。。
再看第二个if,你的意思是当a==0的时候,执行x=-c/b; print("x=%.6lf",x); 2句话,但你没用括号,if只能作用在x=-c/b;这一句上,而prin("x=%.6lf",x); 是一定会执行的!
还有后面,算法也有问题。。看看我的程序,仔细看看什么地方除了问题,希望对你有帮助
#include "stdio.h"
#include "math.h"
main()
{
int a,b,c;double x,d,x1,x2;
scanf("%d%d%d",&a,&b,&c);
if(a==b)
printf("Input error!\n");
else
{
if(a==0)
{
x=-c/b;
printf("x=%.6lf\n",x);
}
else
{
d=b*b-4*a*c;
if(d>0)
{
printf("x1=%.6lf,x2=%.6lf\n",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));
}
else if(d==0)
{
printf("x=%.6lf\n",(double)-b/2/a);
}
/*else {printf("x1=%.6lf+%.6lfi,x2=%.6lf-%.6lfi\n",x1,x2,x1,x2);}这一句我不知道你为什么会这样写,我觉得此处应该是d<0没有实数跟的意思吧?写错了?*/
else printf("No root !\n");
}
}
}
祝你成功!
热心网友
时间:2022-03-01 19:17
直接用求跟公式啊
x1 = (-b + sqrt(b * b - 4*a*c))/2*a;
x2 = (-b - sqrt(b * b - 4*a*c))/2*a;
可以在输入的时候判断,如果b*b - 4ac < 0则说明方程无解
其他情况可以自己加
热心网友
时间:2022-03-01 20:51
你的错误很多,if和else的使用有点混乱,还有大括号的使用也不熟练……另外求根公式的x1是-b/e,不是-b/c。这是在你的源程序上修改的程序
#include "stdio.h"
#include "math.h"
main()
{
int a,b,c,e;
double x,d,x1,x2;
scanf("%d%d%d",&a,&b,&c);
if(a==0&&b==0&&c==0||(a==0&&b==0&&c!=0))
printf("Input error!\n");
else if(a==0&&b!=0)
{
x=-c/b;
printf("x=%.6lf\n",x);
}
else
{
{
d=b*b-4*a*c;
e=2*a;
x1=-b/e;
if(d>=0)
x2=sqrt(d)/e;
else
x2=sqrt(-d)/e;
}
if(d>0)
printf("x1=%.6lf,x2=%.6lf\n",x1+x2,x1-x2);
else if(d==0)
printf("x1=x2=%.6lf\n",x1);
else
printf("x1=%.6lf+%.6lfi,x2=%.6lf-%.6lfi\n",x1,x2,x1,x2);
}
}
建议兄弟以后把程序写的条理一点,继续加油哈,编程的道路长着呢O(∩_∩)O~
热心网友
时间:2022-03-01 22:43
你写的程序太混乱了,首先就是在执行完第一个if语句还要执行第二个if语句,这就显然错误了~~
另外,在第二个if语句中,求x1时,x1的值只能是整数,应该为
x1=-c*1.0/b;
整型/整型,得到的只能是整型的数据~~
还有就是,最好把这个求根的代码,写到一个函数里~~
热心网友
时间:2022-03-02 00:51
兄弟你的if语句是乱七八糟的
你的第一if语句 就是错误的 if(a==0&&b==0&&c==0)||(a==0&&b==0&&c!=0)
还有就是main函数里不要写太的语句
你的你要算的地方写个函数 就要明朗的多了
你全都写到主函数 看的有点头晕
以上是我个人建议 你可以看也可以问就不要骂