为什么我的程序持续运行而不停止?

why my program running continously and not stoping?

本文关键字:不停止 运行 我的 程序 为什么      更新时间:2023-10-16

我正在尝试制作一个模板,这是我的课堂作业。 我在 do while 循环中使用了一个 switch 语句,而条件是如果输入变量不等于 16,您应该终止程序

我已经在每种情况下都使用了中断语句,但它不起作用

#include <iostream>
using namespace std;
int main()
{
int op;
cout << "Please enter choice between 1 to 15 For Different Operations "
<< endl;
cout << "1. Create List(create a new list(presumably empty))" << endl;
cout << "2. Insertion" << endl;
cout << "3. Deletion" << endl;
cout << "4. Update(replace the element)" << endl;
cout << "5. Start" << endl;
cout << "6. Next" << endl;
cout << "7. Back" << endl;
cout << "8. Tail" << endl;
cout << "9. Find" << endl;
cout << "10. Copy" << endl;
cout << "11. Get(display current index and element)" << endl;
cout << "12. Size / length" << endl;
cout << "13. Display list" << endl;
cout << "14. De - allocate list" << endl;
cout << "15. Exit" << endl;
cin >> op;
do {
switch (op) {
case 1:
cout << "Creating the List" << endl;
break;
case 2:
cout << "inserting... " << endl;
break;
case 3:
cout << "Deleting... " << endl;
break;
case 4:
cout << "updating... " << endl;
break;
case 5:
cout << "starting... " << endl;
break;
case 6:
cout << "next... " << endl;
break;
case 7:
cout << "back... " << endl;
break;
case 8:
cout << "Tail... " << endl;
break;
case 9:
cout << "Find... " << endl;
break;
case 10:
cout << "Copying... " << endl;
break;
case 11:
cout << "Getting... " << endl;
break;
case 12:
cout << "Size... " << endl;
break;
case 13:
cout << "Display... " << endl;
break;
case 14:
cout << "Deallocate... " << endl;
break;
case 15:
terminate;
break;
default:
cout << "Please enter the correct choice " << endl;
break;
}
} while (op != 16);
return 0;
}

我希望用户所做的每个选择中的 cout 输出,然后停止接受输入

来自您的原始代码

cin >> op;
do {
switch (op)

因此,您在循环外从CIN读取并且再也不会读取,重新排序以使您在每次循环传递时读取将再次询问您所需的操作

do {
cin >> op;
switch (op)

另外请注意,中断不会中断循环,它只是从开关中断。如果没有中断,下一个情况的指令也将在交换机中执行。

如果你想在某些情况下从循环中中断,你需要在 switch 语句之外添加一个中断,你可以使用变量来"记住"是否应该离开循环。

但是,由于键入的指令中有退出条件,为什么不使循环退出

} while (op != 15);

这似乎是有道理的,因为

cout << "15. Exit" << endl;

线。