#include <iostream> #include <cmath> using namespace std; int main() { while (true) { float a, b, c, x1, x2; cout << "Enter coefficients a, b, and c (or enter q to quit): "; if (!(cin >> a >> b >> c)) { // 输入不是浮点数,退出循环 break; } float discriminant = b * b - 4 * a * c; if (discriminant >= 0) { x1 = (-b + sqrt(discriminant)) / (2 * a); x2 = (-b - sqrt(discriminant)) / (2 * a); cout << "Roots:" << endl; cout << "x1=" << x1 << endl; cout << "x2=" << x2 << endl; } else { cout << "No real roots exist." << endl; } cout << endl; } return 0; }修改这个代码不需要跳出循环
时间: 2024-02-10 13:27:03 浏览: 70
要修改代码以避免使用 `break` 语句跳出循环,你可以使用一个标志变量来控制循环的执行。下面是修改后的代码:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
bool shouldContinue = true;
while (shouldContinue) {
float a, b, c, x1, x2;
cout << "Enter coefficients a, b, and c (or enter q to quit): ";
if (!(cin >> a >> b >> c)) {
// 输入不是浮点数,设置标志变量为 false
shouldContinue = false;
} else {
float discriminant = b * b - 4 * a * c;
if (discriminant >= 0) {
x1 = (-b + sqrt(discriminant)) / (2 * a);
x2 = (-b - sqrt(discriminant)) / (2 * a);
cout << "Roots:" << endl;
cout << "x1=" << x1 << endl;
cout << "x2=" << x2 << endl;
} else {
cout << "No real roots exist." << endl;
}
cout << endl;
}
}
return 0;
}
```
在这个修改后的代码中,我们引入了一个 `shouldContinue` 的布尔型标志变量来控制循环的执行。当用户输入不是浮点数时,我们将 `shouldContinue` 设置为 `false`,从而退出循环。否则,我们计算判别式,并根据判别式的值输出相应的结果。
现在,当你不想再进行计算时,只需输入非浮点数即可,无需使用 `break` 语句来跳出循环。希望这可以帮助到你!如果还有其他问题,请随时提问。
阅读全文