一元二次方程 C语言IF语句嵌套问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一元二次方程 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语句的嵌套上,希望大家帮我看看。谢谢了!

参考技术A 嗯,果然是这里有问题。不过貌似还有另外的一个问题:但我输入0,1,1时,编译器就只输出 “2方程有唯一解x=”,完全没有计算的结果-1,能帮忙解决吗?我会追加分的。谢谢。
------------------------------------分割--------------------------------------------
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语句嵌套问题的主要内容,如果未能解决你的问题,请参考以下文章

C语言中三个if语句的嵌套怎理解

求一些C语言if嵌套语句算法题

在嵌套使用if语句时,C语言规定else总是和之前与其最近的if配对?

关于C语言,多层嵌套的if语句。

带嵌套的Sql语句执行顺序问题

关于C语言中if else的用法,高手来帮下忙