循环结构(含练习题)

news2024/11/24 17:38:47

当循环次数或范围确定时,多用for循环,反之多用while循环

循环结构一般由四部分组成:

  • 初始化语句,在循环开始最初执行,并且只执行一次
  • 条件判断、步进语句、循环体

for & foreach

在这里插入图片描述
for循环,循环体可以执行零次或多次

每执行一次循环体,就会执行一次步进语句

		int i;
        for (i = 0; i < 5; i++) {
            continue; // 跳出当前次循环
			// System.out.println(i); // 标红报错 Unreachable statement 不能执行到的语句
        }
        System.out.println(i); // 5 

foreach循环,JDK 5 新特性,遍历数组和集合,底层是迭代器

for(声明循环变量:数组名字){ },不可以使用已经声明过的变量

        int one[] = {1, 2, 50, 61};
        for (int i : one) {
            System.out.println(i);
        }
        // int j = 0;
        // for ( j : one) { } // 标红报错 Not a statement

   		int two[][] = {{1}, {1, 2}, {1, 2, 3}};
        for (int i = 0; i < two.length; i++) { // 传统方式遍历二维数组
            for (int j = 0; j < two[i].length; j++) {
                System.out.println(two[i][j]);
            }
        }
        System.out.println("==========");
        for (int[] ints : two) { // 改进方式遍历二维数组
            for (int anInt : ints) {
                System.out.println(anInt);
            }
        }

遍历数组,foreach循环比for循环更加快捷

for循环可以修改数组元素,foreach循环不能修改数组元素

  		int[] arr = {1, 2, 3};
        for (int i : arr) {
            i += 1;
        }
        System.out.println(Arrays.toString(arr)); // [1, 2, 3]
        for (int i = 0; i < arr.length; i++) {
            arr[i] += 1;
        }
        System.out.println(Arrays.toString(arr)); // [2, 3, 4]

一、求1-100之间偶数的和

 		int sum = 0;
        for (int i = 1; i <= 100; i1++) {
            if (i1 % 2 == 0) {
                sum += i;
            }
        }		
	 	// for (int i = 2; i <= 100; i += 2) { // 步进语句,每次加二
        //     sum += i;
        // }
		System.out.println("1-100之间偶数的和:" + sum); // 2550

二、求1-100之间素数的和

 		int sum = 0; 
        for (int i = 1; i <= 100; i++) { // 目标数
            int j;
            for (j = 2; j < i; j++) { // 素数只能被1和本身整除,在2~(i-1)范围内遍历
                if (i % j == 0) {
                    break;
                }
            }
            if (i == 1 || j < i) { //  最小的素数是2,排除目标数1;j<i不是素数,继续下一个目标数
                continue;
            }
            sum += i;
        }
        System.out.println(sum); // 1060

三、求6+66+666…的前12项和

 		int sum = 0;
        int item = 6;
        for (int i = 1; i <= 2; i++) { // 检验循环,缩小次数
            sum += item;
            item = item * 10 + item; // 修改中间量
        }
        System.out.println(sum); // 72

四、求1-1000之内的所有完数

一个数恰好等于它的因子之和,这个数称为完数

  		for (int i = 1; i <= 1000; i++) { // 目标数
            int sum = 0;
            for (int j = 1; j < i; j++) { // 因子,不包含本身
                if (i % j == 0) {
                    sum += j;
                }
            }
            if (i == sum) {
                System.out.println(i); // 6 28 496
            }
        }

五、打印一天之内的几点几分

		// 嵌套循环
		for (int i = 0; i < 24; i++) { // 24小时
    		for (int j = 0; j < 60; j++) { // 60分钟
       		System.out.println(i + "点" + j + "分"); // 24*60=1440行
    		}
		}

while & do-while

while循环,循环体可以执行零次或多次

do-while循环,循环体至少执行一次,不要漏掉末尾的分号!!

		int i = 1; // 初始化语句
		do {
    		System.out.println("hello world " + i); // 循环体
    		i++; // 步进语句
		} while (i < 0); // 条件判断

一、求1!+1/2!+1/3!+…的前12项和

        double sum = 0; // double类型
        double item = 1;
        int index = 1, end = 2; // 检验循环,缩小次数
        while (index <= end) {
            sum += item;
            index++;
            item = item * 1.0 / index; // 修改中间量
        }
        System.out.println(sum); // 1.5

二、求1!+2!+3!+4!+…的前12项和

        int sum = 0;
        int item = 1;
        int index = 1, end = 3; // 检验循环,缩小次数
        while (index <= end) {
            sum += item;
            index++;
            item = item * index; // 修改中间量
        }
        System.out.println(sum); // 1 + 2 + 6 = 9 

三、求满足1+2+3+…+n<8888的最大正整数n

//              0<8888  +1<8888  +2   +3   +4 
//        sum:    +1      +2     +3   +4
//        item:    2      3      4    5
		int sum = 0;
        int item = 1;
        while (sum < 8888) { // 数字10验证过程如上,最终需要item-2才正确
            sum += item;
            item = item + 1;
        }
        System.out.println(item - 2); // 132

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

22-k8s中pod的调度-亲和性affinity

一、概述 在k8s当中&#xff0c;“亲和性”分为三种&#xff0c;节点亲和性、pod亲和性、pod反亲和性&#xff1b; 亲和性分类名称解释说明nodeAffinity节点亲和性通过【节点】标签匹配&#xff0c;用于控制pod调度到哪些node节点上&#xff0c;以及不能调度到哪些node节点上&…

MySQL学习记录——십이 事务

文章目录 1、了解事务2、事务提交3、事务隔离级别1、隔离性和隔离级别2、查看、设置隔离级别3、读未提交4、读提交5、可重复读6、串行化7、总结 4、事务一致性5、事务隔离性1、隐藏字段2、undo日志3、模拟MVCC4、Read View 6、读提交RC、可重复读RR的区别 1、了解事务 MySQL内…

【C语言必刷题】3.二分查找

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有…

成功靠运气还是能力?我写了一个运气模拟器,告诉给你答案

前端训练营&#xff1a;1v1私教&#xff0c;终身辅导计划&#xff0c;帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~ 视频版可直接访问&#xff1a;https://www.bilibili.com/video/BV1ct421b7Q7/?vd_source391a8dc379e0da60c77490e3221f097a…

oauthlib,一个强大的 Python 身份校验库!

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站零基础入门的AI学习网站~。 目录 ​编辑 前言 什么是 OAuthLib&#xff1f; 安装 OAuthLib OAuthLib 的主要功能 OAuthLib 的用法 实现…

自己动手写编译器:使用 PDA 实现增强和属性语法的解析

在前面章节中我们了解了增强语法和属性语法&#xff0c;特别是看到了这两种语法的结合体&#xff0c;本节我们看看如何使用前面我们说过的自顶向下自动机来实现这两种语法结合体的解析&#xff0c;这里使用的方法也是成熟编译器常用的一种语法解析算法。 首先我们先给出上一节…

区块链金融科技:技术融合与挑战应对【文末送书-16】

文章目录 前言一.区块链与金融科技的融合&#xff1a;革新金融格局的技术之光1.1区块链技术简介1.2 区块链在金融科技中的应用 二.智能合约2.1 去中心化金融&#xff08;DeFi&#xff09;2.2区块链对金融科技的影响2.3数据安全性 三.区块链与金融科技【文末送书-16】3.1 粉丝福…

如何训练Ai把古诗《如梦令》描写的意境画出来?

常记溪亭日暮&#xff0c;沉醉不知归路。兴尽晚回舟&#xff0c;误入藕花深处。争渡&#xff0c;争渡&#xff0c;惊起一滩鸥鹭。 古诗《如梦令》以其优美的语言和丰富的意境给人留下深刻的印象。今天&#xff0c;我们将借助AI的力量&#xff0c;将这首诗的意境转化为视觉画面…

x86使用页表实现虚拟内存原理分析---使用代码分析

分页机制 这一部分在手册第四章 视频讲解可以看这一个课程 在不使用分页机制的时候, 我们看到的是物理内存, 物理内存有多大, 我们就可以使用多大的内存 使用内存分页机制, 我们就可以扩充访问的地址范围, 也可以实现权限的细分, 实际上就是实现虚拟内存, 将地址进行映射, 看到…

希尔排序算法

目录 ShellSort希尔排序 整体思路 图解分析 【1】预排序 单组排序 多组并排 【2】直接插入排序 关于gap取值 总代码实现 时间复杂度 ShellSort希尔排序 希尔排序法又称缩小增量法。 希尔排序法的基本思想是&#xff1a;先选定一个整数&#xff0c;把待排序文件中所有…

产品经理学习-产品运营《流程管理》

如何进行流程管理 信息可视化 甘特图-流程管理思维导图-方案讨论原型图-活动文档 明确责任制 分工明确&#xff0c;关键环境有主负责人通过时间倒推督促管理 沟通技巧 明确共同利益以结果激励做好信息同步 如何进行监控活动效果 监控活动的效果是要监控数据 活动每个环境的…

MySQL学习记录——십일 索引

文章目录 1、了解索引2、聚簇、非聚簇索引3、操作1、主键索引2、唯一键索引3、普通索引4、注意事项 4、全文索引 1、了解索引 MySQL服务器是在内存中的&#xff0c;所有数据库的CURD操作都是在内存中进行&#xff0c;索引也是如此。索引是用来提高性能的&#xff0c;它通过组织…

[嵌入式系统-16]:RT-Thread -2- 主要功能功能组件详解与API函数说明、API参考手册入口

目录 一、RT-Thread主要功能组件 二、内核组件 2.1 概述 2.2 API 三、设备驱动 3.1 概述 3.2 API 四、通信组件 4.1 概述 4.4 API 五、网络组件 5.1 概述 5.2 API 5.3 补充&#xff1a;MQTT协议 六、文件系统 6.1 概述 6.2 API 七、GUI 组件 7.1 概述 7.2 …

进程终止与进程等待

fork 函数 fork 函数是 Linux 中一个非常重要的函数&#xff0c;它的作用是从已存在的进程中创建一个新进程。这个新进程就是当前进程的子进程。 fork() 函数使用方法&#xff1a;它在头文件 #include <unistd.h> 中&#xff0c;函数原型为 pid_t fork(void); 用一个…

CMNet:Contrastive Magnification Network for Micro-Expression Recognition 阅读笔记

AAAI 2023的一篇文章&#xff0c;东南大学几位老师的工作&#xff0c;用于做微表情识别中的运动增强工作&#xff0c; 以下是阅读时记录的笔记。 摘要&#xff1a; However,existing magnification strategies tend to use the features offacial images that include not onl…

Minio通过Url直接访问附件

1、修改桶策略为public 2、http://locahost:9000/桶名/文件名即可 访问该文件&#xff0c;自己浏览 http://127.0.0.1:9000/netcore/netcore/9d4a526b-a477-46a3-90c7-a668354e3b46.png

C语言每日一题(59)左叶子之和

题目链接 力扣网404 左叶子之和 题目描述 给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 示例 1&#xff1a; 输入: root [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中&#xff0c;有两个左叶子&#xff0c;分别是 9 和 15&#xff0c;所以返回 2…

【C++航海王:追寻罗杰的编程之路】vector

目录 1 -> vector的介绍及使用 1.1 -> vector的介绍 1.2 -> vector的使用 1.2.1 -> vector的介绍 1.2.2 -> vector iterator的使用 1.2.3 -> vector空间增长问题 1.2.4 -> vector的增删查改 1.2.5 -> vector迭代器失效问题 2 -> vector的深…

K8s进阶之路-控制器无状态服务:

RC/RS/Deployment 控制器 deployment无状态&#xff08;最常用&#xff09;&#xff1a; nginx和Apache statefulset有状态&#xff1a; mysql和redis damonset初始化 job一次性任务 cronjob任务计划 1无状态&#xff1a;不会对本地环境产生依赖如&#xff1a;nginx和Apache …

Docker详解及使用

文章目录 为什么要用docker为什么会出现容器Docker 是什么容器是什么虚拟化是什么Docker 和 虚拟化的区别Docker 容器有几种在状态什么是仓库什么是镜像什么是容器仓库、镜像、容器的关系常用的 Docker 命令如何把主机的东西拷贝到容器内部如何让容器随着 Docker 服务启动而自动…