HNU-Java程序设计基础训练-2023

2024-01-02 00:12

本文主要是介绍HNU-Java程序设计基础训练-2023,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.DNA序列(Java)

【问题描述】 

一个DNA序列由A/C/G/T四个字母的排列组合组成。G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的GC-Ratio可能是基因的起始点。

给定一个很长的DNA序列,以及要求的最小子序列长度,研究人员经常会需要在其中找出GC-Ratio最高的子序列。

【输入形式】输入一个string型基因序列,和int型子串的长度

【输出形式】找出GC比例最高的子串,如果有多个输出第一个的子串

【样例输入】AACTGTGCACGACCTGA 5

【样例输出】GCACG

import java.util.*;public class Main {public static void main(String[] args) {Scanner input=new Scanner(System.in);String str= input.next();int n=input.nextInt();int num=0;int index=0;for (int i = 0; i < str.length()-n; i++) {int m=0;for (int j = i; j <i+n ; j++) {if (str.charAt(j)=='C'||str.charAt(j)=='G'){m++;}}if (m>num){num=m;index=i;}}System.out.println(str.substring(index,index+n));}}

2.求近似数(JAVA)

【问题描述】

写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。

【输入形式】

输入一个正浮点数值

【输出形式】

输出该数值的近似整数值

【样例输入】

5.5

【样例输出】

6

import java.util.*;public class Main {public static void main(String[] args) {Scanner input=new Scanner(System.in);float num=input.nextFloat();System.out.println(getint(num));}public static int getint(float n){int a=(int) n;if ((n-a)>=0.5){a+=1;}return a;}}

3. 密码检查(JAVA)

【问题描述】

开发一个密码检查软件,密码要求:

  1. 长度超过8位

  2. 包括大小写字母.数字.其它符号,以上四种至少三种

  3. 不能有相同长度大于或等于2的子串重复

【输入形式】

一组或多组长度超过2的子符串。每组占一行

【输出形式】

如果符合要求输出:OK,否则输出NG

【样例输入】

021Abc9000

021Abc9Abc1

021ABC9000

021$bc9000
【样例输出】

OK

NG

NG

OK

import java.util.*;public class Main {public static void main(String[] args) {Scanner input=new Scanner(System.in);while (input.hasNext()){String str=input.next();int l=str.length();if (l<=8){System.out.println("NG");continue;}char[] chars = str.toCharArray();int countadz = 0;int countAdZ = 0;int count0d9 = 0;int countOthers = 0;for (int i = 0; i < l; i++) {if (Character.isDigit(chars[i])) count0d9=1;if (Character.isUpperCase(chars[i])) countAdZ=1;if (Character.isLowerCase(chars[i])) countadz=1;if ((Character.isLowerCase(chars[i])==false)&&(Character.isUpperCase(chars[i])==false)&&(Character.isDigit(chars[i])==false)) countOthers=1;}if (count0d9+countAdZ+countadz+countOthers<3) {System.out.println("NG") ;continue;}int flag=0;for (int i = 0; i < l - 2; i++) {String sub = str.substring(i, i+2);if (str.substring(i+2,l).contains(sub)) {flag=1;}}if (flag==1) {System.out.println("NG");}else {System.out.println("OK");}}}}

4. 选美比赛(Java)

【问题描述】在选美大奖赛的半决赛现场,有n名选手(2<n<100)参加比赛。比赛结束时,要在现场按照选手的出场顺序宣布最后名次,获得相同分数的选手具有相同的名次,名次连续编号,不用考虑同名次的选手人数。如: </div> <div> 选手数量: 7 选手得分: 5,3,4,7,3,5,6宣布名次: 3,5,4,1,5,3,2 请编程帮助大奖赛组委会完成半决赛的评分排名工作。

【输入形式】选手数量:7 选手得分:5;3;4;7;3;5;6

【输出形式】选手的排名:3 5 4 1 5 3 2

【样例输入】7 5 3 4 7 3 5 6

【样例输出】3 5 4 1 5 3 2 

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int[] arr=new int[n];int[] copy=new int[n]; //去重数组for(int i=0;i<n;i++){arr[i]=sc.nextInt();copy[i]=arr[i];}for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){if(arr[i]==copy[j]){copy[j]=0; //置为0 ,去除重复元素}}}for(int i=0;i<n;i++){int tem=1;for(int j=0;j<n;j++){if(arr[i]<copy[j]){ //判断有几个比他大tem++;}}System.out.print(tem+" ");}}
}
5. 情报加密(JAVA)

【问题描述】

在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别。我们给出一种最简的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,则可得到一个简单的加密字符串。

【输入形式】

可能有多组测试数据。每组测试数据的第一行是字符串的数目n,其余n行每行一个字符串,每个字符串长度小于80个字符。

【输出形式】

对于每组数据,输出每行字符串的加密字符串。

【样例输入】

1

Hello! How are you!
【样例输出】

Ifmmp! Ipx bsf zpv!

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();sc.nextLine();for (int i = 0; i < n; i++) {char[] arr=sc.nextLine().toCharArray();for(int j=0;j<arr.length;j++){if(arr[j]=='z'){arr[j]='a';}else if(arr[j]=='Z'){arr[j]='A'; //特殊情况判断}else if((arr[j]>='a' && arr[j]<='z')||(arr[j]>='A' && arr[j]<='Z')){arr[j]+=1; //确保是字母,然后后移 //字符与数字相加,会先将字符转换成ASCII然后相加}}System.out.println(arr);}}
}
6. 骰子问题旋转(java)

【问题描述】 

骰子是个立方体每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6,用123456表示这个状态。放置在平面上,用L表示向左翻转一次,用R表示向右翻转一次,用F表示向前翻转一次,用B表示向后翻转一次,用A表示逆时针旋转90度,用C表示顺时针旋转90度,现从初始状态开始,根据输入的动作序列,计算得到最终的状态。

【输入形式】输入只包含LRFBAC的字母序列,最大长度为50,可重复

【输出形式】输出经过一系列操作后的序列  注:按左右前后上下顺序输出

【样例输入】LB

【样例输出】5 6 1 2 3 4

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);char[] arr = sc.nextLine().toCharArray(); //字符数组int[] now = {1, 2, 3, 4, 5, 6};  // 当前状态数组for (int i = 0; i < arr.length; i++) {if (arr[i] == 'C') {int t1=now[0];  //列出所有情况now[0]=now[2];now[2]=now[1];now[1]=now[3];now[3]=t1;}else if(arr[i]=='A'){int t1=now[0];now[0]=now[3];now[3]=now[1];now[1]=now[2];now[2]=t1;}else if(arr[i]=='F'){int t1=now[2];now[2]=now[4];now[4]=now[3];now[3]=now[5];now[5]=t1;}else if(arr[i]=='B'){int t1=now[2];now[2]=now[5];now[5]=now[3];now[3]=now[4];now[4]=t1;}else if(arr[i]=='L'){int t1=now[4];now[4]=now[1];now[1]=now[5];now[5]=now[0];now[0]=t1;}else if(arr[i]=='R'){int t1=now[4];now[4]=now[0];now[0]=now[5];now[5]=now[1];now[1]=t1;}}for(int i=0;i<6;i++){System.out.print(now[i]+" "); //输出状态}}
}

这篇关于HNU-Java程序设计基础训练-2023的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/560868

相关文章

java实现延迟/超时/定时问题

《java实现延迟/超时/定时问题》:本文主要介绍java实现延迟/超时/定时问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java实现延迟/超时/定时java 每间隔5秒执行一次,一共执行5次然后结束scheduleAtFixedRate 和 schedu

Java Optional避免空指针异常的实现

《JavaOptional避免空指针异常的实现》空指针异常一直是困扰开发者的常见问题之一,本文主要介绍了JavaOptional避免空指针异常的实现,帮助开发者编写更健壮、可读性更高的代码,减少因... 目录一、Optional 概述二、Optional 的创建三、Optional 的常用方法四、Optio

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

springboot filter实现请求响应全链路拦截

《springbootfilter实现请求响应全链路拦截》这篇文章主要为大家详细介绍了SpringBoot如何结合Filter同时拦截请求和响应,从而实现​​日志采集自动化,感兴趣的小伙伴可以跟随小... 目录一、为什么你需要这个过滤器?​​​二、核心实现:一个Filter搞定双向数据流​​​​三、完整代码

SpringBoot利用@Validated注解优雅实现参数校验

《SpringBoot利用@Validated注解优雅实现参数校验》在开发Web应用时,用户输入的合法性校验是保障系统稳定性的基础,​SpringBoot的@Validated注解提供了一种更优雅的解... 目录​一、为什么需要参数校验二、Validated 的核心用法​1. 基础校验2. php分组校验3

Java Predicate接口定义详解

《JavaPredicate接口定义详解》Predicate是Java中的一个函数式接口,它代表一个判断逻辑,接收一个输入参数,返回一个布尔值,:本文主要介绍JavaPredicate接口的定义... 目录Java Predicate接口Java lamda表达式 Predicate<T>、BiFuncti

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Spring Security方法级安全控制@PreAuthorize注解的灵活运用小结

《SpringSecurity方法级安全控制@PreAuthorize注解的灵活运用小结》本文将带着大家讲解@PreAuthorize注解的核心原理、SpEL表达式机制,并通过的示例代码演示如... 目录1. 前言2. @PreAuthorize 注解简介3. @PreAuthorize 核心原理解析拦截与