c语言switch用法看看哪里不对

来源:百度知道 编辑:UC知道 时间:2024/06/06 09:52:37
#include<iostream>
#include<cmath>
using namespace std;
void main()
{
double a,b,c,x,y;
char q=pow(b,2)-4*a*c;
cout<<"a"<<endl;
cin>>a;
cout<<"b"<<endl;
cin>>b;
cout<<"c"<<endl;
cin>>c;
x=(-b+sqrt(pow(b,2)-4*a*c))/a;
y=(-b-sqrt(pow(b,2)-4*a*c))/a;
switch(q)
{
case 0:
cout<<"方程有一个根"<<(-b)/(2*a)<<endl;

case 4:
cout<<"方程有两个不相等的实根分别是"<<x<<"和"<<y<<endl;

case -1:
cout<<"方程无实根"<<endl;
break;
default:
cout<<"次方程不成立"<<endl;
}

}

0,4没有break

这样就可以了
#include<iostream>
#include<cmath>
using namespace std;
void main()
{
double a,b,c,x,y;
char q=pow(b,2)-4*a*c;
cout<<"a"<<endl;
cin>>a;
cout<<"b"<<endl;
cin>>b;
cout<<"c"<<endl;
cin>>c;
x=(-b+sqrt(pow(b,2)-4*a*c))/a;
y=(-b-sqrt(pow(b,2)-4*a*c))/a;
switch(q)
{
case 0:
cout<<"方程有一个根"<<(-b)/(2*a)<<endl;break;
case 4:
cout<<"方程有两个不相等的实根分别是"<<x<<"和"<<y<<endl;break;
case -1:
cout<<"方程无实根"<<endl;
break;
default:
cout<<"次方程不成立"<<endl;
}

}

程序的算法有错, 语法也有错, 先复习一下一元二次方程的根的条件, 然后再解决程序的问题吧.

判断是没有什么问题的,我运行了一下,就是多了输出case 0和case 4中switch是继续执行,而不是判断不成立后不去执行。在case 0 和ca