• 2019-1-2作业练习


    1、一个人很倒霉,不小心打碎了一位妇女的一篮子鸡蛋。为了赔偿便询问篮子里有多少鸡蛋。那妇女说,她也不清楚,只记得每次拿两个则剩一个,每次拿3个则剩2个,每次拿5个则剩4个,若每个鸡蛋1元,请你帮忙编程,计算最少应赔多少钱? 要求:用循环语句实现,直接打印出结果不给分。

    package com.java1_2;
    
    public class JiDan {
    	public static void main(String[] args) {
    		/*int a = 0;
    		int b = 0;
    		int c = 0;*/
    		for(int i=1;;i++){
    			if((i%2==1)&&(i%3==2)&&(i%5==4)) {
    				System.out.println("蓝子里总共有"+i+"个鸡蛋,总共要赔偿"+i+"元。");
    				break;
    			}
    		}
    	}
    }
    

      结果为:

    2、从键盘接收一个整数N,统计出1~N之间能被7整除的整数的个数,以及这些能被7整除的数的和。

    package com.java1_2;
    
    import java.util.Scanner;
    
    public class LianXi2 {
    	public static void main(String[] args) {
    		Scanner cxj = new Scanner(System.in);
    		System.out.print("请输入整数:");
    		int a = cxj.nextInt();
    		int count = 0;
    		int sum = 0;
    		for(int i=1;i<=a;i++) {
    			if(i%7==0) {
    				count++;
    				sum += i;
    			}
    		}
    		System.out.println("1~"+a+"之间能被7整除的有"+count+"个");
    		System.out.println("这些数之和为:"+sum);
    	}
    }
    

      结果示例:

    3、古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?

    程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....

    package com.java1_2;
    
    import java.util.Scanner;
    
    public class LianXi3 {
    	public static void main(String[] args) {
    		Scanner cxj = new Scanner(System.in);
    		System.out.println("请输入您要查看的月份:");
    		int yue = cxj.nextInt();
    		int num1 = 1;
    		int num2 = 1;
    		int sum = 0;
    		for(int i=3;i<=yue;i++) {
    			sum = num1 + num2;
    			num1 = num2;
    			num2 = sum;
    		}
    		System.out.println("该月兔子有"+sum+"对");
    	}
    }
    

      结果示例:

    4、一个笼子有35个头,94只脚,问鸡和兔各有多少?

    解题:数学方法:设鸡i只,兔j只,方程:i + j = 35 ;  2 * i + 4 * j = 94。

    解题思路:鸡和兔加起来35只,所以算每一种可能的脚的个数,符合就输出就可以了

    package com.java1_2;
    //鸡兔同笼35只,94只脚,求鸡有几只,兔有几只
    public class LianXi4 {
    	public static void main(String[] args) {
    		
    		/*for(int i=1;i<35;i++) {//i为兔的个数
    			for(int j=1;j<35;j++) {//j为鸡的个数
    				if((i+j)==35&&(i*4+j*2==94)) {
    					System.out.println("鸡有"+j+"只,"+"兔有"+i+"只");
    				}
    			}
    		}*/
    		
    		int a=0;
    		for(int i=4;i<94;i++) {//i为兔的脚数
    			if((i%4==0)&&i/4<35) {
    				a = 35 - i;
    				if(i*4+a*2==94) {
    					System.out.println("鸡有"+a+"只,"+"兔有"+i+"只");
    				}
    			}	
    		}
    	}	
    } 

      结果为:

    5、马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有几人?

    package com.java1_2;
    //以男人个数作为外循环,以女人个数作为内循环,输出所有可能的情况
    //i代表男人个数、j代表女人个数
    public class LianXi5 {
    	public static void main(String[] args) {
    		for(int i=1;i<30;i++) {
    			for(int j=1;j<30;j++) {
    				if((i+j)<30&&(i*3+j*2)<50) {
    					if((i*3+j*2+(30-i-j))==50) {
    						System.out.println("男人有:"+i+"个,女人有:"+j+"个,"+"小孩有"+(30-i-j)+"个");
    					}
    				}
    			}	
    		}
    	}
    }
    

      所有可能的结果为:

    6、判断101-200之间有多少个素数,并输出所有素数。

    程序分析:* 素数是:只能被1或本身整除的数,如:2,3,5,7,11,131... 

    package com.java1_2;
    
    public class LianXi6 {
    	public static void main(String[] args) {
    		for(int i=101;i<=200;i++) {
    			boolean shu = true;
    			for(int j=2;j<i;j++) {
    				if(i%j==0) {
    					shu = false;//如果i能被比i小的数整数就不为素数
    					break;
    				}
    			}
    			if(shu){
    				System.out.println(i);
    
    			}
    		}
    	}
    }
    

      结果:

    7、打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

    程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

    package com.java1_2;
    //水仙花数
    public class LianXi7 {
    	public static void main(String[] args) {
    		int a = 0;
    		int b = 0;
    		int c = 0;
    		for(int i=100;i<1000;i++) {
    			a = i%10;//个位数
    			b = i/10%10;//十位数
    			c = i/100;//百位数
    			if(a*a*a+b*b*b+c*c*c==i) {
    				System.out.println(i);
    			}
    		}
    	}
    }
    

      结果:

    8、将一个正整数分解质因数。比如:输入90,打印出90=2*3*3*5。

    package com.java1_2;
    
    import java.util.Scanner;
    
    public class LianXi8 {
    	public static void main(String[] args) {
    		
    		Scanner cxj = new Scanner(System.in);
    		System.out.println("请输入一个整数:");
    		int n = cxj.nextInt();
    		System.out.print(n+"的质因数是:"+n+"=");
    
    		for(int i=2;i<n;i++) {
    			if(n%i==0) {
    				System.out.print(i+"*");
    				n = n/i;
    				i--;//此处把i自减,避免出现相除后n的值还是偶数的情况
    			}
    		}	
    		System.out.println(n);
    	}
    }
    

      结果示例:

    9、题目:利用条件运算符的嵌套来完毕此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分下面的用C表示。

    package com.java1_2;
    
    import java.util.Scanner;
    
    public class LianXi9 {
    	public static void main(String[] args) {
    		Scanner cxj = new Scanner(System.in);
    		System.out.println("请输入学生的成绩:");
    		double score = cxj.nextDouble();
    		
    		String a = score>=90?"A":(score>=60)?"B":"C";
    		System.out.println(a);
    	}
    }
    

      结果示例:

     

    10、题目:输入两个正整数m和n,求其最大公约数和最小公倍数。   

    package com.java1_2;
    
    import java.util.Scanner;
    
    public class LianXi10 {
    	public static void main(String[] args) {
    		Scanner cxj = new Scanner(System.in);
    		System.out.println("请输入两个整数:");
    		int a = cxj.nextInt();
    		int b = cxj.nextInt();
    		int num1 = a;
    		int num2 = b;
    		int k = 1;
    		int c = a<b?a:b;
    		for(int i=2;i<c;i++) {
    			if((a%i==0)&&(b%i==0)) {
    				k *= i;
    				a /= i;
    				b /= i;
    				i--;
    			}
    		}
    		System.out.println("最小公约数是:"+k);
    		int d = num1/k;
    		int e = num2/k;
    		System.out.println("最小公倍数是:"+k*d*e);
    	}
    }
    

      结果示例:

    11、求s=a+aa+aaa+aaaa+aa...a的值。当中a是一个数字。

    package com.java1_2;
    
    import java.util.Scanner;
    
    public class LianXi11 {
    	public static void main(String[] args) {
    		int sum = 0;
    		int b = 1;
    		Scanner cxj = new Scanner(System.in);
    		System.out.println("请输入一个正整数:");
    		int a = cxj.nextInt();
    		for(int i = 1;i<=a;i++) {
    			b *= a;
    			sum += b;
    		}
    		System.out.println(sum);
    	}
    }
    

      结果示例:

    12、题目:一个数假设恰好等于它的因子之和,这个数就称为 "完数 "。

    package com.java1_2;
    //求10000以内所有的完数
    public class LianXi12 {
    	public static void main(String[] args) {
    		int sum;
    		int i,j;
    		System.out.print("10000以内的完数有:");
    		
    		for(i=2;i<=10000;i++) {
    			sum = 0;//对sum进行初始赋值,重新进入循环
    			for(j=1;j<i;j++) {	
    				if(i%j==0) {
    					sum += j;
    				}
    			}
    			if(sum==i) {
    				System.out.print(sum+" ");
    			}
    		}
    	}
    }
    

      结果:

    13、题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? 

    package com.java1_2;
    
    public class LianXi13 {
    	public static void main(String[] args) {
    		double a = 100;//起始高度100米
    		double sum = 0;
    		int n = 10;//落地次数
    		for(int i=1;i<=n;i++) {
    				a = a/2;//落地后下一次跳起的高度为原高度的一半
    				sum = sum + a*3;
    				//每次落下后跳起,这个过程的路程刚好为落地后跳起高度的3倍
    		}
    		System.out.println("第10次落地后跳起的高度是:"+a);
    		System.out.println("第10次落地时共经过了"+(sum-a)+"米");
    		//sum计算从第1次到第n次落地后跳起的高度,因些若要第n次落地之前的路程,则减去第n落地后再跳起的高度
    	}
    }
    

      结果为:

    14、题目:有1、2、3、4四个数字。能组成多少个互不同样且无反复数字的三位数?都是多少?  

    package com.java1_2;
    
    public class LianXi14 {
    	public static void main(String[] args) {
    		int sum = 0;
    		for(int i=1;i<=4;i++) {
    			for(int j=1;j<=4;j++) {
    				if(i!=j) {
    					for(int k=1;k<=4;k++) {
    						sum = i*100 + j*10 + k;
    						if((i!=k)&&(j!=k)) {
    							System.out.println(sum);
    							continue;
    						}
    					}
    				}
    			}
    		}
    	}
    }
    

      结果为:

    15、题目:一个整数,它加上100后是一个全然平方数,再加上168又是一个全然平方数,请问该数是多少?  

    package com.java1_2;
    
    public class LianXi15 {
    	public static void main(String[] args) {
    		for(int i=1;i<10000;i++) {
    			int a = i+100;
    			for(int j=1;j<a;j++) {
    				if((a%j==0)&&(j*j==a)) {//先找出10000以内加上100后还是完全平方数的数
    					int b = a + 168;
    					for(int k=1;k<b;k++) {
    						if((b%k==0)&&(k*k==b)) {//再筛选出再加168后还是完全平方数的数
    							System.out.println(i);
    						}
    					}
    				}
    			}
    		}
    	}
    }
    

      结果示例:

    16、题目:输入某年某月某日,推断这一天是这一年的第几天? 

    package com.java1_2;
    
    import java.util.Scanner;
    
    public class LianXi16 {
    	public static void main(String[] args) {
    		Scanner cxj = new Scanner(System.in);
    		
    		int[] yearday = {31,28,31,30,31,30,31,31,30,31,30,31};
    		int sum = 0;
    		System.out.print("请输入您要查询的年份:");
    		int year = cxj.nextInt();
    		System.out.print("请输入您要查询的月份:");
    		int moon = cxj.nextInt();
    		System.out.print("请输入您要查询的号数:");
    		int day = cxj.nextInt();
    		//判断该年份是否为闰年,如果是2月份当月为29天
    		if(((year%4==0)&&(year%100!=0))||(year%400==0)) {
    			yearday[1] = 29;
    		}
    		//把要查询月份之前的所有月份天数相加
    		for(int i=0;i<moon-1;i++) {
    			sum += yearday[i];
    		}
    		
    		System.out.println("这一天在当年内是第"+(sum+day)+"天!");//输出时再加上查询当月的日期
    		
    	}
    }
    

      结果示例:

    17、题目:输入三个整数x,y,z。请把这三个数由小到大输出。

    package com.java1_2;
    
    import java.util.Scanner;
    
    //输入三个整数x,y,z。请把这三个数由小到大输出。
    public class LianXi17 {
    	public static void main(String[] args) {
    		Scanner cxj = new Scanner(System.in);
    		System.out.println("请输入三个整数:");
    		
    		int[] shu = new int[3];
    		for(int i=0;i<shu.length;i++) {
    			shu[i] = cxj.nextInt();
    		}
    		
    		for(int i=0;i<shu.length-1;i++) {
    			for(int j=0;j<shu.length-1-i;j++) {
    				if(shu[j]>shu[j+1]) {
    					int temp = shu[j];
    					shu[j] = shu[j+1];
    					shu[j+1] = temp;
    				}
    			}
    		}
    		
    		System.out.print("排序后结果为:");
    		for(int shu1:shu) {
    			System.out.print(shu1+" ");
    		}
    	}
    }

      结果示例:

    18、题目:猴子吃桃问题:猴子第一天摘下若干个桃子。当即吃了一半,还不瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个;以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见仅仅剩下一个桃子了。求第一天共摘了多少。   

    package com.java1_2;
    
    public class LianXi18 {
    	public static void main(String[] args) {
    		for(int i=10;i<1000000000;i++) {
    			int a = i;
    			for(int j=1;j<=10;j++) {
    				a = (a/2 - 1);//每一次吃完后剩下就是前一次的总量的一半再减去一个
    			}
    			if(a==1) {
    				System.out.println("第一天总共摘了"+i+"个桃子.");
    				break;
    			}
    		}
    	}
    }
    

      结果为:

    19、题目:有一分数序列:2/1,3/2,5/3,8/5。13/8。21/13...求出这个数列的前20项之和。

    package com.java1_2;
    
    public class LianXi19 {
    	public static void main(String[] args) {
    		double sum = 0;
    		int a = 1;
    		int b = 2;
    		for(int i=1;i<=20;i++) {
    			sum += b*1.0/a;
    			int temp = b;
    			b = a + b;//下一个分数的分子是前一个分数的分子加上分母
    			a = temp;
    		}
    		System.out.println("前20项之和是:"+sum);
    	}
    }
    

      结果为:

    20、题目:求1+2!+3!+...+20!的和   

    package com.java1_2;
    
    public class LianXi20 {
    	public static void main(String[] args) {
    		long sum = 1;
    		long sum1 = 0;
    		for(int i=1;i<=20;i++) {
    			for(int j=1;j<=i;j++) {
    				sum *= j;//求出1到20各自的阶乘
    				sum1 += sum;//把1到20的阶乘相加
    			}
    		}
    		System.out.println("1!+2!+3!+....+20!="+sum1);
    	}
    }

      结果为:

    21、题目:有5个人坐在一起。问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人。说比第一个人大两岁。最后问第一个人。他说是10岁。请问第五个人多大?   

    package com.java1_2;
    
    //第五个人年龄=第四个人+2=第三个人+2+2=第二个人+2+2+2=第一个人+2+2+2+2;即第五个人=第一个人加了(5-1)次2
    
    public class LianXi21 {
    	public static void main(String[] args) {
    		int age = 10;//第一个人10岁
    		
    		for(int i=1;i<5;i++) {
    			age = age + 2;
    		}
    		System.out.println("第五个人的年龄是:"+age);
    	}
    }
    

      结果为:

    22、题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个。它相同把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?   

    package com.java1_2;
    
    public class LianXi22 {
    	public static void main(String[] args) {
    		int sum = 0;//计算每次分之前桃子数的总和
    		for(int i=2;i<50;i++) {
    			if(i%5==1) {//假设i的值为最后第五次分完后的桃子数,同样要满足分为五份后余1个
    				sum = i;//先把第五次分完后的桃数给sum
    				int k = i;
    				for(int j=5;j>=1;j--) {//分了五次,j=5为第五次分
    					k = k*5+1;//每j-1次都是第J次*5+1个
    					sum += k;//加上J的前一次
    				}
    				if(sum%5==1) {
    					System.out.println("原来桃子数最少有"+sum+"个");
    					break;
    				}
    			}
    		}
    	}
    }
    

      结果为:

  • 相关阅读:
    快速幂
    快速幂
    快速排序的分治求解方法
    快速排序的分治求解方法
    合并排序的分治求解方法
    合并排序的分治求解方法
    重写ListView解决ListView内部ViewPaper滑动事件冲突问题
    HDU 4970(杭电多校#9 1011题)Killing Monsters(瞎搞)
    Java 反射机制[Field反射]
    【公告】博客数据异常已所有恢复
  • 原文地址:https://www.cnblogs.com/chenxj/p/10211225.html
Copyright © 2020-2023  润新知