else break; 为何会出错?
#include<iostream> //包含iostream的头文件#include<math.h>
#include<string>//字符串处理函数
using namespace std;
class FindRoot//定义类FindRoot
{
private:
float a,b,c;
double r,q,x1,x2;//定义数据成员类型
int jud;
public:
void Input();//输入函数
void Display();//显示函数
void Find();//求根函数
};
//以上是类的声明部分,以下是类的实现部分
void FindRoot::Input()
{
cout<<"这是一个求解ax^2+bx+c=0的根的程序:"<<endl;//总述程序
for(; ;)
cout<<"输入方程系数b:";
cin>>b;//输入b
cout<<"输入方程系数c:";
cin>>c;//输入c
{
cout<<"输入方程系数a:";
cin>>a;
if(a==0)
cout<<"错误:a不能为0!!!:"<<endl;
else break;
}//输入a,并对a的可能情况进行判断
}
void FindRoot::Find()//定义求根的函数
{
float delta=b*b-4*a*c;//定义求根公式的数据类型
if(delta<0)
{jud=0;
r=-b/(2*a);
q=sqrt(-delta)/(2*a);//有两个共轭复数根的情况
}
else if(delta==0)
{
x1=-b/(2*a);
jud=1;//有两个相同的根的情况
}
else
{
x1=(-b+sqrt
(delta))/(2*a);
x2=(-b-sqrt
(delta))/(2*a);
jud=2;//有两个不同的根的情况
}
}
void FindRoot::Display()//定义显示函数
{
switch(jud)
{
case 0:
{cout<<"x1="<<r<<"+"<<q<<"i"<<endl;
cout<<"x2="<<r<<"-"<<q<<"i"<<endl;}break;//显示有共轭复数根时的解
case 1:
cout<<"x1=x2="<<x1<<endl;break;//显示有一实根时的解
case 2:
cout<<"x1="<<x1<<'\n'<<"x2="<<x2<<endl;break;//显示有两不同根情况的解
}
}
void main()//主函数
{
while(1)
{
FindRoot f;//定义类型
f.Input();
f.Find();
f.Display();//以上各函数按顺序执行
cout<<"是否退出?(Y退出,其它任意键继续)"<<endl;//程序是否退出
char m[2];char Y[]="Y";char y[]="y";//定义字符串
cin>>m;
if(strcmp(m,Y)==0||strcmp(m,y)==0)
break;//如果退出则终止运行
else
cout<<"请继续……"<<endl;//如果不退出则继续执行
}
}