【Java】循环语句练习

文章目录

  • 1. 计算5的阶乘
  • 2. 计算 1! + 2! + 3! + 4! + 5!
  • 3. 数字9 出现的次数
  • 4. 判定素数
  • 5. 求1-100之间的素数
  • 6. 求2个整数的最大公约数
  • 7. 计算分数的值
  • 8. 模拟登陆
  • 9. 输出乘法口诀表
  • 10. 求出0~999之间的所有“水仙花数”并输出
  • 11. 猜数字游戏🙈

1. 计算5的阶乘

n! (阶乘),一个正整数的阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!,即n!=1×2×3×…×(n-1)×n。5! = 1×2×3×4x5。

  • while循环实现
public class Test {//计算5的阶乘public static void main(String[] args) {int n = 1;int ret = 1;while(n<=5){ret *= n;n++;}System.out.println(ret);}
}
  • for循环实现
public class Test {//计算5的阶乘public static void main(String[] args) {int ret = 1;for (int n = 1;n <= 5;n++){ret *= n;}System.out.println(ret);}
}

在这里插入图片描述

我们上一题学习了n阶乘的计算,这一题计算阶乘的和。阶乘的求和就是在计算阶乘的基础上再加一层循环。

2. 计算 1! + 2! + 3! + 4! + 5!

  • while 循环实现
public class Test {//计算 1! + 2! + 3! + 4! + 5!public static void main(String[] args) {int i = 1;int sum = 0;//外层循环负责求阶乘的和while(i <= 5){int n = 1;int ret = 1;//内层循环负责完成求阶乘的细节while (n <= i){ret *= n;n++;}sum += ret;i++;}System.out.println("sum="+sum);}
}
  • for 循环实现
public class Test {//计算 1! + 2! + 3! + 4! + 5!public static void main(String[] args) {int sum = 0;for (int i = 1;i <= 5;i++){int ret = 1;for(int n = 1;n <= i;n++){ret *= n;}sum += ret;}System.out.println("sum="+sum);}
}

在这里插入图片描述

3. 数字9 出现的次数

编写程序数一下 1到 100 的所有整数中出现多少个数字9
个位数为9的数字有9,19,29……99;个位数判断为 i % 10 == 9;
十位数为9的数字有91,92,93……99;十位数判断为 i % 10 == 9。
其中99出现了两次

public class Test {public static void main(String[] args) {int count = 0;for(int i = 0;i <= 100;i++){if(i % 10 == 9){count++;}if(i / 10 == 9){count++;}}System.out.println(count);}
}

在这里插入图片描述

4. 判定素数

给定一个数字,判定一个数字是否是素数。
素数是只能被 1 和它本身整除的数。也就是说能被 2 到 n-1 整除的数都不是素数。

import java.util.Scanner;public class Test {//判断一个数是不是素数public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int i = 2;for (i = 2;i < n ; i++) {if(i % n == 0){System.out.println(i+"不是素数");}}if(i == n){System.out.println(i+"是素数");}}
}

在这里插入图片描述

5. 求1-100之间的素数

上一题我们是从键盘输入一个数,判断是否为素数,而这一题则是在上一题的基础上从键盘输入1-100的数,判断这些数中有哪些数是素数。

public class Test {public static void main(String[] args) {//打印1-100之间的素数Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();for(int k = 1;k <= n;k++){int i = 2;for (i = 2;i < n ; i++) {if(k % i == 0){break;}}if(i == k){System.out.println(k+"是素数");}}}
}
  • 优化1
public class Test {//k = a * b//16 = 1 * 16//16 = 2 * 8//16 = 4 * 4//其中一定会有一个乘数小于k/2,所以我们将判断条件改为i <= k/2效率则更高public static void main(String[] args) {//打印1-100之间的素数Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();for(int k = 1;k <= n;k++){int i = 2;for (i = 2;i <= k/2 ; i++) {if(k % i == 0){break;}}if(i >k/2){System.out.println(k+"是素数");}}}
}
  • 优化2
public class Test {//k = a * b//16 = 1 * 16//16 = 2 * 8//16 = 4 * 4//我们会发现一定会有一个值<=根号k//根号在java中需要调用Math.sqrt(k)public static void main(String[] args) {//打印1-100之间的素数Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();for(int k = 1;k <= n;k++){int i = 2;for (i = 2;i <= Math.sqrt(k) ; i++) {if(k % i == 0){break;}}if(i > Math.sqrt(k)){System.out.println(k+"是素数");}}}
}

在这里插入图片描述

6. 求2个整数的最大公约数

给定两个数,求这两个数的最大公约数
例如:
输入:20 40
输出:20

public class Test {//辗转相除法求最大公约数public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int a = scanner.nextInt();int b = scanner.nextInt();int tmp = a % b;while(tmp != 0){a = b;b = tmp;tmp = a % b;}System.out.println(b);}
}

在这里插入图片描述

7. 计算分数的值

计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。

public class Test {public static void main(String[] args) {double sum = 0;int flg = 1;for (int i = 1; i <= 100 ; i++) {sum = sum + 1.0/i * flg;flg = -flg;//正负交替}System.out.println(sum);}
}

在这里插入图片描述

8. 模拟登陆

编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序 。

字符串的比较不可以使用 == 而需要使用到 equals 库方法,equals方法是由 password 点出来的,password 是一个变量能点出一个方法是因为 password 是 string 类型的。

public class Test {//模拟登录public static void main(String[] args) {Scanner in = new Scanner(System.in);int count = 3;while (count != 0){System.out.println("请输入你的密码,你还有 "+ count +" 次机会!");String password = in.nextLine();if(password.equals("1234")){System.out.println("登录成功!");break;}else{System.out.println("密码错误!");count--;}}}
}

在这里插入图片描述

9. 输出乘法口诀表

输出n*n的乘法口诀表,n由用户输入。

public class Test {//九九乘法表public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();for (int i = 1; i <= n; i++) {for (int j = 1; j <= i; j++) {System.out.print(j+"*"+ i +" = " +j*i+" ");}System.out.println();}}
}

在这里插入图片描述

10. 求出0~999之间的所有“水仙花数”并输出

(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数
本身,如:153=1^3+5^3+3^3 ,则153是一个“水仙花数”。)
一位自幂数:独身数
三位自幂数:水仙花数
三位的水仙花数共有4个:153,370,371,407。

public class Test {//水仙花数//153 = 1^3 + 5^3 + 3^3public static void main(String[] args) {for (int i = 0; i < 999; i++) {int count = 0;//计算当前i 有几位数int tmp = i;while (tmp != 0) {count++;tmp = tmp / 10;}//count的值 是多少已经计算完成   i还是没有变的//计算i[tmp]的每一位tmp = i;int sum = 0;while (tmp != 0) {sum += Math.pow(tmp%10,count);tmp /= 10;}if(sum == i) {System.out.println(i);}}}
}

在这里插入图片描述
在这里插入图片描述

11. 猜数字游戏🙈

游戏规则:
系统自动生成一个随机整数(1-100), 然后由用户输入一个猜测的数字. 如果输入的数字比该随机数小, 提示 “猜小了”, 如果输入的数字比该随机数大, 提示 “猜大了” , 如果输入的数字和随机数相等, 则提示 “猜对了” 。

import java.util.Random;
import java.util.Scanner;
public class Test {//猜数字游戏public static void main(String[] args) {Random random = new Random();int randNum = random.nextInt(100);//[0,100)Scanner scanner = new Scanner(System.in);while (true){System.out.println("请输入你要猜的数字: ");int num = scanner.nextInt();if(num > randNum){System.out.println("猜大了!");}else if (num == randNum){System.out.println("猜对了!");break;}else{System.out.println("猜小了!");}}}
}

浅玩一下吧
在这里插入图片描述

本章到这里就结束啦,如果有哪里写的不好的地方,请指正。
如果觉得不错并且对你有帮助的话请给个三连支持一下吧!
Fighting!!!✊

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

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

相关文章

Linux系统编程 day05 进程控制

Linux系统编程 day05 进程控制 1. 进程相关概念2. 创建进程3. exec函数族4. 进程回收 1. 进程相关概念 程序就是编译好的二进制文件&#xff0c;在磁盘上&#xff0c;占用磁盘空间。程序是一个静态的概念。进程即使启动了的程序&#xff0c;进程会占用系统资源&#xff0c;如内…

FO-like Transformation

参考文献&#xff1a; [RS91] Rackoff C, Simon D R. Non-interactive zero-knowledge proof of knowledge and chosen ciphertext attack[C]//Annual international cryptology conference. Berlin, Heidelberg: Springer Berlin Heidelberg, 1991: 433-444.[BR93] Bellare M…

软件介绍01- koodo Reader支持所有电脑平台!

1 软件简介 Koodo Reader软件是一款阅读器&#xff0c;可以阅读各种格式的文档。用来代替kindle。界面简洁&#xff0c;好看&#xff0c;阅读功能强大&#xff0c;而且可以多设备同步。 因为开源&#xff0c;所以免费。而且支持所有电脑平台&#xff01; 支持格式&#xff1a…

Android修行手册-ViewPager定制页面切换以及实现原理剖析

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

kafka的设计原理

文章目录 1 Kafka简介2 Kafka的架构2.1 Kafka 一些重要概念2.2 工作流程2.3 副本原理2.4 分区和主题的关系2.5 生产者2.5.1 分区可以水平扩展2.5.2 分区策略 2.6 消费者2.6.1 消费方式2.6.2 分区分配策略 2.7 数据可靠性保证2.7.1 副本数据同步策略2.7.2 ACK 应答机制2.7.3 可靠…

Java抽象类和接口(1)

&#x1f435;本篇文章将对抽象类和接口相关知识进行讲解 一、抽象类 先来看下面的代码&#xff1a; class Shape {public void draw() {System.out.println("画");} } class Cycle extends Shape {public void draw() {System.out.println("圆形");} } …

开发知识点-ArkTS-鸿蒙开发-Typescript

Typescript IED IED https://developer.harmonyos.com/cn/develop/deveco-studio/#download

打开CMD的六种方法,CMD快捷键,CMD命令大全及详解

目录 前言1. winR快捷键2、通过文本文档创建&#xff1b;3、通过C盘中的cmd.exe文件打开&#xff1b;4、创建快捷方式&#xff1b;5、通过PowerShell打开&#xff1b;6、通过文件夹导航栏打开&#xff1b; 前言 自己的电脑win键失灵了&#xff0c;想通过winR来调出cmd&#xff…

【Linux基础】Linux常见指令总结及周边小知识

前言 Linux系统编程的学习我们将要开始了&#xff0c;学习它我们不得不谈谈它的版本发布是怎样的&#xff0c;谈它的版本发布就不得不说说unix。下面是unix发展史是我在百度百科了解的 Unix发展史 UNIX系统是一个分时系统。最早的UNIX系统于1970年问世。此前&#xff0c;只有…

Doris单机部署——2.0.1.1版本

目录 一、前期准备工作 1.设置系统最大文件打开句柄数 2.时钟同步 3.关闭每台机器的交换分区 4.下载安装包 二、单节点部署安装Doris (一)安装fe 1.解压改名 2.修改配置文件 3.创建元数据目录 4.启动fe 5.访问fe的webUI (二)安装be 1.进入be目录下&#xff0c;修…

Leetcode—35.搜索插入位置【简单】

2023每日刷题&#xff08;四十&#xff09; Leetcode—35.搜索插入位置 实现代码 int lower_bound(int* arr, int numsSize, int tar) {int left 0, right numsSize;int mid;// 左闭右开[left, right)while(left < right) {mid left (right - left) / 2;if(arr[mid] &…

Cadence Vmanager vsif文件编写指南(持续更新...)

目录 1.NTF格式介绍 1.1.1 {属性&#xff1a;值}定义 1.1.2类别 1.1.3语法 2.vsif文件中有效的container 2.1 session {…} 1.NTF格式介绍 Cadence的Vmanager工具采用vsif类型的文件作为regression的输入文件&#xff0c;采用vplanx/csv类型的文件作为vplan的输入文件&am…

BC77 简单计算器(牛客)

#include <stdio.h> int main() {double a, b, d;//用来接收浮点数char c;//用来接受符号scanf("%lf %c %lf", &a, &c, &b);if (c || c - || c * || c /)//判断输入的运算符号不包括在&#xff08;、-、*、/&#xff09;范围内{switch (c)//根…

Kotlin应用——使用kt进行web开发 使用h2database进行初始化数据库 mybatis-plus使用

Kotlin 是一门现代但已成熟的编程语言&#xff0c;旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作&#xff0c;并提供了多种方式在多个平台间复用代码&#xff0c;以实现高效编程。 kt入门的合集文章如下&#xff1a; Kotlin学习——kt入门合集博客 &…

P16 C++构造函数

目录 前言 01 什么是构造函数呢&#xff1f; 02 非构造函数初始化变量 03 构造函数初始化变量 04 带参数的构造函数。 最后的话 前言 我们继续学习 C 的面向对象编程&#xff0c;本章主要是讲其中的 构造函数。 01 什么是构造函数呢&#xff1f; 构造函数基本上是一种特…

tinyViT论文笔记

论文&#xff1a;https://arxiv.org/abs/2207.10666 GitHub&#xff1a;https://github.com/microsoft/Cream/tree/main/TinyViT 摘要 在计算机视觉任务中&#xff0c;视觉ViT由于其优秀的模型能力已经引起了极大关注。但是&#xff0c;由于大多数ViT模型的参数量巨大&#x…

MetaObject-BeanWrapper-MetaClass-Reflector的关系

MetaObject、BeanWrapper、MetaClass、Reflector之间是通过装饰器模式逐层进行装饰的。其中MetaObject、BeanWrapper是操作对象&#xff1b;MetaClass、Reflector是操作Class ObjectWrapper类结构图 BaseWrapper是对BeanWrapper、MapWrapper公共方法的提取及类图的优化&#…

线程的创建方式

作者简介&#xff1a; zoro-1&#xff0c;目前大二&#xff0c;正在学习Java&#xff0c;数据结构&#xff0c;mysql&#xff0c;javaee等 作者主页&#xff1a; zoro-1的主页 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f496; 线程的创建方…

知识点小总结

‘Integer(int)‘ 已经过时了 https://blog.csdn.net/qq_43116031/article/details/127793512 解决Java中的“找不到符号“错误 解决Java中的“找不到符号“错误_java: 找不到符号_很酷的站长的博客-CSDN博客 可右键打开 错误: 编码 UTF-8 的不可映射字符 错误: 编码 UTF-8 …

Less的函数的介绍

文章目录 前言描述style.less输出后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;Sass和Less &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错误&#xff0c;…