蓝桥杯之全部基础练习答案及思路(java)

本文介绍了蓝桥杯比赛中的基础练习题,包括数列排序、十六进制与八进制转换、进制转换、字符串操作等。详细解析了每个问题的思路,并提供了Java代码实现,涉及到了Java中数值转换、字符串处理和数据类型的使用。
摘要由CSDN通过智能技术生成

基础练习

第一题 数列排序

资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式
输出一行,按从小到大的顺序输出排序后的数列。
样例输入
5
8 3 6 4 9
样例输出
3 4 6 8 9

思路:对于数列排序在java中有对应的Arrays包,里面提供对数列升序排序的方法,也就是Arrays.sort()函数,

import java.util.Arrays;
import java.util.Scanner;
public class Main{
   
	public static void main(String[] args) {
   
		Scanner input=new Scanner(System.in);
		int n=input.nextInt();
		int[] a=new int[n];
		for(int i=0;i<n;i++) {
   
			a[i]=input.nextInt();
		}
		Arrays.sort(a);
		for(int i=0;i<n;i++) {
   
			System.out.print(a[i]+" ");
		}
	}
}

第二题 十六进制转八进制

资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0-9、大写字母A-F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
【注意】
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
【提示】
先将十六进制数转换成某进制数,再由某进制数转换成八进制。

最开始看到进制转换问题,我就以为是一个简单的问题,我相信大多人都和我一样,但将我在eclipse上实现的代码放入蓝桥杯练习系统中提交,结果是得了0分。题目中有一个很关键的话,每个十六进制长度不超过100000,这个说如果用int或long解决都是不够的,因为她们的位数远没有那么多,于是只能使用字符串型。字符串型不仅能连接字符而且还有许多重要的方法。

思路:题目中提示:先将十六进制转化为某进制,再由某进制数转化为八进制。所以那个中间进制是连接十六进制和八进制的桥梁,那就是二进制。先把十六进制转化为二进制,每位十六进制数正好转化为四个二进制位数,再把二进制数转为八进制数,每三位二进制数可转化为一位八进制数。代码如下:

import java.util.Scanner;
public class Main{
   
	public static String toBinary(String str_Hex) {
   
		StringBuffer str_Bin=new StringBuffer();
		for(int i=0;i<str_Hex.length();i++) {
   
			switch(str_Hex.charAt(i)) {
   
			case '0':str_Bin.append("0000");break;
			case '1':str_Bin.append("0001");break;
			case '2':str_Bin.append("0010");break;
			case '3':str_Bin.append("0011");break;
			case '4':str_Bin.append("0100");break;
			case '5':str_Bin.append("0101");break;
			case '6':str_Bin.append("0110");break;
			case '7':str_Bin.append("0111");break;
			case '8':str_Bin.append("1000");break;
			case '9':str_Bin.append("1001");break;
			case 'A':str_Bin.append("1010");break;
			case 'B':str_Bin.append("1011");break;
			case 'C':str_Bin.append("1100");break;
			case 'D':str_Bin.append("1101");break;
			case 'E':<
  • 6
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值