如何结束"做"循环?
How can I end a do-while cycle?
我是编程和家庭作业的新手,我的老师要求我制作一个做不同事情的选项菜单,但我有一个问题,案例 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:
块,该块将s
或S
以外的值分配给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;
相关文章:
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 正在尝试了解输入验证循环
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 循环后如何继续阅读
- Ardunio UNO解决了多个重叠的定时器循环
- Eigen如何在容器循环中干净地附加矩阵
- 在某些循环内使用vector.push_back时出现分段错误
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 为什么我的for循环不能正确获取argv
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- while循环中while循环的时间复杂度是多少
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 为什么在这个代码结束循环中没有得到结束
- 在基于范围的for循环中使用结构化绑定声明
- 用于C++中带有数组和指针的循环
- 循环中的随机函数
- 是什么阻止DOMTimerCoordinator::NextID进入无休止的循环
- “并非所有控制路径都返回一个值./&quot“控制可能达到非空隙功能的末端”.验证时循环时