C++基础:程序流程结构之循环结构(while、do...while、for、嵌套循环、rand、srand)

1. while循环结构

  • 满足循环条件,执行循环语句

  • while (循环条件){
        循环语句
    }
    

只要循环条件结构为真,就执行循环语句

执行语句时,必须提供跳出循环的出口,否则会出现死循环

while循环练习案例:猜数字

  • 案例描述:系统随机生成一个1到100之间的数字,晚间进行猜测,如果猜错,提示玩家数字过大或过小,如果柴堆恭喜玩家胜利,并且退出游戏。

  • #include<iostream>
    #include<cstdlib>
    using namespace std;
    //time系统时间头文件包含
    #include<ctime>
    
    int main() {
    	
    	//田间随机数种子 作用利用当前系统时间生成随机数,防止每次随机数都一样
    	srand((unsigned int)time(NULL)) ;//srand和rand都需要头文件cstdlib或stlib.h 
    	//1.系统生成随机数
    	int num = rand() % 100 + 1;//rand()%n的结果时[0,n-1]的一个整数
    	//2.玩家进行猜测
    	int val = 0;
    	
    	while(1)
    	{
    		cin >> val;
    		//3. 判断玩家的猜测
    		if (val > num)
    		{
    			cout << "猜测过大" << endl; 
    		}
    		else if (val < num)
    		{
    			cout << "猜测过小" << endl; 
    		}
    		else
    		{
    			cout << "恭喜您猜对了" << endl;
    			//猜对 退出游戏 
    			break; 
    		}
    	}
    	
    	system("pause");
    	
    	return 0;
    } 
    

2. do…while循环语句

  • 满足循环条件,执行循环语句

  • do {
    	循环语句
    }while(循环条件)
    

与while循环相比,do…while语句无论如何都会先执行一次循环,再判断循环条件

do…while循环练习案例:水仙花数

  • 案例描述:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身

  • #include<iostream>
    using namespace std;
    
    int main() {
    	
    	//1.先答应所有三位数字
    	int num = 100;
    	
    	do
    	{
    		//2.从所有数字中找到水仙花数 
    		int a = 0;//个位 
    		int b = 0;//十位 
    		int c = 0;//百位
    		
    		a = num % 10;//获取个位 
    		b = num / 10 % 10;//获取十位 
    		c = num / 100;//获取百位 
    		
    		if (a * a * a + b * b * b + c * c * c == num)//如果是水仙花数,才打印 
    		{
    			cout << num << endl;
    		}
    		
    		num++;
    	}while (num < 1000);
    	
        system("pause");
        
    	return 0;
    	
    }
    

3. for循环语句

  • 满足循环条件,执行循环语句

  • for(起始表达式;条件表达式;末尾循环体)
    {
        循环语句
    }
    

for循环首先执行起始表达式,然后对条件表达式进行判断,若满足条件表达式,则执行循环语句,然后进行末尾循环体,否则直接执行末尾循环体

起始表达式、条件表达式、末位循环体均可省略,但三种情况的三个”;“均不可省略

没有条件表达式,循环会缺少退出条件,陷入死循环

与while和do…while相比,for循环结构更清晰,比较常用

for循环练习案例:敲桌子

  • 案例描述:从1开始数到数字100, 如果数字个位含有7,或者数字十位含有7,或者该数字是7的倍数,我们打印敲桌子,其余数字直接打印输出。

  • #include<iostream>
    using namespace std;
    
    int main() {
    	
    	//1.先输出1~100数字
    	for (int i = 1; i <= 100; i++)
    	{
    		//2.从100个数字中找到特殊数字,打印”敲桌子“
    		//如果是7的背书、个位有7、或者十位有7,打印敲桌子 
    		if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7)
    		{
    			cout << "敲桌子" << endl;
    		} 
    		else
    		{
    			cout << i << endl;
    		}
    	} 
    	system("pause");
    	
    	return 0;
    } 
    

4. 嵌套循环

  • 在循环体里再加循环

嵌套循环练习案例:乘法口诀表

  • 案例描述:利用嵌套循环,实现九九乘法表

  • #include<iostream>
    using namespace std;
    
    int main() {
    	
    	for (int i = 1; i <= 9; i++)
    	{
    		for (int j = 1; j <= i; j++)
    		{
    			cout << j << " * " << i << " = " << i * j << "  ";
    		}
    		cout << endl;
    	}
    	
    	system("pause");
    	
    	return 0;
    }
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦生dwu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值