蓝桥杯基本操作和运算

embedded/2024/10/30 15:46:12/

文章目录

  • 1.基本运算
  • 2.循环--进制转换/最大公约数
    • 2.1进制转换
    • 2.2求解最大公约数
  • 3.数组与字符串
  • 4.常用的API
  • 5.快速读写模版

蓝桥杯基本操作和运算

10-22号正式开始准备蓝桥杯的比赛,准备参加这个大学B组的Java的赛项

1.基本运算

首先就是基本的输入输出:

  • system.out.print();-----进行不换行的输出
  • system.out.println();-----进行换行的输出(这个同样也是我们的IDEA里面的默认输出的方式,最常使用)
  • system.out.printf();--------进行格式化的输出,下面会有这个对应的题目进行说明

对于输入,我们使用的是Scanner进行的;

  • Scanner in = new Scanner(System.in);
  • int a=in.nextInt();-----读取到一般的整形的数据
  • double b=in.nextDouble();----读取到double类型的数据
  • long c = in.nextLong();—最不经常使用,如果读取的整形的数值比较大,可能会用到这个;
  • String str=in.next();----------读取字符的时候到了空位置就会停止读取
  • String str2=in.nextLine();--------一次就会读取一整行的操作,不会遇到空格就停止

下面的这个就是需要我们对于这个温度进行转换:我们读取的是一个整形的数据,这个时候乘上9/5的时候需要进行转换,因为如果直接写这个就会是除法操作,但是我们加上0之后,一个数据变成小数,这个进行的就是小数运算;

image-20241022091036408

下面的这个是使用我们的printf进行这个格式化输出的问题:我们的这个是需要在前面补上0(如果这个位数不够的情况下),因此我们使用这个printf进行格式化的输出,%02d:%02d就是进行这个时间的格式化输出;

最后的这个计算,因为我们是使用的这个nextInt进行读取的,因此这个时候需要进行转换,强制类型转换为这个double的,当然如果我们直接使用这个nextDouble进行读取,就不需要进行强制类型转换;

image-20241022091421677

2.循环–进制转换/最大公约数

2.1进制转换

下面的这个就是进制之间的转换:下面的这个是9进制转换为10进制的情况;

我们需要定义一个sum用来存储每一次计算之后的这个数据,最后我们是把这个sum进行打印输出即可;

这个数据是2022,我们要把这个(2022)这个9进制的转换为10进制的数据,这个时候需要对于这个数据的最低位取出来,分别进行这个90—91----9^2操作以此类推下去,直到这个剩下余数小于0才停止;

image-20241022094749234

2.2求解最大公约数

求解最大公约数:我们首先需要使用这个nextInt方法得到两个输入的数据,接着求的两个数据里面的最小值—我们可以使用三目运算符求解最小值,也可以使用这个math里面的这个min方法求解这个最小值,其中这个三目运算符我们自己也是可以封装出来一个方法;

如果这个输入的数据除以i都是没有余数的,这个时候我们就把这个数据进行输出即可(这个地方我们可以使用for循环进行判断,因为我们知道这个最大公约数一定会比这个输入的两个数据里面的最小值还要更小,因此我们可以从这个两个数据里面的最小值作为初始的数值,然后从这个min值开始不断地减减,一直到1位置,如果两个数据除以这个i都是0,就证明这个就是公约数,而且我们一旦遇到一个满足条件的,我们就会使用这个break关键字对于这个过程进行终止,这时候得到的这个公约数就是最大的公约数);

image-20241022095700488

3.数组与字符串

这个里面主要是对于这个数组的创建,数组的使用以及这个字符串的相关操作:求解字符串的长度,求解这个字符串的子串,对于这个字符串进行分割操作,以及计算这个对应字符的下标,全部转成大写等等一系列的操作;

我们下面的两个案例就是冒泡排序;

下面的这个代码可以划分为四个步骤:

1.初始化的部分:就是定义数组,初始化这个数组的大小;

2.赋值:对于这个数组里面的每一个元素,我们都需要使用这个nextInt方法进行赋值操作;

3.排序:使用冒泡的方法进行排序,这个时候如果需要的话,需要进行交换位置的操作;

4.使用for循环,对于这个冒泡排序之后的结果进行打印输出;

image-20241022104559395

4.常用的API

这个常用的API主要是我们的Math和这个Integer里面的一些方法:

parseInt(String s,int radix);

例如下面的这个情况:

String str1="1010";
int num1=Integer.parseInt(str1,2);
//这个就是把我们的二进制的这个字符串str1转换为我们的十进制的整数,并且把这个转换之后的结果进行打印输出String str2="ff";
int num2=Integer.parseInt(str2,16);
//这个就是把我们的这个16进制的字符串ff进行转换为十进制的整数并且打印输出;

toString方法—把这个整数转换为对应的进制的字符串进行表示:

int num=255;
String str1=Integer.toString(num,2);//转换为二进制的字符串
String str2=Integer.toString(num,8);//转换为八进制的字符串
String str3=Integer.toString(num,10);//转换为16进制的字符串

其他的就是这个Math里面的相关的函数,例如这个abs,min,pow之类的,这个地方就不演示了;

5.快速读写模版

快速读写就是我们输入的数据很多,如果我们还是使用这个scanner进行读取的操作,这个时候的效率就会降低,因此我们自己设计了一套快速读写的方法,提高多组输入的时候的读写效率;

import java.util.*;
import java.io.*;
//这个方法的效率高主要是因为原来的scanner和这个system需要到这个IO设备上面的文件上面里面去进行数据的读取,但是我们的这个是创建一个缓冲区,读取的时候一次性把这个文件里面的内容放到我们的缓冲区里面去,然后每一次进行裁剪数据,直接从缓冲区里面对于这个数据进行读取,因此这个可以提高效率;
//这个新定义的这个类的里面对应的方法和我们原来使用的方法的名字和功能都是一样的;public class Main
{//PrintWriter就是快速写的操作public static PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));public static Read in = new Read();public static void main(String[] args) throws IOException{// 写代码(下面的这个仅仅是一个案例,具体情况需要修改)int n=in.nextInt();System.out.println(n);int[] arr=new int[n];for(int i=0;i<n;i++){arr[i]=in.nextInt();}for(int i=0;i<n;i++){out.print(arr[i]);if(i<n-1){out.print(" ");}}out.close();}
}class Read // 自定义快速读入
{StringTokenizer st = new StringTokenizer("");//BufferedReader就是把这个IO设备里面的数据搞到我们的缓冲区里面去,然后进行裁剪BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));String next() throws IOException{while(!st.hasMoreTokens()){//bf.readLine()就是从缓冲区里面取出来一行数据,进行裁剪//StringTokenizer就是把这个缓冲区里面的字符串转换为我们想要的数据类型st = new StringTokenizer(bf.readLine());//加上while循环是为了解决多行输入的问题的}return st.nextToken();}String nextLine() throws IOException{return bf.readLine();}int nextInt() throws IOException{return Integer.parseInt(next());}long nextLong() throws IOException{return Long.parseLong(next());}double nextDouble() throws IOException{return Double.parseDouble(next());}
}

http://www.ppmy.cn/embedded/133645.html

相关文章

Dockfile打包带tdengine驱动的tomcat镜像基于官方tomcat容器

之前写过一篇&#xff1a;Dockfile打包带tdengine驱动的tomcat自定义镜像_如何创建一个包含tdengine客户端的docker镜像-CSDN博客 上面这篇是基于centos容器镜像制作的&#xff0c;这篇改用tomcat容器制作。 Dockfile内容如下 # 使用官方的 Tomcat 8 镜像作为基础镜像&#…

windows 驱动实例分析系列: NDIS 6.0的Filter 驱动改造(三)

数据包的发送 NDIS数据包的发送是一件非常麻烦的事情&#xff0c;当然&#xff0c;在应用层&#xff0c;使用socket库感觉不到这一点&#xff0c;但是在内核中&#xff0c;内核主要实现是的七层结构中的下面4层&#xff0c;并且Filter驱动和协议驱动不一样&#xff0c;它完全就…

XCode16.0 Command PhaseScriptExecution failed with a nonzero exit code 的错误

环境 : XCode 16.0 pod --version 1.15.2把ENABLE_USER_SCRIPT_SANDBOXING 设置为NO OK 如果pod的版本<1.14.3 试一试修改这里

Hexo提交部署命令与Git Bash Here控制终端中按下Ctrl+C无法中断hexo s的解决办法

一、hexo提交命令如下 hexo clean #清理缓存文件 hexo g #生成文件 hexo s #运行本地服务器 hexo d #推送博客源码到托管代码仓库所在的服务器二、Git Bash Here控制终端中按下CtrlC无法中断hexo s的解决方法 1、打开电脑CMD控制台&#xff1b; 2、复制以下命…

开发了一个成人学位英语助考微信小程序

微信小程序名称&#xff1a;石榴英语 全称&#xff1a;石榴英语真题助手 功能定位 北京成人学士学位英语辅助学习工具&#xff0c;包含记高频单词&#xff0c;高频词组&#xff0c;专项练习&#xff0c;模拟考试等功能。 开发背景 个人工作需要提高学习英文水平&#xff…

昇思25天学习打卡营第1天|快速入门

昇思25天学习打卡营第1天|快速入门 目录 昇思25天学习打卡营第1天|快速入门实操教程 一、MindSpore内容简介 主要特点&#xff1a; MindSpore的组成部分&#xff1a; 二、入门实操步骤 1. 安装必要的依赖包 2. 下载并处理数据集 3. 构建网络模型 4. 训练模型 5. 测试…

微信小程序如何实现地图轨迹回放?

要在Uni-app中实现微信小程序的地图轨迹回放功能&#xff0c;你可以按照以下步骤进行操作&#xff1a; 在Uni-app项目中引入地图组件&#xff1a;在页面中使用uni-app提供的map组件&#xff0c;可以使用uni.createMapContext方法获取地图上下文对象&#xff0c;以便后续操作地图…

搭建 python 连接 DM 环境

1&#xff09;先安装好 达梦数据库 安装数据库【docker】 语雀去官网申请下载下载链接&#xff1a;https://www.dam...https://www.yuque.com/heyyall/zwitgw/wx6khq9x6e3l55x5 安装数据库【window】 语雀官网下载https://eco.dameng.com/...https://www.yuque.com/heyyall…