Java蓝桥杯基础练习
Posted 努力努力再努力²
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java蓝桥杯基础练习相关的知识,希望对你有一定的参考价值。
目录
22、FJ的字符串
import java.util.Scanner;
public class FJ的字符串_22
public static void main(String[] args)
Scanner in=new Scanner(System.in);
int n=in.nextInt();
String s="";
for(int i=1;i<=n;i++)
// s=String.valueOf((char)(64+i)); //输出第i个大写字母 ,i<=26
s=s+(char)(64+i)+s;
System.out.println(s);
23、芯片测试
import java.util.Scanner;
public class 芯片测试_23
public static void main(String[] args)
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int [][]arr = new int[n][n];
int b[] = new int[n];
for (int i =0;i<n;i++)
for (int j = 0;j<n;j++)
arr[i][j] = sc.nextInt();
if (arr[i][j] == 0)//好的比坏的多,所以被多次判定为坏,这个就是坏的
b[j] = b[j]+1;
for(int i=0;i<n;i++)
if (b[i] <= n / 2) //找到好的的位置
System.out.print(i+1+" ");
26、报时助手
import java.util.Scanner;
public class 报时助手_26
static String[] times1 = "zero", "one", "two", "three", "four", "five",
"six", "seven", "eight", "nine", "ten", "eleven", "twelve",
"thirteen", "fourteen", "fifteen", "sixteen", "seventeen",
"eighteen", "nineteen", "twenty" ;
static String[] times2 = "0", "0", "twenty", "thirty", "forty", "fifty" ;
public static void main(String[] args)
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext())
int h = scanner.nextInt();
int m = scanner.nextInt();
if (h > 20)
int a = h / 10;
int b = h % 10;
System.out.print(times2[a] + " " + times1[b] + " "); //大于20小于60的数字,首先读整十的数,然后再加上个位数。
else
System.out.print(times1[h] + " ");
if (m == 0)
System.out.println("o'clock");
else if (m > 20)
int a = m / 10;
int b = m % 10;
System.out.println(times2[a] + " " + times1[b]); //大于20小于60的数字,首先读整十的数,然后再加上个位数。
else
System.out.println(times1[m]);
28、Huffuman树
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class Huffman树_28
public static void main(String[] args)
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
List<Integer> list = new ArrayList<Integer>();//用来存储输入的n个数
for(int i =0;i<n;i++)
int a1 = sc.nextInt();
list.add(a1);
boolean flag = true;
int sum=0; //构造Huffman树的总费用
while(flag)
if(list.size()<2)
System.out.println(sum);
flag=false;
else
int min []=new int[list.size()];
for(int i =0;i<min.length;i++)
min[i]=list.get(i);
Arrays.sort(min); //数组排序
int b =min[0];
int c =min[1];
list.remove(Integer.valueOf(b)); //删除最小的两个数
list.remove(Integer.valueOf(c));
int d =b+c; //最小的两数之和
sum+=d; //计算费用
list.add(d); //插入数组中
29、高精度加法
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/*法一:
对其加减乘除其实就是BigDecimal的类的一些调用。
加法 add()函数,减法subtract()函数,乘法multiply()函数,
除法divide()函数,绝对值abs()函数
*/
/*public class 高精度加法_29
public static void main(String[] args)
Scanner sc=new Scanner(System.in);
BigDecimal a,b,c;
a=sc.nextBigDecimal(); //BigInteger也可
b=sc.nextBigDecimal();
c=a.add(b);
System.out.println(c);
*/
//法二:
public class 高精度加法_29
public static void main(String[] args) throws NumberFormatException, IOException
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s1 = br.readLine();
String s2 = br.readLine();
int a[] = new int[100000];
int b[] = new int[100000];
//得到输入的数的长度
int l1 = s1.length();
int l2 = s2.length();
//将输入的数转化成以整数形式存储的数组,a[0]存个位数,a[1]存十位数...
for(int i=0; i<l1; i++)
a[l1-1-i] = Character.getNumericValue(s1.charAt(i));
for(int i=0; i<l2; i++)
b[l2-1-i] = Character.getNumericValue(s2.charAt(i));
//找出两个加数中最大的数
int max = l1>l2?l1:l2;
int c[] = new int[100000];
//先把每个位上的数相加,和存到数组c[]中
for(int i=0; i<max; i++)
c[i] = a[i] + b[i];
//将c[]中需要进位的进行处理
for(int i=0; i<max-1; i++)
if(c[i]>9)
c[i+1] += c[i]/10;
c[i] = c[i]%10;
//看最高的位需要进位的话,扩大位数。
while(c[max-1]>9)
c[max] = c[max-1]/10;
c[max-1] = c[max-1]%10;
max++;
for(int i=max-1; i>=0; i--)
System.out.print(c[i]);
30、阶乘计算
import java.math.BigInteger;
import java.util.Scanner;
public class 阶乘计算_30
public static void main(String[] args)
Scanner sc=new Scanner(System.in);
BigInteger sum=BigInteger.valueOf(1); //将int转为BigInteger
int n=sc.nextInt();
for (int i = 1; i<=n; i++)
sum=sum.multiply(BigInteger.valueOf(i));
System.out.println(sum);
26个英文字母
public class 二十六个英文字母
/*// 法一:
public static void main(String[] args)
Scanner in=new Scanner(System.in);
int n=in.nextInt();
for(int i=1;i<=n;i++)
String s=String.valueOf((char)(64+i));//输出第i个大写字母 ,i<=26
System.out.print(s+" ");
*/
// 法二:
public static void main(String[] args)
int a[]=new int[26];
char s='A';
for(int i=0;i<26;i++)
a[i]=s+i;
System.out.print((char)a[i]+" ");
字符串的拼接
public class 字符串的拼接
public static void main(String a[])
StringBuffer s=new StringBuffer();
String s1="asd";
String s2="123";
s.append(s1).append(s2);
System.out.println("第一次s:"+s);
for (int i = 0; i <5 ; i++)
s.append('A');
System.out.println("第二次s:"+s);
s.reverse();
System.out.println("第三次s的倒序:"+s);
3个数最大的最小公倍数
- 如果n是一个奇数, 那么它的最大值: n * (n - 1) * (n - 2)
例:n = 9, max = 9 * 8 * 7 - 当n是一个偶数时,讨论它能否被3整除
①同时能被 2 和 3 整除, 则其最大值:(n - 1) * (n - 2) * (n - 3)
例:n = 12, max = 11 * 10 * 9
②如只能被 2 整除, 则其最大值为:n * (n - 1) * (n - 3)
例:n = 16, max = 16 * 15 * 13
import java.util.Scanner;
public class 最大的最小公倍数_2
public static void main(String[] args)
Scanner sc = new Scanner(System.in);
long N = sc.nextLong();
long max = getMaxNum(N);
System.out.println(max);
public static long getMaxNum(long n)
if(n <= 2)
return n;
// 1.如果n是一个奇数, 那么它的最大值: n * (n - 1) * (n - 2)
// 例:n = 9, max = 9 * 8 * 7
else if(n % 2 == 1)
return n * (n - 1) *( n - 2);
else
// 2.当n是一个偶数时,讨论它能否被3整除
// 3.如同时能被 2 和 3 整除, 则其最大值:(n - 1) * (n - 2) * (n - 3)
// 例:n = 12, max = 11 * 10 * 9
if(n % 3 == 0)
return (n - 1) * (n - 2) * (n - 3);
// 4.如只能被 2 整除, 则其最大值为:n * (n - 1) * (n - 3)
// 例:n = 16, max = 16 * 15 * 13
else
return n * (n - 1) * (n - 3);
单词分析:
方法一:将字母转化为整型数组来记录,利用数组的思维做
import java.util.Scanner;
public class 单词分析
public static void main(String[] args)
Scanner sc=new Scanner(System.in);
char []ch=sc.nextLine().toCharArray();
int []word=new int[1000];
for(int i=0;i<ch.length;i++)
word[ch[i]-'a']++;//将字母转化为整型数组来记录
//初始化-1,防止字符数组为空时输出出现字母
int max=-1;
int wordmax=-1;
for(int i=0;i<word.length;i++)
if(word[i]>max)
max=word[i];//标记最大单词
wordmax=i;//记入单词出现的次数
char c=(char)('a'+wordmax);
System.out.println(c);
System.out.println(max);
方法二:利用到HashMap和Set的特点来做。
Java蓝桥杯基础练习