请高手帮我看看我这个c语言程序哪出问题了,谢谢,我是初学者。

这个是求方程的2个跟 我想用if条件语句,分了3种情况,但是运行不出结果

#include<stdio.h>
#include<math.h>
void main()
{
double a,b,c,dise,x1,x2,p,q;
printf("请输入a,b,c\n");
scanf("a=%lf,b=%lf,c=%lf",&a,&b,&c);
dise=b*b-4*a*c;
if(dise=b*b-4*a*c>0)
{
p=-b/(2*a);
q=sqrt(dise)/(2*a);
x1=p+q;x2=p-q;
printf("方程有存在2个不同的解x1=%5.2f\nx2=%5.2f\n",x1,x2);

}
if(dise=b*b-4*a*c=0)
{
p=-b/(2*a);
q=sqrt(dise)/(2*a);
x1=p+q;x2=p-q;
printf("方程有存在2个相同的解x1=x2=%5.2f\n",x1);
}
if(dise<0)
printf("方程不存在解");
}

首先,判断是否相等要用==,你第二个if里写错了。
然后,你的数字类型都是double的,直接判断等于0是得不到正确答案的,要有一个误差区。比如dise>-0.0000001&&dise<0.0000001就是dise为0。当然我只是举例,不一定正确。你再查一下别的资料
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-28
#include<stdio.h>
#include<math.h>
void main()
{
double a,b,c,dise,x1,x2,p,q;
printf("请输入a,b,c\n");
scanf("a=%lf,b=%lf,c=%lf",&a,&b,&c);
dise=b*b-4*a*c;
if(dise>0) //已经赋过值了,就直接用
{
p=-b/(2*a);
q=sqrt(dise)/(2*a);
x1=p+q;x2=p-q;
printf("方程有存在2个不同的解x1=%5.2f\nx2=%5.2f\n",x1,x2);

}
if(dise == 0 ) //这个错了吧
{
p=-b/(2*a);
q=sqrt(dise)/(2*a);
x1=p+q;x2=p-q;
printf("方程有存在2个相同的解x1=x2=%5.2f\n",x1);
}
if(dise<0)
printf("方程不存在解");
}
第2个回答  2011-03-28
#include<stdio.h>
#include<math.h>
void main()
{
double a,b,c,dise,x1,x2,p,q;
printf("请输入a,b,c\n");
scanf("a=%lf,b=%lf,c=%lf",&a,&b,&c);
dise=b*b-4*a*c;
if(dise=b*b-4*a*c>0)
{
p=-b/(2*a);
q=sqrt(dise)/(2*a);
x1=p+q;x2=p-q;
printf("方程有存在2个不同的解x1=%5.2f\nx2=%5.2f\n",x1,x2);

}
else if(dise=b*b-4*a*c==0)
{
p=-b/(2*a);
q=sqrt(dise)/(2*a);
x1=p+q;x2=p-q;
printf("方程有存在2个相同的解x1=x2=%5.2f\n",x1);
}
else if(dise<0)
printf("方程不存在解");
}
再试试~~~
第3个回答  2011-03-29
if(dise=b*b-4*a*c>0)
!!!!!!!!!!!!!!!这个不是赋值吗?
如果b*b-4*a*c>0 成立
然后就有 dise=1
所以dise就直接变成了1
你还不如写成if(dise>0)
if(dise=b*b-4*a*c=0)
写成if(dise==0)
第4个回答  2011-03-28
dise已经赋过值在了,if条件里面直接比较dise的值就行了

C语言菜鸟,请教各位高手下面的程序哪里出了问题?
你的思路太乱了, 只能在你的程序上改,include<stdio.h> void main(){ long int a;int p,s;int b1,b2,b3,b4,b5;scanf("%ld",&a);if(a>=1000000){ p = (a-1000000)*0.01;a = 999999;} p=0;s=a\/100000;switch(s){ case 9:case 8:case 7:case 6:p += (a-600000)*0...

关于C语言编写程序的一个疑问 高手帮忙看看我的程序哪错了
看了你的代码觉得,你在C语言的语法规则上还有待提高啊,在此举出你所给出的代码的若干错误。首先,你的代码不完整。第9、11、13行要定义三个100行的二维字符数组,如果仅仅是类似char adj[100][12]={"开心的"}的定义;这样adj[1]到adj[99]这99个词都会是空值(ASCII码为0),若用printf()函...

一段C语言代码不知道错哪儿了,请高手指教
编译错误,一般是语法有问题,程序在编译是就产生错误不能编译成目标文件,比如包名或内部类名写错误等等。运行错误,就是程序通过编译,却在运行时出错,一般是逻辑上的问题,比如数组越界,空指针等等。比较常见的运行时错误是在做除法运算时所产生的“除数为零”错误。如下列 VB 代码:Dim a As Doubl...

C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因..
第三项结果是一个指针,也就是一个地址。它就是a[2][1]的地址,由于scanf要求是地址,所以它是正确的。

C语言简单小代码看不出来哪有问题,就是无法运行,各位大神帮我看看.
int c,grade;char E='E',D='D',C='C',B='B',A='A';\/\/此处修改过 scanf("%d",&grade);c \/=10;switch(c)\/\/此处虽然没有错误 但是我觉得 需要在末尾处加上default 为了程序的完整性 \/\/ 同时也防止了输入错误时程序的崩溃 { case 0:case 1:case 2:case 3:case 4:case 5:pr...

请教C语言高手,请问这个C语言哪里出现了错误?? 帮手改正一下 谢谢
75,两个整型相除还是为整型。可以改为3.0\/4;(不过体积公式是三分之四吧不是四分之三吧,这个我不管我只给你纠正程序错误;)(2)语句末尾多了一个括号;2.printf(“area=%f\\n”,area);中area没有定义,应该为printf(“area=%f\\n”,size);3.system("pause");后面少了个分号;...

帮我看看这个c语言程序怎么错了 #include<stdio.h> void main(void...
include<stdio.h> void main(void){ int fun(int n); \/\/加上这一句就行了。int a,b;printf("输入一个正整数:");scanf("%d",&a);b=fun(a);if(b==0)printf("%d不是素数\\n",a);else printf("%d是素数\\n",a);} int fun(int n){ register int i;if(n<=1) return 0;...

关于C语言的,高手帮我看看这段程序哪错了,为什么用tuberC2.0运行说for...
VALUE是啥?然后看到下面,哦,是个数组,但要告诉你的是预定义是在编译的时候才会知道你的VALUE是什么东东,现在它不知道你的VALUE是啥(因此value[0]是错的),况且你的VALUE还在下面,不过就算在上面也是不能这样写,所以正确的写法是 define NUM_RATES (sizeof(value)\/sizeof(int))...

c语言高手帮忙下,看看下面这个程序哪里出错
如此明显的问题,阁下的老师竟然没看出来??首先。。。y=3x-1;和y=2x-1;这里,明显是错误的,c语言中的变量不能以数字开头的,3x,2x明显不是变量,应该是想做乘法运算吧,如果是乘法运算的话应该有“*”。其次,else是自动跟上一个没配对掉的if组合,这样的话if(x>=10)y=3x-1;printf("=...

C语言!帮忙看下我写的这个程序错在哪里了,谢谢!用的是二次插值法.
void main(){ float *area(float a1,float p,float a[3]);float f(float x);float ar,fr;float a2,a3;float f1,f2,f3;float a1=10,p=0.01,e=0.00001;float pa[3];area(a1,p,pa);a1=pa[0];a2=pa[1];a3=pa[2];f1=f(a1);f2=f(a2);f3=f(a3);do { ar=((a3*a3-...

相似回答