第三篇

package zll.material.java_base_homework;

import java.util.Arrays;
import java.util.Scanner;
import org.junit.Test;

public class D03 {
	/**
	 * 1.有三个正整数,找出最大值
	 */
	@Test
	public void test01(){
		int[] is = new int[3];
		@SuppressWarnings("resource")
		Scanner scan = new Scanner(System.in);
		for (int i=0;i<is.length; i++) {
			is[i]= scan.nextInt();
		}
		System.out.println(Arrays.toString(is));
		int[] mergeSort = mergeSort(is);
		System.out.println("最大值为:"+mergeSort[mergeSort.length-1]);
	}
	/**
	 * 2. 当货物重量小于20 公斤的时候,收费5 元,大于20 公斤小于100 公斤的时 候超出20 公斤的部分按每0.2 元每公斤计费,
	 * 如果超出100 公斤的时候,超出的部分按照每公斤0.15 元计算。 读入货物的重量,输出计算之后货物的运费
	 */
	@Test
	public void test02(){
		@SuppressWarnings("resource")
		Scanner scan = new Scanner(System.in);
		System.out.println("输入公斤数:");
		int nextInt = scan.nextInt();
		if(nextInt<=20){
			System.out.println("5");
		}else if (nextInt<=100) {
			double a = 5+0.2*(nextInt-20);
			System.out.println(a);
		}else {
			double b = 5+0.2*80+(nextInt-100)*0.15;
			System.out.println(b);
		}
	}
	/**
	 * 3. 三个数字,按由大到小的顺序输出
	 */
	@Test
	public void test03(){
		int[] ints = {3,6,9,5,8,4,1,7,0};  
        fastSort(ints);  
        System.out.println(Arrays.toString(ints));  
	}
	/**
	 * 4. 计算1+3+5+...+99的和
	 */
	@Test
	public void test04(){
		int a = 0;
		for(int i=1;i<=99;i+=2){
			a = a+i;
		}
		System.out.println(a);
	}
	/**
	 * 5. 计算一个小于10的正整数的阶乘
	 */
	@Test
	public void test05(){
		System.out.println(jiecheng(8));
	}
	private int jiecheng(int n){
		if(n<=0){
			return 0;
		}else if (n==1) {
			return 1;
		}else {
			return n*jiecheng(n-1);
		}
	}
	/**
	 * 6. 搬砖问题:36 块砖,36 人搬,男搬4,女搬3,两个小孩抬1 砖, 要求一次全搬完,问男、女和小孩各若干?
	 */
	@Test
	public void test06(){
		for(int i=0;i<9;i++){
			for(int j=0;j<13;j++){
				for(int z=0;z<72;z+=2){
					if(4*i+3*j+z/2==36&&i+j+z==36){
						System.out.println("男:"+i+",女:"+j+",小孩:"+z);
					}
				}
			}
		}
	}
	/**
	 * 7. 读入一个整数n,输出如下图形
	 *	 n = 3   
	 *	    *  
	 *	   *** 
	 *	  ***** 
	 *	 n = 4    
	 *	    *   
	 *	   ***  
	 *	  ***** 
	 *	 ******* 
     *
	 */
	@Test
	public void test07(){
		int n = 3;
		for(int i=0;i<n-1;i++){
			for(int x=i+1;x<n;x++){
				System.out.println(" ");
			}
			for(int y=0;y<(i+1)*2;y++){
				System.out.println("*");
			}
			System.out.println();
		}
		for(int i=0;i<n;i++){
			for(int x=0;x<i;x++){
				System.out.println(" ");
			}
			for(int y=i;y<n*2-(i+1);y++){
				System.out.println("*");
			}
			System.out.println();
		}
	}
	/**
	 * 8.输出一个九九乘法表
	 */
	@Test
	public void test08(){
		for(int i=1;i<=9;i++){
			for(int j=1;j<=i;j++){
				System.out.print(j+"*"+i+"="+j*i+" ");
			}
			System.out.println();
		}
	}
	/**
	 * 9. 中 国 古 代 数 学 家 研 究 出 了 计 算 圆 周 率 最 简 单 的 办 法:PI=4/1-4/3+4/5-4/7+4/9-4/11+4/13-4/15+4/17......这个算式的结果会无 限接近于圆周率的值,
	 * 我国古代数学家祖冲之计算出,圆周率在3.1415926 和 3.1415927 之间,请编程计算,要想得到这样的结果,他要经过多少次加减法运算? 
	 */
	@Test
	public void test09(){
	    double PIH = 3.1415927; //定义上限
        double PIL = 3.1415926; //定义下限
        double sum = 0;  //求的总和
        int i = 0;      //减法的次数
        int y = 1;
        while(sum>PIH||sum<PIL){
                double z =0 ;    //分母的数字
                if(y%2==0){       //双数次加的数为负数
                        z=(-1)*(2*y-1);   
                }else{       //单数次加的数为正数
                        z=2*y-1;  //分母
                }                        
                sum =sum+(4/z); //计算总和
                if(z<0){   //z小于0的话,就是做了一次减法,所以i+1
                        i++;
                }
                y++;                        
        }                
        System.out.println(i);
	}
	//快速排序-start
	private void fastSort(int[] ints){
		fastSort(ints,0,ints.length-1);
	}
	private void fastSort(int[] ints, int left, int right) {
		int start = left;
		int end = right;
		int key = ints[left];
		while(end>start){
			while(end>start&&ints[end]>key)
				end--;
			if(ints[end]<key){
				int tmp =ints[end];
				ints[end] =key;
				key =tmp;
			}
			while(end>start&&ints[start]<key)
				start++;
			if (ints[start]>key) {
				int tmp =ints[start];
				ints[start] =key;
				key = tmp;
			}
		}
		if(start>left)fastSort(ints,left,start-1);
		if(right>end)fastSort(ints, end+1, right);
	}
	//快速排序-end
	//归并排序-start
	private int[] mergeSort(int[] ints){
		int[] tmp = new int[ints.length];
		mergeSort(ints,tmp,0,ints.length-1);
		return tmp;
	}
	
	private void mergeSort(int[] ints, int[] tmp, int left, int right) {
		int[] t = new int[right+1];
		if(left==right){
			tmp[left]=ints[left];
		}else{
			int mid = (left+right)/2;
			mergeSort(ints, t, left, mid);
			mergeSort(ints, t, mid+1, right);
			merge(t,tmp,left,mid,right);
		}
	}
	
	private void merge(int[] t, int[] tmp, int left, int mid, int right) {
		int begin1 = left;
		int end1 = mid;
		int begin2 = mid+1;
		int end2 = right;
		int index = left;
		while (begin1<=end1&&begin2<=end2) {
			if(t[begin1]<t[begin2]){
				tmp[index]=t[begin1];
				begin1++;
			}else {
				tmp[begin2]=t[begin2];
				begin2++;
			}
			index++;
		}
		while(begin1<=end1){
			tmp[index]=t[begin1];
			begin1++;
			index++;
		}
		while(begin2<=end2){
			tmp[index]=t[begin2];
			begin2++;
			index++;
		}
	}
	//归并排序-end
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值