作用:有条件地多次重复执行某一段代码
语法:
while (循环条件) {循环语句}
循环条件实际上是一个逻辑表达式.
当表达式的值为真时,开始执行循环语句中的代码.
全部执行完毕后再次判断表达式,若仍真,再从头执行循环语句中的代码.
直至表达式值为假,则不再执行后面的循环语句,并立即跳出循环.
所以写循环语句时必须注意,不要让表达式的值一直为真,防止程序陷入死循环.
若表达式的值一直为真,就需要在循环语句中写判断语句 ,用break; 或者 return 0;来跳出循环.
return 0; 会向表达式返回一个0值 ( 即布尔型的假 ), 从而终止循环.
循环语句常被用于执行某些多次重复的功能,如输出0~100的全部整数:
图中代码实际输出为0~59, 因为 i == 59 时,在输出和自增后,就直接跳出了循环.
#include <iostream>
using namespace std;
int main()
{
int i = 0;
while (i < 101)
{
cout << i << endl;
i++;
if (i == 60)
{
return 0;
}
}
return 0;
}
猜数游戏
可以结合循环语句和随机数生成, 做一个猜数字的游戏.
系统生成随机整数,玩家知道随机数的范围,但不知道数的具体值,允许无限次的猜测.
并且每次猜测后程序会告知玩家猜测的数字偏大还是偏小,直至玩家猜中为止.
随机数生成:
c++中的随机数rand()_c++随机数_fang0jun的博客-优快云博客
rand()函数
这个函数不需要参数就可以使用.
计算机提供随机数种子,在任意时间执行程序,随机数的序列都总是相同
并且序列具有周期性(但是周期很大.)
语法:
int num = rand()% n + a ;
即生成从 a 到 ( n+a-1 ) 的随机整数,包括 a 和 ( n+a-1 ).
srand()函数
若要每次产生的随机数序列都不一样,可以用 srand ( seed ) 函数.
随着种子(seed)的改变,每次生成的随机数都会不一样.
注意,这个函数只是指定种子,之后仍然需要通过rand()函数生成随机数.
语法:
srand ( (unsigned int) time (NULL) );
或者
srand (time(0));
某些教程和资料中要求,使用第一种方式时,需要包含<ctime>头文件.
使用第二种方式时,需要包含<time.h>头文件.
但经本人实际测试, Visual Studio Community 2022 不需要额外包含任何头文件就可以使用上述两种方法.
源代码:
#include <iostream>
using namespace std;
int main()
{
int a = 0;
int b = 0;
srand((unsigned int)time(NULL));
a = rand() % 100 + 1;
while (1)
{
cout << "输入0退出游戏" << endl;
cout << "请输入您猜测的数字: " << endl;
cin >> b;
if (b == 0)
{
break;
}
else if (b > a)
{
cout << "您的猜测偏大" << endl;
}
else if (b < a)
{
cout << "您的猜测偏小" << endl;
}
else
{
cout << "恭喜您猜中了!" << endl;
cout << "随机数的值为:" << a << endl;
break;
}
}
return 0;
}