我希望循环运行直到数字为:123
I want the loop running until numbers are: 123
我有2个不同的代码,对我来说看起来相同,但事实并非如此。第一个按照我的意愿起作用,第二个不做。我不明白为什么。
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
int num1, num2, num3, i=0;
srand(time(0));
do{
i++;
num1=rand()%3+1;
num2=rand()%3+1;
num3=rand()%3+1;
cout<<i<<"."<<num1<<num2<<num3<<endl;
}while(!((num1==1)&&(num2==2)&&(num3==3)));
}
这是第二个。据我所知,do-wher lile循环应运行,直到num1不等于1,num2不等于2,num3不等于3。
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
int num1, num2, num3, i=0;
srand(time(0));
do{
i++;
num1=rand()%3+1;
num2=rand()%3+1;
num3=rand()%3+1;
cout<<i<<"."<<num1<<num2<<num3<<endl;
}while((num1!=1)&&(num2!=2)&&(num3!=3));
}
问题在这里: while(((num1==1)&&(num2==2)&&(num3==3)));
当这三个都与您打印的值不同时,循环将结束。我也强烈建议学习布尔算术,尤其是德·摩根定律
!(a&amp;&amp; b)=!a ||!b!(a || b)=!a&amp;&amp;!b so
!((num1==1)&&(num2==2)&&(num3==3))
将转换为
(!(num1==1)||!(num2==2)||!(num3==3))
两个代码之间的区别是,第一个代码将迭代直到所有三个变量符合其各自的条件,但是第二个代码将持续到至少一个变量符合其状况。这就是使用布尔逻辑评估时出现的方式。如果您想在不使用开始的情况下纠正第二个条件!,则可以将条件更改为:
while((num1 != 1) || (num2 != 2) || (num3 != 3));
在第一个程序中的do-语句中的条件
while(!((num1==1)&&(num2==2)&&(num3==3)));
可以等效地转换为
while( (num1!=1) || (num2!=2) || (num3 != 3)));
这意味着其中一个变量中的一个不等于1或2或3。
第二个程序中的do-while语句中的条件
}while((num1!=1)&&(num2!=2)&&(num3!=3));
表示NUM1不等于1,NUM2不等于2,NUM3不等于3。
。很明显条件
while( (num1!=1) or (num2!=2) or (num3 != 3)));
和
}while( (num1!=1) and (num2!=2) and (num3!=3));
不同。
因此,程序的行为不同。:)
相关文章:
- 使用fstream对txt文件中的数字进行循环
- 在 c++ 中查找字符串中没有循环的数字总和
- 程序以使用 C++ 中的 while 循环查找一组数字的最小值
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- C++ for 循环,用于反转数字 10 - 99
- 为什么当我输入一个被接受的数字时,我的 do-while 循环没有中断?
- 如何使用循环对所有数字求和?
- 循环中的线程 Runnin 用于对 c++ 中的数字求和
- 为什么我的 while 循环永远不会在 C++ 中的数字猜测游戏中结束?
- C++在不使用pow或循环的情况下计算一个数字的幂
- 我必须更改我的数字最后一个数字和第一个数字,但不要使用仅带有整数或循环的函数.例如从 12345 到 52341
- 如果输入数字为负数,如何循环
- 如何循环开关语句直到找到所需的数字?
- 如何在C++中创建 2d 数组,其中一部分包含循环计数器,另一部分包含数字列表?
- C++ 循环快乐数字 CS101.1X
- 在循环中使用字符串流从几个字符串中提取数字
- 如何制作 arduino 串行循环(连续接收数字)
- 使用 while () 循环从总和中减去数字
- 有什么方法可以在 c++ 中组织"cycling"(循环)数字?
- 我的堆栈使用链表时出错.无法打印数字循环.(C++)