蓝桥杯基本操作和运算

ops/2024/11/1 9:48:31/

文章目录

  • 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/ops/130099.html

相关文章

论文翻译 | PROMPTAGATOR : FEW-SHOT DENSE RETRIEVAL FROM 8 EXAMPLES

摘要 最近的信息检索研究主要集中在如何从一个任务&#xff08;通常有丰富的监督数据&#xff09;转移到其他各种监督有限的任务上&#xff0c;其隐含的假设是从一个任务可以泛化到所有其他任务。然而&#xff0c;这忽略了这样一个事实&#xff0c;即存在许多多样化和独特的检索…

redis详细教程(2.List教程)

List是一种可以存储多个有序字符串的数据类型&#xff0c;其中的元素按照顺序排列&#xff08;可以重复出现&#xff09;&#xff0c;可以通过数字索引来访问列表中的元素&#xff0c;索引可以从左到右或者从右到左。 Redis 列表可以通过两种方式实现&#xff1a;压缩列表&…

HCIA(ACL)

第七节 ACL&#xff1a;访问控制列表 访问控制----在路由器的入或者出的接口上&#xff0c;匹配流量&#xff0c;之后产生动作---允许或拒绝 定义感兴趣流量-----帮助其他软件抓流量 匹配规则&#xff1a; 至上而下&#xff0c;逐一匹配&#xff0c;上调匹配按照上条执行…

能通过Ping命令访问CentOS 9 Stream,但在使用Xshell连接

能通过Ping命令访问CentOS 9 Stream&#xff0c;但在使用Xshell进行SSH连接失败 1. **确认SSH服务状态**&#xff1a;2. **检查SSH配置**&#xff1a;要检查和设置PermitRootLogin选项&#xff0c;您需要编辑SSH配置文件/etc/ssh/sshd_config。以下是具体步骤&#xff1a;1. 打…

VUE3——readonly与shallowReadonly

1. readonly 用于创建一个ref或者reactive定义的响应式数据的深只读副本。 0.1 用法&#xff1a; const sum reactive(0); const readOnlyCopy readonly(sum); readOnlyCopy console.log(readOnlyCopy); // 输出 00.2 特点&#xff1a; 对象的所有嵌套属性都将变为只读&…

fetch 与 xmlHttpRequest 请求总结

文章目录 fetch 、XMLHttpRequest、ajax 简要介绍fetch 与 xmlHttpRequest 比较 fetch 、XMLHttpRequest、ajax 简要介绍 Fetch API 概述 Fetch是一种现代的JavaScript API&#xff0c;用于在浏览器中进行网络请求。它提供了一种更灵活、更强大的方式来获取资源&#xff0c;相…

[Nginx]快速入门

Nginx概述 介绍 Nginx是一款轻量级的web 服务器/ 反向代理服务器/ 电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上nginx的并发能力在同类型的网页服务器中表现较好 中国大陆使用nginx的网站有:百度、京东、新浪、网易、腾讯、…

【mysql】4-2. MySQL存储结构

MySQL存储结构 1 什么是表空间⽂件&#xff1f; 解答问题 表空间⽂件是⽤来存储表中数据的⽂件&#xff0c;表空间⽂件的⼤⼩由存储的数据多少决定&#xff0c;不同的表空间⽂件存储数据的种类也有所不同&#xff0c;在MySQL中表空间分为五类&#xff0c;包括&#xff1a;系统…