当前位置: 首页 > news >正文

【Java】分支结构习题

【Java】分支结构

文章目录

  • 【Java】分支结构
    • 题1 :数字9 出现的次数
    • 题2 :计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。
    • 题3 :猜数字
    • 题4 :牛客BC110 X图案
    • 题5 :输出一个整数的每一位
    • 题6 : 模拟三次密码输入
    • 题7:求整数的最大公约数
    • 题8 :获取一个二进制序列中的所有偶数位和奇数位,分别输出二进制序列

这篇博客主要讲解几道我认为比较有代表性关于分支结构的编程题。

下面让我们开始吧!

题1 :数字9 出现的次数

/*** 数字9 出现的次数* 编写程序数一下 1到 100 的所有整数中出现多少个数字9*/
public static void main(String[] args) {int count = 0;for (int i = 1; i <= 100; i++) {if(i % 10 == 9){count++;}if(i / 10 == 9){count++;}}System.out.println(count);}

这道题主要就是要明确个位的9怎么判断,十位的9怎么判断,另外99是两个9.

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

/*** 计算分数的值* 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。*/
public static void main(String[] args) {double sum = 0;int flag = 1;for (int i = 1; i <= 100; i++) {sum += 1.0 / i * flag;flag = -flag;}System.out.println(sum);
}

这道题主要是观察题目的规律,定义一个flag来实现正负的循环。

题3 :猜数字

/*** 实现猜数字游戏* 完成猜数字游戏   ,用户输入数字,判断该数字是大于,小于,还是等于随机生成的数字,等于的时候退出程序。*/
public static void main(String[] args) {Random random = new Random();Scanner sc = new Scanner(System.in);int guess = random.nextInt(100);while(true){System.out.println("请输入0-100的数字:>");int num = sc.nextInt();if(num < guess){System.out.println("猜小了");}else if(num > guess){System.out.println("猜大了");}else {System.out.println("猜对了!");break;}}sc.close();}

这道题前提是需要了解random的使用,其次的条件判断语句按正常逻辑编写即可。见以下文章:

Java生成随机数

题4 :牛客BC110 X图案

X形图案

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。
输入描述:
多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。
输出描述:
针对每行输入,输出用“*”组成的X形图案。输入:5输出:*   ** *** **   *
public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (scanner.hasNextInt()) {int n = scanner.nextInt();for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {if (i == j || i + j == n - 1) {System.out.print("*");}else {System.out.print(" ");}}System.out.print("\n");}break;}}

这道题我们可以知道X是一个对称图形,所以X形图案可以拆分成两根斜线,其中i == j 时输出星号,或者i==n-i-1时输出星号即可,其他情况皆输出空格。

重点就在于i == j || i + j == n - 1这段。

题5 :输出一个整数的每一位

/*** 输出一个整数的每一位* 输出一个整数的每一位,如:123的每一位是3,2,1*/
public static void main(String[] args) {Scanner sc = new Scanner(System.in);int num = sc.nextInt();while(num != 0){System.out.println(num%10);num/=10;}}

题6 : 模拟三次密码输入

/*** 编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,* 密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序*/
public static void main(String[] args) {Scanner sc = new Scanner(System.in);int count = 3;while (count != 0){System.out.println("请输入您的密码:>");String password = sc.nextLine();if(password.equals("123")){System.out.println("登陆成功!");break;}else {count--;System.out.println("请重新输入密码:> 还有"+count+"次机会");}}}

这道题逻辑其实很明确,我更想聊一聊的是String==equals的区别

  • ==:
    在比较对象时比较的是引用地址是否相同;
    在比较基本类型时比较的是其内容。
  • equals:
    比较的是内容,而不比较其引用。

见以下示例代码:

String s1 = new String("aaa");
String s2 = new String("aaa");
// s1与s2不是同一个对象
System.out.println(s1==s2);            //false
System.out.println(s1.equals(s2));    //true
String s1 = new String("aaa");
String s2 = s1;
//s1和s2是同一个地址的引用
System.out.println(s1==s2);            //true
System.out.println(s1.equals(s2));    //true
String s1 = "aaa";
String s2 = "aaa";
// s1与s2是类似类型
System.out.println(s1==s2);            //true
System.out.println(s1.equals(s2));    //true

针对第三示例代码,有以下想说的:

  • 直接等号赋值是放入内存池的,其它变量也可以引用;

  • new初始化分配内存空间,不可引用。

    String s=”a”String s=new String(“a”)是有本质上的区别的。

    前者是在字符串池里写入一个字符’a’,然后用s指向它;

    后者是在堆上创建一个内容为”a”的字符串对象。
    如果String缓冲池内不存在与其指定值相同的String对象,那么此时虚拟机将为此创建新的String对象,并存放在String缓冲池内。

    如果String缓冲池内存在与其指定值相同的String对象,那么此时虚拟机将不为此创建新的String对象,而直接返回已存在的String对象的引用。

题7:求整数的最大公约数

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

这里要介绍一种算法:辗转相除法

辗转相除法(也称为欧几里得算法)是一种用于求解两个整数的最大公约数的算法。它的步骤如下:

  1. 将两个整数 a 和 b 作为输入。
  2. 计算 a 除以 b 的余数,将结果保存为 r。
  3. 如果 r 等于 0,则 b 即为最大公约数,算法结束。
  4. 如果 r 不等于 0,则令 a 等于 b,b 等于 r,然后返回第2步。

这个过程会一直重复,直到余数为0。最后的 b 就是输入整数 a 和 b 的最大公约数。

public static void main(String[] args) {Scanner sc1 = new Scanner(System.in);Scanner sc2 = new Scanner(System.in);System.out.println("请输入两个数字:>");int a = sc1.nextInt();int b = sc2.nextInt();int c = a % b;while(c != 0){a = b;b = c;c =a % b ;}System.out.println(b);}

题8 :获取一个二进制序列中的所有偶数位和奇数位,分别输出二进制序列

在这里插入图片描述

  1. 提取所有的奇数位,如果该位是1,输出1,是0则输出0

  2. 以同样的方式提取偶数位置

检测num中某一位是0还是1的方式:

  1. 将num向右移动i位

  2. 将移完位之后的结果与1按位与,如果:

结果是0,则第i个比特位是0

结果是非0,则第i个比特位是1

public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();//0000 0010for (int i = 31; i >= 1 ; i-=2) {System.out.print(((n>>>i) & 1) + " " );}System.out.println();for (int i = 30; i >= 0 ; i-=2) {System.out.print(((n>>>i) & 1) + " " );}
}
//获取一个二进制序列中的所有偶数位和奇数位,分别输出二进制序列//eg:2的二进制序列位10 偶数位:1 奇数位:0//   4的二进制序列位100 偶数位:0 奇数位:1 0public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int n=scanner.nextInt();int []arr=new int[16];//用于存放奇数位,一个数32位,奇/偶数位最高16位int []brr=new int [16];//用于存放偶数位int i=0;int j=0;int k=0;for(i=1;i<=32;i++)//获取输入数的末位数字{if(i%2!=0)//奇数位{arr[j]=n&1;//比如n=1010,n&1//   1=0001// n&1=0000=0,获取到了n的末位j++;n>>>=1;//无符号右移}else{brr[k]=n&1;k++;n>>>=1;}}System.out.println("现打印奇数位:");for(i=0;i<16;i++){System.out.print(arr[15-i]+" ");}System.out.println();System.out.println("现打印偶数位:");for(i=0;i<16;i++){System.out.print(brr[15-i]+" ");}}

相关文章:

【Java】分支结构习题

【Java】分支结构 文章目录 【Java】分支结构题1 &#xff1a;数字9 出现的次数题2 &#xff1a;计算1/1-1/21/3-1/41/5 …… 1/99 - 1/100 的值。题3 &#xff1a;猜数字题4 &#xff1a;牛客BC110 X图案题5 &#xff1a;输出一个整数的每一位题6 &#xff1a; 模拟三次密码输…...

删除主表 子表外键没有索引的性能优化

整个表147M&#xff0c;执行时一个CPU耗尽&#xff0c; buffer gets 超过1个G&#xff0c; 启用并行也没有用 今天开发的同事问有个表上的数据为什么删不掉&#xff1f;我看了一下&#xff0c;也就不到100000条数据&#xff0c;表上有外键&#xff0c;等了5分钟hang在那里&…...

面向切面编程AOP

面向切面编程简介 IoC使软件组件松耦合。AOP让你能够捕捉系统中经常使用的功能&#xff0c;把它转化成组件。 AOP&#xff08;Aspect Oriented Programming&#xff09;&#xff1a;面向切面编程&#xff0c;面向方面编程。&#xff08;AOP是一种编程技术&#xff09; AOP是对…...

大学生活题解

样例输入&#xff1a; 3 .xA ... Bx.样例输出&#xff1a; 6思路分析&#xff1a; 这道题只需要在正常的广搜模板上多维护一个— —方向&#xff0c;如果当前改变方向&#xff0c;就坐标不变&#xff0c;方向变&#xff0c;步数加一&#xff1b;否则坐标变&#xff0c;方向不…...

flask的配置项

flask的配置项 为了使 Flask 应用程序正常运行&#xff0c;有多种配置选项需要考虑。下面是一些基本的 Flask 配置选项&#xff1a; DEBUG: 这个配置项决定 Flask 是否应该在调试模式下运行。如果这个值被设为 True&#xff0c;Flask 将会提供更详细的错误信息&#xff0c;并…...

暑假刷题第16天--7/28

143. 最大异或对 - AcWing题库&#xff08;字典树&#xff09; #include<iostream> using namespace std; const int N100005; int a[N]; int nex[10000007][2],cnt; void insert(int x){int p0;for(int i30;i>0;i--){int ux>>i&1;if(!nex[p][u])nex[p][u]…...

vue vite ts electron ipc arm64

初始化 npm init vue # 全选 yes npm i # 进入项目目录后使用 npm install electron electron-builder -D npm install commander -D # 额外组件增加文件 新建 plugins 文件夹 src/background.ts 属于主进程 ipcMain.on、ipcMain.handle 都用于主进程监听 ipc&#xff0c;…...

数据分析-关于指标和指标体系

一、电商指标体系 二、指标体系的作用 三、统计学中基本的分析手段...

Vue+ElementUI操作确认框及提示框的使用

在进行数据增删改查操作中为保证用户的使用体验&#xff0c;通常需要显示相关操作的确认信息以及操作结果的通知信息。文章以数据的下载和删除提示为例进行了简要实现&#xff0c;点击下载以及删除按钮&#xff0c;会出现对相关信息的提示&#xff0c;操作结果如下所示。 点击…...

宋浩线性代数笔记(二)矩阵及其性质

更新线性代数第二章——矩阵&#xff0c;本章为线代学科最核心的一章&#xff0c;知识点多而杂碎&#xff0c;务必仔细学习。 重难点在于&#xff1a; 1.矩阵的乘法运算 2.逆矩阵、伴随矩阵的求解 3.矩阵的初等变换 4.矩阵的秩 &#xff08;去年写的字&#xff0c;属实有点ugl…...

Linux之Shell 编程详解(二)

第 9 章 正则表达式入门 正则表达式使用单个字符串来描述、匹配一系列符合某个语法规则的字符串。在很多文 本编辑器里&#xff0c;正则表达式通常被用来检索、替换那些符合某个模式的文本。在 Linux 中&#xff0c;grep&#xff0c; sed&#xff0c;awk 等文本处理工具都支持…...

TCP网络通信编程之字节流

目录 【TCP字节流编程】 // 网络编程中&#xff0c;一定是server端先运行 【案例1】 【思路分析】 【客户端代码】 【服务端代码】 【结果展示】 【案例2】 【题目描述】 【注意事项】 【服务端代码】 【客户端代码】 【代码结果】 【TCP字节流编程】 // 网络编程中&a…...

【暑期每日一练】 day8

目录 选择题 &#xff08;1&#xff09; 解析&#xff1a; &#xff08;2&#xff09; 解析&#xff1a; &#xff08;3&#xff09; 解析&#xff1a; &#xff08;4&#xff09; 解析&#xff1a; &#xff08;5&#xff09; 解析&#xff1a; 编程题 题一 描述…...

maven的基本学习

maven https://www.bilibili.com/video/BV14j411S76G?p1&vd_source5c648979fd92a0f7ba8de0cde4f02a6e 1.简介 1.1介绍 Maven翻译为"专家"、“内行”&#xff0c;是Apache下的一个纯Java开发的开源项目。基于项目对象模型(缩写:POM)概念&#xff0c;Maven利用一…...

疲劳驾驶检测和识别2:Pytorch实现疲劳驾驶检测和识别(含疲劳驾驶数据集和训练代码)

疲劳驾驶检测和识别2&#xff1a;Pytorch实现疲劳驾驶检测和识别(含疲劳驾驶数据集和训练代码) 目录 疲劳驾驶检测和识别2&#xff1a;Pytorch实现疲劳驾驶检测和识别(含疲劳驾驶数据集和训练代码) 1.疲劳驾驶检测和识别方法 2.疲劳驾驶数据集 &#xff08;1&#xff09;疲…...

安防监控视频汇聚EasyCVR修改录像计划等待时间较长,是什么原因?

安防监控视频EasyCVR视频融合汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检…...

EXCEL数据自动web网页查询----高效工作,做个监工

目的 自动将excel将数据填充到web网页&#xff0c;将反馈的数据粘贴到excel表 准备 24KB的鼠标连点器软件&#xff08;文末附链接&#xff09;、Excel 宏模块 优势 不需要编程、web验证、爬虫等风险提示。轻量、稳定、安全。 缺点 效率没那么快 演示 宏环境 ht…...

visual studio 2022换背景遇到的问题

如果要自定义背景图&#xff0c;则可以下载ClaudialIDE 1.在拓展->点击拓展管理->右上角搜索background->点击下载ClaudialIDE->加载完之后需要关闭vs界面进行下载&#xff0c;下载失败&#xff0c;弹出“由于出现以下错误 无法安装一个或多个扩展”。 解决&#x…...

MODBUS-TCP转Ethernet IP 网关连接空压机 配置案例

本案例是工业现场应用捷米特JM-EIP-TCP的Ethernet/IP转Modbus-TCP网关连接欧姆龙PLC与空压机的配置案例。使用设备&#xff1a;欧姆龙PLC&#xff0c;捷米特JM-EIP-TCP网关&#xff0c; ETHERNET/IP 的电气连接 ETHERNET/IP 采用标准的 T568B 接法&#xff0c;支持直连和交叉接…...

Go重写Redis中间件 - GO实现TCP服务器

GO实现TCP服务器 首先新建一个项目go-redis,将config和lib包放到项目中,config.go用来解析配置,比如端口、功能、DB数;lib包有两个文件夹,分别是logger和sync,其中logger.go是一个日志框架,sync包中的bool.go包装了atomic操作,因为atomic原生没有bool类型,所以将uint…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...