程序不断循环 - C++
Program keeps looping - C++
以下程序无法正常工作。它应该是一个计算游戏,不应该一遍又一遍地循环。我不太确定发生了什么。我尝试重新安排一些东西,但没有帮助。我注意到,在用户输入数字并回答问题后,即使它应该转到显示,它也会转到mainMenu。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
//Declaration Statement
double num1;
double num2;
double answer;
int choice;
void pauseProgram()
{
printf("nPress any key to continue...");
getchar();
}
//Function Title
void title(char * programTitle)
{
int len = strlen(programTitle);
system("cls");
printf("n");
for(int i=1; i<40 - len/2;i++) printf(" ");
printf("%sn",programTitle);
}
void intro()
{
title("Calculation Game");
printf("nThis program will test your math abilites");
pauseProgram();
}
void userInput()
{
title("Calculation Game");
printf("nPlease enter positive numbers onlyn");
printf("Enter a number:");
scanf("%lf",&num1);
getchar();
printf("Enter another number:");
scanf("%lf",&num2);
getchar();
printf("What is %lf + %lf?",num1,num2);
scanf("%lf",&answer);
if (num1<0 or num2<0)
{
printf("nSorry, you must enter a positive value! Please try again.");
userInput();
pauseProgram();
}
}
void display()
{
title("Calculation Game");
if (answer=num1+num2)
printf("nWow you got the right answern");
else if (answer!=num1+num2)
printf("nHmmm...maybe we should review this math concept again!n");
pauseProgram();
}
void goodbye()
{
title("Calculation Game");
printf("nFor further information call: 1-800-123-4567n");
pauseProgram();
}
void mainMenu()
{
title("Calculation Game");
printf("n1.tPlay Game");
printf("n2.tExitn");
printf("nEnter 1 or 2:");
scanf("%d",&choice);
getchar();
if (choice==1)
userInput();
if (choice=2)
goodbye();
if (choice!=1 or choice!=2);
{
printf("nPlease enter either 1 or 2! Please try again.");
mainMenu();
}
}
//Main program
int main()
{
do
{
intro();
mainMenu();
userInput();
if (answer==num1+num2 or answer!=num1+num2)
{
display();
}
}while(1);
goodbye();
}
正如我在评论中提到的,您可能会看到main()
函数进入无限循环:
do {
...
} while (1)
在被告知之前,此循环不会停止。例如,您可以告诉程序在pauseProgram()
函数中退出:
void pauseProgram()
{
printf("nPress any key to continue...");
getchar();
exit(0);
}
或在您的goodbye()
函数中:
void goodbye()
{
title("Calculation Game");
printf("nGame designed by David Liubartn");
printf("nFor further information call: 1-800-123-4567n");
pauseProgram();
exit(0);
}
最后,您可以在循环中的任何位置使用break
指令以退出循环。
相关文章:
- 如何循环打印顶点结构
- 如何在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进入无休止的循环
- 在循环C++中指定字符串之后,不会打印该字符串