[C++基础学习]----03-程序流程结构之循环结构详解

前言

        在C++程序中,循环结构在用于重复执行一段代码块,直到满足某个条件为止。循环结构有多种形式,包括while循环、do-while循环和for循环。

正文

01-循环结构简介

       1、while循环语句:

        while循环在每次循环开始前检查条件是否为真,如果真则执行循环体中的代码块,然后继续检查条件。

        语法格式为:

while (condition)
{
    // code to be executed while condition is true
}

        2、do-while循环语句:

        do-while循环先执行一次循环体中的代码块,然后在每次循环结束后检查条件是否为真,如果真则继续执行。

        语法格式为:

do
{
    // code to be executed
} while (condition);

        3、for循环语句:

        for循环是一种计数循环,通过初始化、条件判断和更新计数器来控制循环的执行次数。

        语法格式为:

for (initialization; condition; update)
{
    // code to be executed for each iteration
}

02-while循环

        具体使用代码和解释如下:

#include<iostream>
using namespace std;

int main()
{
	//循环结构 while
	//输出0~9十个数
	int num = 0;
	//while后的括号中一定要写循环条件,还有括号之后不能加分号
	while (num < 10)
	{
		//num++;在这个位置输出1~10
		cout << num << endl;
		num++;//在这个位置输出0~9
	}

	system("pause");

	return 0;

}

03-案例-猜数字游戏

        具体使用代码和解释如下:

#include<iostream>
using namespace std;
#include <ctime>
int main()
{
	// 若想每次生成的随机数都不相同,需要加入一个随机数种子,利用系统时间生成随机数

	srand((unsigned int)time(NULL));

	//1、首先系统生成一个随机数
	int num = rand() % 100 + 1;     // rand()%100这样生成一个0-99的随机数  rand()%100+1生成1-100的随机数
//	cout << num << endl;   // 随机生成了一个数,范围在1-100
	//2、玩家进行猜测
	int val = 0;  //玩家输入数据
	int num1 = 0;
	while (num1<5)
	{
		cin >> val;
		cout << "玩家输入的值为:" << val << endl;
		//3、判断玩家的猜测

		// 猜测错误   提示猜的结果,过大或者过小 重新返回第二步
		if (val > num)
		{
			cout << "猜测过大" << endl;
		}
		else if (val < num)
		{
			cout << "猜测过小" << endl;
		}
		else
		{
			cout << "恭喜您猜测正确" << endl;

			break; // 可以使用该关键字退出循环
		}
		num1++;
		
	}
	cout << "不好意思,挑战失败" << endl;
	 // 猜测正确   退出游戏
	 // 猜测错误   提示猜的结果,过大或者过小 重新返回第二步


	system("pause");

	return 0;  

}

04-do-while语句

        具体使用代码和解释如下:

#include<iostream>
using namespace std;

int main()
{
	int num = 0;
	//do
	//{
	//	cout << num << endl;
	//	num++;
	//}
	//while (num < 10);//do while 与while 的区别:前者先执行一次输出,在进入循环。后者不会先执行

	while (num<10)//这个会先判断循环条件,再进行输出。
	{
		cout << num << endl;
		num++;
	}
	system("pause");

	return 0;
}

05-案例-水仙花数

        具体使用代码和解释如下:

#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);//只打印三位数


// 	int num = 0;
// 	while (num<100)
// 	{
// 		cout << num << endl;
// 		num++;
// 	}


	system("pause");
	return 0;

}

06-for循环

        具体使用代码和解释如下:

#include<iostream>
using namespace std;

int main()
{
	//for循环
	//打印数字0~9
	// for的括号里包含了三种句子,起始表达式;条件表达式;末尾循环体
	for (int i = 0; i < 10; i++)//i++可以写到循环体里面,也可以写到括号里
		//这就是for循环更加精辟的地方,代码行数更少
	{
		cout << i << endl;
	}//此程序先执行int i=0;然后先判断i<10,之后输出0,接着执行i++,持续循环

	system("pause");
	return 0;

}

07-案例-敲桌子

        具体使用代码和解释如下:

#include<iostream>
using namespace std;

int main()
{
	//1、先输出1~100个数字
	for (int i= 1; i <101; i++)
	{
		//2、找到特殊的数字,改为输出敲桌子,7的倍数,十位有7,个位有7
		if (i % 7 == 0 || i % 10 == 7||i/10==7)//特殊数字,输出敲桌子
		{
			cout << "敲桌子" << endl;
		}
		else //不是特殊数字,直接输出
		{
			cout << i << endl;
		}
	}

	system("pause");
	return 0 ;

}

08-嵌套循环

        具体使用代码和解释以及运行结果如下:

#include<iostream>
using namespace std;

int main()
{
	//嵌套循环,输出一个星图
	//打印一行星图
	//外层循环一次,内层循环一周
	for (int i = 0; i < 10; i++)//外层循环
	/*int i = 0;
	while(i<10)*/
	{
		for (int j = 0; j < 10; j++)//内层循环
		{
			cout << "* "; //<< endl;这样直接在后面书写endl;,打印出的是一条竖线
		}
		/*i++;*/
		cout << endl;//当endl,这样写的时候,可以打印出横向的
	}
	system("pause");
	return 0;
}

09-案例-打印99乘法表

        具体使用代码和解释以及运行结果如下:

#include<iostream>
using namespace std;

int main()
{
	//乘法口诀表
	//打印行数
	for (int i = 1; i <= 9; i++)
	{
		//cout << i << endl;
		for (int j = 1; j <= i; j++)//行数小于等于列数
		{
			cout <<j<<"*"<<i<<"= "<<j*i<<"\t";//输出j(数)*i(数)=j*i,\t用来对齐
		}
		cout<< endl;//cout<<endl,写在这里,是为了不让上一步执行换行操作
	}

	system("pause");
	return 0;
}

总结

        循环结构允许程序重复执行特定的代码块,能够简化代码、提高效率并实现复杂的算法。在实际编程中,循环结构是经常使用的重要部分,能够有效地处理重复性任务和数据处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/578848.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据库锁介绍

数据库锁是一种同步机制&#xff0c;用于控制多个事务对共享资源的访问&#xff0c;防止并发操作造成的数据不一致。在数据库中&#xff0c;锁通常分为两种基本类型&#xff1a;排他锁&#xff08;Exclusive Locks&#xff09;和共享锁&#xff08;Shared Locks&#xff09;。排…

大型语言模型高效推理综述

论文地址&#xff1a;2404.14294.pdf (arxiv.org) 大型语言模型&#xff08;LLMs&#xff09;由于在各种任务中的卓越表现而受到广泛关注。然而&#xff0c;LLM推理的大量计算和内存需求给资源受限的部署场景带来了挑战。该领域的努力已经朝着开发旨在提高LLM推理效率的技术方…

【C++】namespace、class、struct的区别

文章目录 命名空间定义命名空间using指令不连续的命名空间嵌套的命名空间多文件编程时的命名空间命名空间只能全局范围内定义命名空间中的函数 可以在“命名空间”外 定义无名命名空间,意味着命名空间中的标识符只能在本文件内访问,相当于给这个标识符加上了static,使得其可…

【Hadoop】-Apache Hive使用语法与概念原理[15]

一、数据库操作 创建数据库 create database if not exists myhive; 使用数据库 use myhive; 查看数据库详细信息 desc database myhive; 数据库本质上就是在HDFS之上的文件夹。 默认数据库的存放路径是HDFS的&#xff1a;/user/hive/warehouse内 创建数据库并指定hdfs…

redis7 for windows的安装教程

本篇博客主要介绍redis7的windows版本下的安装教程 1.redis介绍 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的&#xff0c;基于内存的数据结构存储系统&#xff0c;可用作数据库、缓存和消息代理。它支持多种数据结构&#xff0c;如字符串、哈希表、列…

PCIe debug设计:锁存ltssm 状态机

图1&#xff1a;debug设计添加位置 图2&#xff1a;ltssm状态切换图 LTSSM state: LTSSM state encoding: • 00h: detect.quiet • 01h: detect.active • 02h: polling.active • 03h: polling.compliance • 04h: polling.configuration • 05h: config.linkwidthstart • 0…

鸿蒙内核源码分析(时钟任务篇)

时钟概念 时间是非常重要的概念&#xff0c;我们整个学生阶段有个东西很重要,就是校园铃声. 它控制着上课,下课,吃饭,睡觉的节奏.没有它学校的管理就乱套了,老师拖课想拖多久就多久,那可不行,下课铃声一响就是在告诉老师时间到了,该停止了让学生HAPPY去了. 操作系统也一样&…

linux进程通信 ipc

进程通信 管道 父子进程创建命令 实现ls | wc -l 左边写端 &#xff0c;右边读端 父进程写 子进程读 int fd[2]; pipe(fd); fd[1] 是写 fd[0]是读 读之前关闭写 写之前关闭读 兄弟进程创建命令 无法进行管道通信可能是父进程也把握了读端和写端 可能会流入到父进程…

抓包理解协议

用的Wireshark 抓包 1.抓包网卡选择 - WLAN 无线网卡&#xff0c;其他是本地虚拟机的网卡 这里分别是开始捕获、停止捕获、重新捕获、网卡选择&#xff0c;下面是可以过滤选择 过滤tcp包 3次握手&#xff1a; source是源地址&#xff0c; destination是目标地址&#xff0c;in…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-5

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

嵌入式学习58-ARM7(字符设备驱动框架led)

知识零碎&#xff1a; kernel 内核 printk 内核打印 cat /proc/devices insmod …

VMWARE安装xpsp3时无法从光盘启动安装显示dhcp转圈圈

VMWARE安装xpsp3时无法从光盘启动安装显示dhcp转圈圈。之前都安装过无数次了。这次被卡住了。 原来是这里原因 不成功是因为启动时连接没打钩。默认是打钩的。不知道怎么的我把勾去掉了。我还跑去设置bios。都没有用。

开放地址法解决哈希冲突

1.基本思想: 有冲突时就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将元素存入. 2.开放地址法的常用方法: (1) 线性探测法: Hi(Hash(key)di)%m (1<i<m),其中:m为哈希表长度,di为增量序列1,2,……m-1,且dii;其实就是一旦有冲突,就找下一个空地…

【Spring MVC】_SpringMVC项目返回静态页面

目录 1. 创建与设计前端页面 2. 返回HTML静态页面 2.1 示例1&#xff1a;使用RestController 2.2 示例2&#xff1a;使用Controller 3. RestController与Controller 在本专栏关于SpringMVC项目的相关文章中&#xff0c;已经介绍了操作HTTP请求的方式&#xff0c;包括多种传…

CTFHub Web 信息泄漏(一)

目录遍历 打开题目 点击开始寻找flag 发现在flag_in_here页面中有四个文件夹 点击打开第一个文件夹 发现里面还有四个文件夹 再次点击打开第一个文件夹 里面什么都没有 尝试对所有文件夹依次都点击打开 在2/4中发现flag.txt 点击打开即可得到flag 不太懂这题的难点&#…

[RocketMq:基于容器化]:快速部署安装

文章目录 一&#xff1a;相关镜像准备&#xff1a;RocketNameServer1.1&#xff1a;查看相关镜像和版本1.2&#xff1a;拉取镜像1.3&#xff1a;配置和运行RocketNameServer容器 二&#xff1a;相关镜像准备&#xff1a;RocketBroker2.1&#xff1a;创建配置目录和broker配置文…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(一)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 1 - 2节&#xff09; P1《课程介绍》 开场白&#xff0c;HarmonyOS 的一个简介&#xff0c;话不多说&#xff0c;直接看图吧&…

【算法一则】【贪心】数组中的数可以拼装成的最大数

题目 给定一组非负整数 nums&#xff0c;重新排列每个数的顺序&#xff08;每个数不可拆分&#xff09;使之组成一个最大的整数。 注意&#xff1a;输出结果可能非常大&#xff0c;所以你需要返回一个字符串而不是整数。 示例 1&#xff1a; 输入&#xff1a;nums [10,2] …

基于canal监听MySQL binlog实现数据增量同步

一、背景 业务反馈客服消息列表查询速度慢&#xff0c;有时候甚至要差不多20秒&#xff0c;急需优化提升速度。 二、方案 引入 首先&#xff0c;体验系统&#xff0c;发现查询慢的正是消息列表查询接口。 接着去看代码的设计&#xff0c;流程比较长&#xff0c;但从代码逻…

应用监控(Prometheus + Grafana)

可用于应用监控的系统有很多&#xff0c;有的需要埋点(切面)、有的需要配置Agent(字节码增强)。本节我教大家另外一个监控系统的使用 —— Grafana。 Grafana 监控面板 这套监控主要用到了 SpringBoot Actuator Prometheus Grafana 三个模块组合的起来使用的监控。非常轻量好…