用switch方法编写C++程序计算ax^2+bx+c=0,可不可以帮忙看看哪里错了

#include "stdafx.h"
#include"math.h"
int main(int argc, char* argv[])
{
int a,b,c;
float x1,x2,t;
scanf("%d %d %d",&a,&b,&c);
if (a=0) printf ("x1=x2=%f",-c/b);
t=b*b-4*a*c;
if(t>0)t=1;
if(t<0)t=2;
switch(t);
{
case 0:
printf("x1=x2=%f",-b/(2*a));
break;
case 1:
printf("x1=%f,x2=%f",(-b+sqrt(t))/(2*a));
break;

default:
printf("无实根");
}

}
这是修改以后的,还有错误
#include "stdafx.h"
#include"math.h"
int main(int argc, char* argv[])
{
int a,b,c,d;
float x1,x2,t;
scanf("%d %d %d",&a,&b,&c);
if (a==0) printf ("不是二元一次方程");
t=b*b-4*a*c;
if(t>0)d=1;
if(t<0)d=2;
if(t==0)d=0;
switch(d);
{
case 0:
printf("x1=x2=%f",-b/(2*a));
break;
case 1:
printf("x1=%f,x2=%f",(-b+sqrt(t))/(2*a));
break;

default:
printf("无实根");
}

return 0;
}

第1个回答  2013-07-21
第一个错: if (a=0) printf ("x1=x2=%f",-c/b); 你是想写成if(0==a)?
第二个错:switch(t); switch能接受的变量只能时整型,你传了一个float给它追问

一个=和两个=有什么区别啊?第一个错我没懂。。。

追答

一个是赋值一个是判断是否相等呀。。。。。。。。。。。

第2个回答  2013-07-21
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c,d;
float x1,x2,t;
scanf("%d %d %d",&a,&b,&c);
if (a==0) printf ("不是二元一次方程");
t=b*b-4*a*c;
if(t>0)
{
d=1;
x1=(-b+sqrt(t))/(2*a);
x2=(-b-sqrt(t))/(2*a);
}
else if(t<0) d=2;
else if(t==0)
{ d=0;
x1=x2=-b/(2*a);
}
switch(d)
{
case 0:
printf("x1=x2=%f",x1);
break;
case 1:
printf("x1=%f,x2=%f",x1,x2);
break;
default:
printf("无实根");
}
return 0;
}

修改前,一个=是赋值,两个==是等于号,这里应该是判断a是否等于0,所以是a==0;
修改后那个,第一:switch(d);这个错了,switch后面没有分号的,
第二:printf("x1=x2=%f",-b/(2*a));我调试的时候表达式直接写在里面求不出正确结果,可能和正型转浮点型输出有关。本回答被提问者采纳

用switch方法编写C++程序计算ax^2+bx+c=0,可不可以帮忙看看哪里错了
第一个错: if (a=0) printf ("x1=x2=%f",-c\/b); 你是想写成if(0==a)?第二个错:switch(t); switch能接受的变量只能时整型,你传了一个float给它

C++里关于switch语句的问题.大家帮我看看哪里错了?
p的赋值错误,不能写成p=5%;应该全部改成小数形式:include"iostream.h"void main(){ int x,p,a,s,b;cin>>s;if(s<1000)x=1;else if(s>=1000&&s<2000)x=2;else if(s>=2000&&s<3000)x=3;else if(s>=3000&&s<5000)x=4;else if(s>=5000)x=5;switch(x){ case 1:p=0;br...

c语言 用switch语句写个加、减、乘、除法的计算器程序
int main(){ double m,n,result;char a;printf("Please input two number as a,b:");scanf("%lf%c%lf",&m,&a,&n);switch(a){ case '+':printf("%lf%c%lf=%lf",m,a,n,m+n);break;case '-':printf("%lf%c%lf=%lf",m,a,n,m-n);break;case '*':printf("%lf%c...

请帮我看看这个c++程序是什么错误 应该怎样改
首先,表示,窗口程序编写没有问题。我想,你的问题是,编译环境设置问题。如果是VC++6.0下,找到属性选项,选择设置 菜单项。进入 链接选项卡 在最下面的一个文本框中,找到console修改成windows就可以编译运行了。

有一道c++关于switch的题目,大家帮忙看一下,给出答案,并且对每一项简单...
B)switch(a*a+b*b);\/\/ 这里多余分号,应该switch(a*a+b*b){case 3:case 1:Y=a+b;break; case 0:Y = b-a;break; } C)switch a \/\/ 这里缺少(),应该为switch(a){default:X=a+b;case 10:Y 2 a-b;break; case 11:x=a*d;break;D)switch(a+b){c...

c++里,如何用switch编写以下程序?
switch 是一个开关语句,和case配套使用, 和if else 判断语句差不多, switch 语句是用于多分支语句进行条件判断,比如:i++;switch (i){ case 1 : P1 = 0xFE; \/\/i =1; 执行P1 = 0XFE;breK; \/\/执行完成后跳出 case 2 : P1 = 0xFD; \/\/i =2; 执行P1...

c语言解一元二次方程
改过以后的程序:include "stdio.h"include "math.h"void main(){ printf("求方程ax^2+bx+c=0的根:\\n");L: printf("请分别输入a,b,c的值。\\n");double a,b,c,x1,x2,x,y;char z;printf("a=");fflush(stdin); \/\/强制清空键盘缓冲区 scanf("%lf",&a);printf("b=");fflus...

我编写了一则c++程序,可是电脑运行时显示有错,我没看出有错,请高人指...
你的问题就在于,你的case语句没有用大括号括起来,编译器没有分出来,他是switch的语句。加一个大括号,就没错误了。include "stdio.h"int main(){ int t,s;float I,award;printf("enter I=");scanf("%f",&award);t=100000;s=I\/t;if(s>=10){ award=t*0.1+t*0.075+2*t*0....

高手们帮我看看c语言程序,请给每行代码和功能注释
{分支2} 这是典型的分支结构,如果条件成立,执行分支1,否则执行分支2,分支1和分支2都可以是1条或若干条语句构成。如:求ax^2+bx+c=0的根 分析:因为当b^2-4ac>=0时,方程有两个实根,否则(b^2-4ac<0)有两个共轭复根。其程序段如下: d=b*b-4*a*c; if(d>=0) {x1=(-b+sqrt(d))\/2a...

C++程序,帮忙改错!
switch(c ){case 0 : sum = sum + b ; break; \/***\/ default : sum = sum ;} b++ ;}while (b <= (a \/ 2 ) ) ;if ( sum == a ) cout << sum << ends; \/***\/ } system("PAUSE");}

相似回答