蓝桥题库基础练习1-10

基础练习题库BASIC1-10

试题编号 试题名称 关键字
BASIC-1 闰年判断 条件判断
BASIC-2 01字串 循环
BASIC-3 字母图形 循环 字符串
BASIC-4 数列特征 循环 最大值 最小值 累加
BASIC-5 查找整数 循环 判断
BASIC-6 杨辉三角形 基础练习 二维数组
BASIC-7 特殊的数字 循环 判断 数位
BASIC-8 回文数 循环 判断 回文数
BASIC-9 特殊回文数 回文数 循环 条件语句
BASIC-10 十进制转十六进制 循环 整除 求余 判断

基础题真的很基础,有些题目一眼看过去就觉得很简单,感觉都没有做的必要。

但是,但是也许越简单越容易埋坑。

闰年判断

问题描述

给定一个年份,判断这一年是不是闰年。

当以下情况之一满足时,这一年是闰年:

  1. 年份是4的倍数而不是100的倍数;

  2. 年份是400的倍数。

其他的年份都不是闰年。

数据规模与约定

1990 <= y <= 2050。

输入格式 输出格式(严格要求大小写)
输入包含一个整数y,表示当前的年份。 输出一行,如果给定的年份是闰年,则输出yes,否则输出no。

测试用例

序号 输入 输出
1 2013 no
2 2000 yes
3 1992 yes
4 1990 no
5 2015 no
6 2016 yes
7 2020 yes
8 2040 yes
9 2050 no
10 2014 no

Java源代码

import java.util.Scanner;

public class Main {
	
	public static void main(String[] args){	
		Scanner sc = new Scanner(System.in);
		int year =sc.nextInt();
		if(isLeap(year)){
			System.out.print("yes");
		}
		else{
			System.out.print("no");
		}
	}
	
	//判断闰年的方法,闰年返回true
	public static boolean isLeap(int year)
	{
	    return year>0 &&((year%4 == 0 && year%100 != 0) || (year%400 == 0));
	}
}

01字串

问题描述

对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:

00000

00001

00010

00011

00100

请按从小到大的顺序输出这32种01串。

数据规模与约定

输入格式 输出格式
本试题没有输入。 输出32行,按从小到大的顺序每行一个长度为5的01串。

Java源代码

public class Main {

	public static void main(String[] args) {

		for (int i = 0; i < 32; i++)
			toBinary(i);
	}

	public static void toBinary(int a) {
		String tempStr = "";
		String str2 = Integer.toBinaryString(a);
		// 判断一下:转化的二进制是否够五位
		if (str2.length() < 5) {
			for (int j = 5 - str2.length(); j > 0; j--) {
				str2 = "0" + str2;
			}
		}
		tempStr += str2;
		System.out.println(tempStr);
	}
}

字母图形

问题描述

利用字母可以组成一些美丽的图形,下面给出了一个例子:

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

数据规模与约定

1 <= n, m <= 26。

输入格式 输出格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。 输出n行,每个m个字符,为你的图形。

官方测试用例

序号 输入 输出
1 5 7 ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC

Java源代码

import java.util.Scanner;

public class Main {
	
	public static void main(String[] args){	
		Scanner sc = new Scanner(System.in);
		int n =sc.nextInt();
		int m =sc.nextInt();
		char ch = 'A';
		boolean flag = true;
		
		for(int i = 0; i < n; i++){
			flag = true;//每行判断是否需要递减
			ch = (char)('A'+i);
			for(int j = 0; j < m; j++){
				System.out.print(ch);
				if(ch>65&&flag){//判断每行前面的字母若大于A则递减到A再递增
					ch = (char)(ch-1);
				}
				else{
					ch = (char)(ch+1);
					flag = false;//递增信号
				}
			}
			System.out.println();
		}
	}
}

数列特征

问题描述

给出n个数,找出这n个数的最大值,最小值,和。

数据规模与约定

1 <= n <= 1,000,000。

输入格式 输出格式
第一行为整数n,表示数的个数。
第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。
输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。

官方测试用例

序号 输入 输出
1 1
-8151
-8151
-8151
-8151
2 2
-6109 -1858
-1858
-6109
-7967
3 10
1924 -5407 7532 3286 4782 2386 -112 -2487 3569 -1295
7532
-5407
14178

还有大量数据显示不美观,有需要可以找博主。

Java源代码

import java.util.Scanner;

public class Main {
	
	public static void main(String[] args){	
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] num = new int[n];
		num[0] = sc.nextInt();
		int Max = num[0];
		int Mix = num[0];
		int sum = num[0];
		
		for(int i = 1; i < n; i++){
			num[i] = sc.nextInt();
			Max = num[i]>Max?num[i]:Max;
			Mix = num[i]<Mix?num[i]:Mix;
			sum += num[i];
		}
		System.out.println(Max);
		System.out.println(Mix);
		System.out.println(sum);
	}
}

查找整数

问题描述

给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

数据规模与约定

1 <= n <= 1000。

输入格式 输出格式
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。

官方测试用例

序号 输入 输出
1 1
41
41
1
2 1
34
0
-1
3 10
69 24 78 58 62 64 5 45 81 27
58
4

还有大量数据显示不美观,有需要可以找博主。

Java源代码

import java.util.Scanner;

public class Main {
	
	public static void main(String[] args){	
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] num = new int[n];	
		
		for(int i = 0; i < n; i++){
			num[i] = sc.nextInt();
		}
		
		int find = sc.nextInt();
		int result = -1;
		
		
		for(int i = 0; i < n; i++){
			if(find == num[i]){
				result = i+1 ;
				break;
			}
				
		}
		System.out.println(result);
	}
}

杨辉三角形

问题描述

杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。

它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。

下面给出了杨辉三角形的前4行:

1

1 1

1 2 1

1 3 3 1

给出n,输出它的前n行。

数据规模与约定

1 <= n <= 34。

输入格式 输出格式
输入包含一个数n。 输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。

官方测试用例

序号 输入 输出
1 2 1
1 1
2 4 1
1 1
1 2 1
1 3 3 1
3 5 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

还有大量数据显示不美观,有需要可以找博主。

Java源代码

import java.util.Scanner;

public class Main {
	
	public static void main(String[] args){	
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[][] Pascal = new int[n][];	
		
		for(int i = 0; i < n; i++){
			Pascal[i] = new int[i+1];
			for(int j = 0; j < Pascal[i].length ; j++){
				if(i>=2&&j>0){
					if(j == Pascal[i].length-1)
						Pascal[i][j]=1;
					else
						Pascal[i][j]=Pascal[i-1][j-1]+Pascal[i-1][j];
				}
				else{
					Pascal[i][j]=1;
				}
				
				
				System.out.print(Pascal[i][j]+" ");
			}
			System.out.println();
		}
		
	}
}

特殊的数字

问题描述

153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333。编程求所有满足这种条件的三位十进制数。

数据规模与约定

输入格式 输出格式
按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。

Java源代码

public class Main {
		public static void main(String[] args){	
		for(int i = 1; i < 10; i++)
			for(int j = 0; j < 10; j++)
				for(int k = 0; k < 10; k++)
					if(i*100+j*10+k==Math.pow(i,3)+Math.pow(j, 3)+Math.pow(k, 3))
						System.out.println(i*100+j*10+k);			
	}
}

回文数

问题描述

1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。

数据规模与约定

输入格式 输出格式
按从小到大的顺序输出满足条件的四位十进制数。

Java源代码

public class Main {
		public static void main(String[] args){	
		for(int i = 1; i < 10; i++)
			for(int j = 0; j < 10; j++)
				for(int k = 0; k < 10; k++)
					for(int l = 0; l < 10; l++)
					if(i==l&&j==k)
						System.out.println(i*1000+j*100+k*10+l);			
	}
}

特殊回文数

问题描述

123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

数据规模与约定

1<=n<=54。

输入格式 输出格式
输入一行,包含一个正整数n。 按从小到大的顺序输出满足条件的整数,每个整数占一行。

Java源代码

import java.util.Scanner;
public class Main {
	public static void main(String[] agrs) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		
		//五位形式 abcba
		for (int i = 1; i < 10; i++)
			for (int j = 0; j < 10; j++) 
				for (int k = 0; k < 10; k++) 
					if (i * 2 + j * 2 + k == n)
						//有个空字符自动转型拼接
						System.out.println("" + i + j + k + j + i);
		
		
		//六位形式 abccba
		for (int i = 1; i < 10; i++) 
			for (int j = 0; j < 10; j++) 
				for (int k = 0; k < 10; k++) 
					if (i * 2 + j * 2 + k * 2 == n)
						System.out.println("" + i + j + k + k + j + i);
			
	}
}

十进制转十六进制

问题描述

十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
  给出一个非负整数,将它表示成十六进制的形式。

数据规模与约定

0<=a<=2147483647

输入格式 输出格式
输入包含一个非负整数a,表示要转换的数。 输出这个整数的16进制表示

Java源代码

import java.util.Scanner;

public class Main {
	public static void main(String[] agrs) {
		Scanner sc = new Scanner(System.in);
		String num = sc.nextLine();
		sc.close();
		System.out.println(Long.parseLong(num, 16));
	}
}

猜你喜欢

转载自www.cnblogs.com/1101-/p/12634324.html
今日推荐