涉及while循环和OR语句的新手C++问题
Newbie C++ issue involving while loops and OR statements
我在学习涉及while循环的C++基础知识时遇到问题。什么时候我运行我的程序,它运行得很好,直到我进入涉及OR(||
)语句的while循环。while (totalhumanHP > 0 || totalskeletonHP > 0)
应该继续直到一个达到零然后停止正确吗?它只是密切关注totalhumanHP
,让skeletonHP
不停地进入底片。我不知道or语句在while循环中是如何或为什么不起作用的。
#include <iostream>
#include <string>
#include <random>
#include <ctime>
using namespace std;
int main()
{
cout << "-----SKELETMANS V HOOMINS-----n";
int skeletonHP = 90;
int humanHP = 100;
int skeletonDMG = 1;
int humanDMG = 1;
int totalskeleton = 1; //Inputted Skele's
int totalhuman = 1; //Inputted hoomins
int totalskeletonHP; //Overall Skele HP
int totalhumanHP; //Overall Hoomin HP
string battlecry;
string battlecryenter;
default_random_engine generator(time(0));
uniform_int_distribution<int> skeletonrng(1, 22);
uniform_int_distribution<int> humanrng(1, 20);
cout << "How Many Skeletmans: ";
cin >> totalskeleton;
cout << "How Many Houmints: ";
cin >> totalhuman;
totalskeletonHP = totalskeleton * skeletonHP;
totalhumanHP = totalhuman * humanHP;
cout << "Overall Skeleton HP= " << totalskeletonHP << endl;
cout << "Overall Hoomint HP= " << totalhumanHP << endl;
cout << endl;
cout << "What is your battlecry?n (You can use this to start the battle)";
cout << endl;
cin >> battlecry;
battlecry == battlecryenter;
cout << "Use Your Battlecry To Start The Fight!!!nnnnn";
cout << "BattleCry: ";
cin >> battlecryenter;
if (battlecryenter == battlecry)
{
cout << "THE FIGHT HAS COMMENCED!!!nnnn";
}
else{
cout << "You 4got alreedy? UR DOMB MINGnn";
cout << "ACTUAL BattleCry: ";
cin >> battlecryenter;
if (battlecryenter == battlecry)
{
cout << "THE FIGHT HAS COMMENCED!!!nnnn";
}
}
int endskeleton = 0;
int endhuman = 0;
while (totalhumanHP > 0 || totalskeleton > 0)
{
skeletonDMG = skeletonrng(generator);
humanDMG = humanrng(generator);
totalhumanHP = totalhumanHP - skeletonDMG;
totalskeletonHP = totalskeletonHP - humanDMG;
cout << "END SKELETON: " << totalskeletonHP << endl;
cout << "END HOOMING: " << totalhumanHP << endl;
}
cout << "Skeleton Ramaining Health: " << totalskeletonHP << endl;
cout << "Human Remaining Health: " << totalhumanHP << endl;
system("PAUSE");
return 0;
}
这是因为您使用了OR,所以即使skeletonHP为负,该条件仍然成立,因为totalhumanHP大于0。
只需将其更改为:
while (totalhumanHP > 0 && skeletonHP > 0)
当其中一个达到0时,循环将停止。
相关文章:
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 我是c ++的新手,你能解释一下在这种情况下的指针吗
- 我是 c++ 的新手.学习基本知识后,我想做井字游戏.对于印刷板,我在下面写代码,但它显示错误
- 我是编程新手
- C++新手,想知道如何使用VS code 2019播放音频文件
- C++功能泄漏内存,我是C++新手,不确定如何解决
- 如何正确解析子字符串,以便它们对我的新手计算器有效?
- 我是C++新手,我想知道,为什么在c ++中使用纯虚函数?为什么要使用纯虚函数?
- 结构新手,我对如何从 void 函数中返回值并将其放入另一个函数感到困惑
- 如何在使用 ItemType 的模板类时将新节点插入二叉树 c++.(我是 c++ 的新手)
- 我是 C++ 的新手,我试图调用 make 一个以 2 个类作为其参数的类构造函数
- 作为一个C++新手,我遇到了麻烦
- 如何一步一步地正确解释此代码?(编程新手)
- 什么是"MFC Dialog Extension"?(Windows/C++ 新手 - Linux 背景)
- 我是 c++ 的新手,有没有一种算法可以找到 3d 数组中最接近的 0 的距离?
- C++浮点数与双胞胎设置精度奇数(新手)
- C++新手的类成员函数
- 编码新手需要有关 if 语句的帮助
- 我是 c++ 编程的新手,我一直在做以下任务:
- C++的新手试图弄清楚类约定