如何结束"做"循环?

How can I end a do-while cycle?

本文关键字:quot 循环 何结束 结束      更新时间:2023-10-16

我是编程和家庭作业的新手,我的老师要求我制作一个做不同事情的选项菜单,但我有一个问题,案例 5 应该结束程序,但是如果我选择 5,do-while 循环不断问我是否想做其他事情,当我需要它时,如果我选择 5, 程序结束,我怎样才能以循环结束并输入退出程序的选项?

谢谢,欢迎任何帮助

#include <iostream>
#include <stdio.h>
#include <time.h>
#include <conio.h>
using namespace std;
int main() {
string name, lname;
int an, result;
int num;
char option;
int n, x;
time_t t, b;
char* f;
int flag = 0;
int i = 0;
do {
cout << "Option Menu";
cout << "n1) Name and your last name";
cout << "n2) Years of life";
cout << "n3) First 100 numbers divisible by 3";
cout << "n4) Date and hour";
cout << "n5) Exitn";
cin >> num;
switch (num) {
case 1:
cout << "nWrite your name: ";
cin >> name;
cout << "nWrite your last name: ";
cin >> lname;
cout << "nYour complete name is: " << name << " " << lname;
break;
case 2:
cout << "nWhat year you were born?: ";
cin >> an;
result = 2019 - an;
cout << "nYou have " << result << " yearsn";
break;
case 3:
for (i = 0; flag < 100; i++) {
if (i % 3 == 0) {
cout << i << "n";
flag++;
}
}
break;
case 4:
b = time(&t);
f = ctime(&b);
printf("%sn", f);
getch();
break;
}
cout << "n Do you want to do something else?: ";
cin >> option;
} while (option == 's' or option == 'S');
cout << "nGood bye :)" << endl;
system("pause");
return 0;
}

最简单的方法可能是简单地使用 if 语句来检查 switch 语句之外是否num == 5,并在num等于 5 时中断 while 循环。

#include <iostream>
#include <stdio.h>
#include <time.h>
#include <conio.h>
using namespace std;
int main() {
string name, lname;
int an, result;
int num;
char option;
int n, x;
time_t t, b;
char* f;
int flag = 0;
int i = 0;
do {
cout << "Option Menu";
cout << "n1) Name and your last name";
cout << "n2) Years of life";
cout << "n3) First 100 numbers divisible by 3";
cout << "n4) Date and hour";
cout << "n5) Exitn";
cin >> num;
switch (num) {
case 1:
cout << "nWrite your name: ";
cin >> name;
cout << "nWrite your last name: ";
cin >> lname;
cout << "nYour complete name is: " << name << " " << lname;
break;
case 2:
cout << "nWhat year you were born?: ";
cin >> an;
result = 2019 - an;
cout << "nYou have " << result << " yearsn";
break;
case 3:
for (i = 0; flag < 100; i++) {
if (i % 3 == 0) {
cout << i << "n";
flag++;
}
}
break;
case 4:
b = time(&t);
f = ctime(&b);
printf("%sn", f);
getch();
break;
}
if (num == 5) {
break;
}
cout << "n Do you want to do something else?: ";
cin >> option;
} while (option == 's' || option == 'S');
cout << "nGood bye :)" << endl;
system("pause");
return 0;
}

要完成此任务,您的switch必须具有一个case 5:或一个default:块,该块将sS以外的值分配给option变量。这将使您的程序突破。而循环。

不过还有另一个问题。即使用户选择了"退出"选项,系统仍会询问用户是否要执行其他操作。为避免这种情况,您可以使用额外的变量(例如,布尔userExits(跳过程序在switch后要求输入的部分。

这是一个可能的解决方案:

// after all the variable declarations
bool userExits = false;
do {
// All menu options
cin >> num;
switch (num) {
// (...)
case 4:
b = time(&t);
f = ctime(&b);
printf("%sn", f);
getch();
break;
case 5:
userExits = true;
break;
}
if (userExits){
option = "exit";
}
else{
cout << "n Do you want to do something else?: ";
cin >> option;
}
} while (option == 's' or option == 'S');
cout << "nGood bye :)" << endl;