【Java】『蓝桥杯』10道编程题及答案(四)

news2024/9/23 7:33:17

系列文章

【Java】『蓝桥杯』10道编程题及答案(一)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130223115

【Java】『蓝桥杯』10道编程题及答案(二)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130304773

【Java】『蓝桥杯』10道编程题及答案(三)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130305068

【Java】『蓝桥杯』10道编程题及答案(四)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130392388


文章目录

  • 系列文章
  • 前言
  • 一、题目
    • 1.1 【程序1】
    • 1.2 【程序2】
    • 1.3 【程序3】
    • 1.4 【程序4】
    • 1.5 【程序5】
    • 1.6 【程序6】
    • 1.7 【程序7】
    • 1.8 【程序8】
    • 1.9 【程序9】
    • 1.10 【程序10】
  • 二、答案
    • 2.1 【程序1】
    • 2.2 【程序2】
    • 2.3 【程序3】
    • 2.4 【程序4】
    • 2.5 【程序5】
    • 2.6 【程序6】
    • 2.7 【程序7】
    • 2.8 【程序8】
    • 2.9 【程序9】
    • 2.10 【程序10】


前言

我能抽象出整个世界,但是我不能抽象你。 想让你成为私有常量,这样外部函数就无法访问你。 又想让你成为全局常量,这样在我的整个生命周期都可以调用你。 可惜世上没有这样的常量,我也无法定义你,因为你在我心中是那么的具体。

哈喽大家好,本专栏为【Java】专栏,『蓝桥杯』部分,面向于初学者或者对算法感兴趣的朋友们。主要分享基础编程题,一些有趣、新颖的算法,我们要习惯于掌握解题的思路,如果对实操感兴趣,可以关注我的【C#项目】专栏。

本专栏会持续更新,不断完善。大家有任何问题,可以私信我。如果您对本专栏感兴趣,欢迎关注吧,大家一起学习,一起进步。

【Java】『蓝桥杯』10道编程题及答案(四)
在这里插入图片描述


一、题目

1.1 【程序1】

【程序31】
题目:将一个数组逆序输出。
1.程序分析:用第一个与最后一个交换。

1.2 【程序2】

【程序32】
题目:取一个整数a从右端开始的4~7位。
程序分析:可以这样考虑:
(1)先使a右移4位。
(2)设置一个低4位全为1,其余全为0的数。可用(0<<4)
(3)将上面二者进行&运算。

1.3 【程序3】

【程序33】 
题目:打印出杨辉三角形(要求打印出10行如下图) 
1.程序分析: 
     1 
    1 1 
   1 2 1 
  1 3 3 1 
 1 4 6 4 1 
1 5 10 10 5 1 

1.4 【程序4】

【程序34】
题目:输入3个数a,b,c,按大小顺序输出。
1.程序分析:利用指针方法。

1.5 【程序5】

【程序35】
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

1.6 【程序6】

【程序36】
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数

1.7 【程序7】

【程序37】
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

1.8 【程序8】

【程序38】
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

1.9 【程序9】

【程序39】
题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n(利用指针函数)

1.10 【程序10】

【程序40】
题目:字符串排序。


二、答案

2.1 【程序1】

public class ReversePrintArray {

	/**
	 * 【程序31】 题目:将一个数组逆序输出。 1.程序分析:用第一个与最后一个交换。
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] a = { 123, 45, 34, 64, 16, 49, 70, 57, 19 };

		output(1, "该数组正序输出为:", a);
		output(-1, "该数组反序输出为:", a);
	}

	private static void output(int f, String str, int[] a) {
		int k;
		System.out.print(str);
		for (int i = 0; i < a.length; i++) {
			if (f >= 0) {
				k = i;
			} else {
				k = a.length - i - 1;
			}
			System.out.print(a[k] + "  ");
		}
		System.out.println();
	}
}


2.2 【程序2】

public class MoveSpecifiedNumbers {

	/**
	 * 【程序32】 题目:取一个整数a从右端开始的4~7位。 程序分析:可以这样考虑: (1)先使a右移4位。
	 * (2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4) (3)将上面二者进行&运算。
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		char a = '\u0f40';// 0000 1111 0100 0000b
		int b = 15;// b为0000 0000 0000 1111b
		a >>= 4;// a右移四位得:0000 0000 1111 0100b
		int c;
		c = a & b; // a&b后,c为:0000 0000 0000 0100b,亦即4。
		System.out.println(c);

	}
}

2.3 【程序3】

import java.util.Scanner;

public class YangHuiTriangle {

	/**
	 * 【程序33】 题目:打印出杨辉三角形(要求打印出10行如下图) 1.程序分析:
	 */
	// 1
	// 1 1
	// 1 2 1
	// 1 3 3 1
	// 1 4 6 4 1
	// 1 5 10 10 5 1

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n;
		while (true) {
			System.out.println("请输入杨辉三角的阶数(>=0)的整数");
			n = sc.nextInt();
			if (n > 0)
				break;
		}
		int[][] a = new int[n][];

		for (int i = 0; i < n; i++) {
			a[i] = new int[i + 1];
			String str = "";
			for (int j = 0; j <= i; j++) {
				if (i == 0 && j == 0) {
					a[i][j] = 1;
				} else if (j == 0 || j == i) {
					a[i][j] = 1;
				} else {
					a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
				}
				str += (a[i][j] + "       ").substring(0, 6);
			}
			System.out.println(space(20 - i) + str);
		}
	}

	private static String space(int n) {
		String s = "";
		for (int i = 0; i <  n; i++) {
			s += "   ";
		}
		return s;
	}
}

2.4 【程序4】

import java.util.Scanner;

public class ThreeNumbersCompare {

	/**
	 * 【程序34】 题目:输入3个数a,b,c,按大小顺序输出。
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入三个数(中间用空格隔开或者回车,多余的无效):");
		int a, b, c;
		a = sc.nextInt();
		b = sc.nextInt();
		c = sc.nextInt();
		System.out.println("原序:" + a + ", " + b + ", " + c);

		int tmp;
		if (a < b) {
			tmp = a;
			a = b;
			b = tmp;
		}
		if (a < c) {
			tmp = a;
			a = c;
			c = tmp;
		}
		if (b < c) {
			tmp = b;
			b = c;
			c = tmp;
		}

		System.out.println("现在:" + a + " >= " + b + " >= " + c);
	}
}


2.5 【程序5】

import java.util.Scanner;

public class PrizeCommision {

	/**
	 * 【程序12】
	 * 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10
	 * %提成,
	 * 高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3
	 * %;60
	 * 万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
	 * 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		long profit;
		long prize;
		Scanner sc=new Scanner(System.in);
		
		while(true){
			System.out.println("请输入利润:");
			profit=sc.nextLong();
			if(profit>0)break;
		}
		
		if(profit<=100000){
			prize=(long) (profit*.1);
		}else if(profit<=200000){
			prize=(long) (100000*.1+(profit-100000)*.075);
		}else if(profit<=400000){
			prize=(long) (100000*.1+100000*.075+(profit-200000)*.05);
		}else if(profit<=600000){
			prize=(long) (100000*.1+100000*.075+200000*.05+(profit-400000)*.03);
		}else if(profit<=1000000){
			prize=(long) (100000*.1+100000*.075+200000*.05+200000*.03+(profit-600000)*.015);
		}else {
			prize=(long) (100000*.1+100000*.075+200000*.05+200000*.03+400000*.015+(profit-1000000)*.01);
		}
		
		System.out.println("你应该得到的奖金为:"+prize);
	}
}



2.6 【程序6】

import java.util.Scanner;

public class ShiftMNumbers {

	/**
	 * 【程序36】 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n, m;
		while (true) {
			System.out.println("请输入一个大于1的整数:");
			n = sc.nextInt();
			if (n > 1)
				break;
		}
		int[] a = new int[n];
		int[] b = new int[n];
		while (true) {
			System.out.println("请输入一个大于0而且小于" + n + "的整数:");
			m = sc.nextInt();
			if (m > 0 && m < n)
				break;
		}

		for (int i = 0; i < n; i++) {
			System.out.println("请输入" + n + "个数(用空格或回车分隔,多余无效):");
			a[i] = sc.nextInt();
		}

		for (int i = 0; i < n; i++) {
			if (i < m) {
				b[i] = a[i + m];
			} else {
				b[i] = a[i - m];
			}
		}

		output("移位前:", a);

		output(n + "个整数,使其前面各数顺序向后移" + m + "个位置,最后" + m + "个数变成最前面的" + m
				+ "个数,最后得到:", b);
	}

	private static void output(String s, int[] a) {
		System.out.println(s);
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + "  ");
		}
		System.out.println();
	}
}


2.7 【程序7】

①方法一:

import java.util.Scanner;

public class CircleNumber {

	/**
	 * 【程序37】 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n;
		while (true) {
			System.out.println("请输入一个大于1的整数:");
			n = sc.nextInt();
			if (n > 1)
				break;
		}

		int[] a = new int[n];
		for (int i = 0; i < n; i++) {
			a[i] = i + 1;
		}

		int e = 0, c = 0;
		int[] b = new int[n - 1];
		int bi = 0;
		System.out.print("\n==========================\n当为" + n
				+ "个人时,去掉的人的序号有:");
		whileCircle: while (true) {
			for (int i = 0; i < n; i++) {
				boolean f = true;
				for (int j = 0; j < bi; j++) {
					if (a[i] == b[j]) {
						f = false;
						break;
					}
				}
				if (f) {
					c++;
					if (c == 3) {
						b[bi] = a[i];
						System.out.print(b[bi] + " ");
						c = 0;
						bi++;
						if (bi == (n - 1)) {
							break whileCircle;
						}
					}
				}
			}
		}

		for (int i = 0; i < n; i++) {
			boolean f = false;
			for (int j = 0; j < n - 1; j++) {
				if (a[i] == b[j]) {
					f = true;
					break;
				}
			}
			if (!f) {
				System.out.println("\n最后剩下的人的号码为:" + a[i]
						+ "号。\n==========================");
				break;
			}
		}
	}
}

②方法二:

import java.util.Scanner;

public class CircleNumber2 {

	/**
	 * 【程序37】 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n;
		while (true) {
			System.out.println("请输入一个大于1的整数:");
			n = sc.nextInt();
			if (n > 1)
				break;
		}

		boolean[] b = new boolean[n];
		for (int i = 0; i < b.length; i++) {
			b[i] = true;// 最初所有人均在圈中,如果为false,表示人已经离开圈子
		}

		int index = 0;
		int left = n;
		int count = 0;
		while (true) {
			if (left == 1) {
				break;
			}
			if (b[index]) {
				count++;
				if (count == 3) {
					count = 0;
					left--;
					b[index] = false;
				}
			}
			index++;
			if (index == n) {
				index = 0;
			}
		}

		for (int i = 0; i < b.length; i++) {
			if (b[i]) {
				System.out.println("最后剩下的是:" + (i + 1) + "号。");
				break;
			}
		}
	}
}



2.8 【程序8】

public class MainParaLength {

	/**
	 * 【程序38】 题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(args[0].length());
	}

}


2.9 【程序9】

import java.util.Scanner;

public class OddEvenTest {

	/**
	 * 【程序39】
	 * 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n;
		while (true) {
			System.out.println("请输入一个正整数:");
			n = sc.nextInt();
			if (n > 0)
				break;
		}

		float sum = 0;
		int start;
		if (n % 2 == 0)
			start = 2;
		else
			start = 1;
		String s = "";
		for (int i = start; i <= n; i += 2) {
			s += " + 1/" + i;
			sum += 1.0 / i;
		}
		System.out.println(s.substring(3) + " = " + sum);
	}
}



2.10 【程序10】

public class StringArraySort {

	/**
	 * 【程序40】 题目:字符串排序。
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String[] str={"hello","Hello","world","abc","wor_ld","123","adk5433","14bcd","kdard"," fdkajd"};
		for(int i=0;i<str.length-1;i++){
			for(int j=i+1;j<str.length;j++){
				String s;
				if(str[i].compareTo(str[j])>1){//比较结果大于1,则str[i]位置应该在str[j]后面
					s=str[i];
					str[i]=str[j];
					str[j]=s;
				}
			}
			System.out.print(str[i]+"   ");
		}
		System.out.println(str[str.length-1]);
	}
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/464966.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

五种PDF转Word免费的软件!(附带转换效果对比!)

本文将介绍种PDF转Word免费软件&#xff0c;让您快速将PDF文件转换为可编辑的Word文件。 随着现代科学技术的飞速发展&#xff0c;PDF格式已经成为我们工作和生活中常用的文档格式之一。PDF文件的格式是固定的&#xff0c;不容易被篡改&#xff0c;因此经常被用来制作各种关键文…

1691_python学习笔记之week3_递归

全部学习汇总&#xff1a; GreyZhang/python_basic: My learning notes about python. (github.com) 最初接触递归的时候觉得这个有点不好理解&#xff0c;怎么能够有这种思维方式&#xff1f;这完全不同于之前自己所能够了解的那种一加一等于二的方式。相对于能够看得见的那种…

企业采购都在用什么系统管理采购流程?ERP够用了吗?

ERP&#xff08;企业资源计划&#xff09;和采购管理系统都是企业信息化系统的一部分&#xff0c;它们在企业中扮演着不同的角色。下面是它们之间的区别&#xff1a;区别 功能不同&#xff1a;ERP系统是一个综合性的企业管理系统&#xff0c;覆盖范围广&#xff0c;包括财务、人…

Android12 material you 动态配色

动态配色功能是 Material You 设计的核心 一、完整的动态配色流程包括四个步骤&#xff0c;如下所示&#xff1a; 用户通过 OEM 选择器更改壁纸或主题。AOSP 逻辑会自动从所选壁纸中提取单一源颜色。将源颜色扩展到颜色API&#xff0c;AOSP 将单一源颜色扩展为 5 &#xff0c;…

JS实现拼音(字母)匹配(搜索)汉字(姓名)

这就是个模糊查询&#xff0c;我们平常做的都是直接输入汉字去把对应的值过滤出来&#xff0c;但我还真是第一次通过拼音去查询&#xff08;当然不只是拼音&#xff0c;汉字也是可以的&#xff09;&#xff0c;以前还真没注意这个。唉&#xff0c;这可咋搞&#xff0c;我怎么知…

python:面向对象编程(知识点+代码)

文章目录 一、类和对象1、对象属性的默认值设置2、对象属性的添加、修改与删除3 、类属性 二、类的继承 引言&#xff1a;面向对象编程时一门编程语言重要的功能&#xff0c;我们之前所学的 c&#xff0c;java都为面向对象编程语言&#xff0c;这里给大家拓展一下&#xff0c;…

getaddrinfo调用crash 的debug过程

前两天&#xff0c;产线报一例crash问题。拿到core文件后&#xff0c;栈展开信息&#xff1a; (gdb) bt #0 0x00007f64a3651aff in raise () from /lib64/libc.so.6 #1 0x00007f64a3624ea5 in abort () from /lib64/libc.so.6 #2 0x00007f64a3694097 in __libc_message () …

【论文阅读-ICSE2023】预训练目标对代码相关任务的影响

目录 简介有哪些预训练预训练的影响回答RQ1回答RQ2 总结 简介 Title: Automating Code-Related Tasks Through Transformers: The Impact of Pre-training1 Author: Rosalia Tufano, Luca Pascarella, Gabriele Bavota Published: ICSE2023 Abstract: 尽管现在很多研究能够证…

OSS的STS模式授权案例

OSS的STS模式授权 某云提供的权限管理系统主要包含两部分&#xff0c;RAM&#xff08;资源访问管理&#xff09;和STS&#xff08;安全认证服务&#xff09;&#xff0c;以满足不暴露主账号AK\SK的情况下安全的授权别人访问的需求&#xff0c;STS提供的是一种临时访问授权。通…

XSS知识总结

XSS基础 跨站脚本&#xff08;英语&#xff1a;Cross-site scripting&#xff0c;通常简称为&#xff1a;XSS&#xff09;是一种网站应用程序的安全漏洞攻击&#xff0c;是代码注入的一种。它允许恶意用户将代码注入到网页上&#xff0c;其他用户在观看网页时就会受到影响。这…

楼层滚动效果(超级简单,易懂)

系列文章目录 文章目录 系列文章目录一、楼层滚动效果图如下1. 下图是纯Css实现的楼层滚动2.通过Js优化后的楼层滚动如下图(&#x1f339;&#x1f339;) 二、楼层滚动&#xff08;Css实现&#xff09;1.滚动原理2.代码如下 三、楼层滚动&#xff08;JsCss优化后的楼层滚动&…

FreeRTOS学习笔记(二)——内核机制

文章目录 0x01 临界段Cortex-M内核快速关中断指令关中断开中断进入和退出临界段的宏进入临界段退出临界段临界段代码应用 0x02 空闲任务与阻塞延时的实现空闲任务的创建实现阻塞延时阻塞等待总结 0x03 多优先级通用方法&#xff1a;taskRECORD_READY_PRIORITY()taskSELECT_HIGH…

微服务学习——服务异步通讯

实用篇-RabbitMQ 初识MQ 同步调用的问题 微服务间基于Feign的调用就属于同步方式&#xff0c;存在一些问题。 耦合度高 每次加入新的需求&#xff0c;都要修改原来的代码性能下降 调用者需要等待服务提供者响应&#xff0c;如果调用链过长则响应时间等于每次调用的时间之和…

【数据库】事务的隔离级别以及实现原理

文章目录 前言一、事务什么是事务&#xff1f;事务的四大特性分别是 二、事务并发存在的问题脏读可重复读不可重复读幻读 三、以MYSQL数据库来分析四种隔离级别第一种隔离级别&#xff1a;Read uncommitted(读未提交)第二种隔离级别&#xff1a;Read committed(读提交)第三种隔…

此环境变量太大,此对话框允许将值设置为最长 2047 个字符

背景: 自己是一个计算机爱好者&#xff0c;又大体精通计算机各种编程语言&#xff0c;所以电脑上安装的各种编译或者编程软件比较多&#xff0c;有一天需要安装一个多版本的python环境&#xff0c;发现无法添加环境变量&#xff0c;于是乎&#xff0c;自己去查看原因并解决这个…

C语言 sizeof, size_t, strlen

C语言 sizeof, size_t, strlen 文章目录 C语言 sizeof, size_t, strlen一. sizeof1.1 返回结构体长度 二. size_t三. sizeof 和 strlen 一. sizeof 返回一个结构体或者类型所占的内存字节数 1.1 返回结构体长度 这里我编写了2个结构体&#xff0c;区别在于数组问题 #include …

智慧园区gis三维数字孪生可视化平台辅助管理者提升安全管控效力

随着信息技术的发展,3D可视化已经成为交互式管理的主流。智慧3D可视化交互管理平台能够帮助企业实现高效、灵活的管理。 1&#xff1a;智慧3D可视化交互管理平台的基本特性 智慧3D可视化交互管理平台能够实时显示工厂中生产车间的设备和生产线的运行状态&#xff0c;并通过交互…

火焰图怎么看

性能平台 通过该平台可以使用pprof采集线上的服务指标数据生成CPU占用数据并自动绘制出火焰图&#xff0c;Top&#xff0c;以及函数调用图等。 1.1 火焰图 火焰图的深度代表了函数的调用栈&#xff0c;火焰图最深处就是正在执行的函数&#xff0c;上方的都是它的父函数&#x…

C++线程的简单学习及了解

此篇文章只是线程的简单了解。 文章目录 前言一、线程的优缺点二、C线程库 1.thread类的简单介绍2.线程函数参数总结 前言 什么是线程&#xff1f; 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“一个进程内部的控…

git 使用大全及各种疑难杂症解决方法(长期更新)

Git使用中遇到的各种问题及解决方法 git clone后修改文件然后再上传覆盖 git push出现“Everything up-to-date”解决方法 git commit后如何撤销或修改 git 同步远程和本地的同名分支 git push异常问题出现符号解决方法 git 删除最近或者任意一次提交commit