经典编程题,用Java实现:三数排序,猴子吃桃,百钱买百鸡,打渔晒网问题,求阶乘,输入三个数判断能否构成三角形,水仙花数

1.将三个数字从小到大排序

import java.util.Scanner;

public class Sort {
	public static void main(String[] args) {
		//将三个数字从小到大排序
		
		Scanner sc=new Scanner(System.in);
		System.out.println("enter three number");
		//输入三个数字
		int num1=sc.nextInt();
		int num2=sc.nextInt();
		int num3=sc.nextInt();
		numSort1(num1,num2,num3);
	}
	//将三个数排序
	public static void numSort1(int num1,int num2,int num3){
		if(num1>num2){	//令num1小于num2
			int temp=num1;
			num1=num2;
			num2=temp;
		}
		if(num1>num3){	//令num1小于num3
			int temp=num1;
			num1=num3;
			num3=temp;
		}
		if(num2>num3){	//令num2小于num3
			int temp=num2;
			num2=num3;
			num3=temp;
		}
		System.out.printf("%d<%d<%d\n",num1,num2,num3);
	}
}

运行结果

enter three number
45 56 34 
34<45<56

2.猴子吃桃问题(自己输入天数和剩余桃数)

import java.util.Scanner;

public class MonkeyEatPeaches {
	public static void main(String[] args) {
		//猴子吃桃问题(自己输入天数和剩余桃数)
		
		Scanner sc=new Scanner(System.in);
		System.out.println("enter day");
		//输入现在是吃桃的第几天
		int day=sc.nextInt();
		day-=1;
		//实际吃桃天数要减一,因为这一天还没吃
		System.out.println("enter peaches");
		//输入这天剩余桃子的数量
		int num=sc.nextInt();
		while(day>0){
			num=(num+1)*2;
			//每次吃剩余的一半加一个
			day-=1;
		}
		System.out.println("peaches number is "+num);
		//输出原有的桃子数
	}
}

运行结果

enter day
10
enter peaches
1
peaches number is 1534

3.百钱买百鸡问题

公鸡一只五钱,母鸡一只三钱,小鸡三只一钱,用一百钱买一百只鸡,输出三种鸡所有可能的组合。

public class HundredCandC {
	public static void main(String[] args) {
		//百钱买百鸡问题,公鸡一只五钱,母鸡一只三钱,小鸡三只一钱
		//用一百钱买一百只鸡,输出三种鸡所有可能的组合
		
		for(int fa=0;fa<21;fa++){
		//公鸡的数量范围为0~20只
			for(int ma=0;ma<34;ma++){
			//母鸡的范围为0~33只
				for(int son=3;son<100;son++){
				//小鸡的范围为3~99只
					if(fa+ma+son==100){
					//判断三种鸡数量和是否为100
						if(fa*5+ma*3+son/3==100){
						//判断总钱数是否为100
							if(son%3==0){
							//判断小鸡数量是否为三的倍数
								System.out.printf("%d,%d,%d\n",fa,ma,son);
							}
						}
					}
				}
			}
		}
	}
}

运行结果

0,25,75
4,18,78
8,11,81
12,4,84

4.打渔晒网问题

如果一个渔夫从2011年1月1日开始每三天打一次渔,两天晒一次网,输入一个日期判断渔夫是在打渔还是晒网,此处不考虑输入的日期在日历上是否存在,所以输入时要输入一个正确的日期。

import java.util.Scanner;

public class FishNet {
	public static void main(String[] args) {
		/*如果一个渔夫从2011年1月1日开始每三天打一次渔,两天晒一次网,
		 * 输入一个日期判断渔夫是在打渔还是晒网,
		 * 此处不考虑输入的日期在日历上是否存在,
		 * 所以输入时要输入一个正确的日期。
		*/
		Scanner sc=new Scanner(System.in);
		System.out.println("enter year month day");
		//输入年 月 日 
		int year=sc.nextInt();
		int month=sc.nextInt();
		int day=sc.nextInt();
		int[] run={31,29,31,30,31,30,31,31,30,31,30,31};
		//闰年的每个月的天数
		int[] ping={31,28,31,30,31,30,31,31,30,31,30,31};
		//平年的每个月的天数
		int sum=0;
		//记录距离2011年1月1日的天数
		boolean jud=judge(year);
		//判断输入的年份是否为闰年
		if(jud){	//若是闰年
			for(int i=0;i<month-1;i++){
				sum+=run[i];
				//将闰年每月天数累加
			}
			sum+=day;
			//再加上天数
		}
		if(!jud){	//若是平年
			for(int i=0;i<month-1;i++){
				sum+=ping[i];
				//将平年每月天数累加
			}
			sum+=day;
			//再加上天数
		}
		for(int i=year;i<year;i++){
			//判断从2011年到输入的年份之间的每一年
			if(judge(i)){
				sum+=366;
				//如果是闰年则这一年加366天
			}
			if(!judge(i)){
				sum+=365;
				//如果是平年则这一年加365天
			}
		}
		int thing=sum%5;
		//将总天数对5取余
		//余数是1,2,3说明在打渔,否则在晒网
		if(thing>0&&thing<4){
			System.out.println("catch fish");
			//打渔
		}
		else{
			System.out.println("dry net");
			//晒网
		}
	}
	public static boolean judge(int year){
		return (year%4==0&&year%100!=0||year%400==0);
		//判断是否为闰年,是则返回true
	}
}

运行结果

enter year month day
2011 1 5
dry net

5.输入一个数求它的阶乘

import java.util.Scanner;

public class JieCheng {
	public static void main(String[] args) {
		//输入一个数求它的阶乘
		
		Scanner sc=new Scanner(System.in);
		System.out.println("enter a number");
		//输入一个数
		int num=sc.nextInt();
		int i=1;
		int sum=1;
		//用于存放每次累乘的值
		while(i<num+1){
			sum*=i++;
		}
		System.out.println(num+"!= "+sum);
	}
}

运行结果

enter a number
10
10!= 3628800

6.输入三个数,判断能否构成三角形

输入三个数,判断能否构成三角形,若能,则求其面积(海伦公式),并判断它是什么三角形。

import java.util.Scanner;

public class TriangleJudge {
   public static void main(String[] args) {
   	//输入三个数,判断能否构成三角形
   	//若能,则求其面积(海伦公式)
   	//并判断它是什么三角形
   	
   	Scanner sc=new Scanner(System.in);
   	System.out.println("enter three number");
   	//输入三个数
   	double num1=sc.nextInt();
   	double num2=sc.nextInt();
   	double num3=sc.nextInt();
   	double area=0;
   	//定义面积并初始化为0
   	double s=(num1+num2+num3)/2;
   	//定义周长的二分之一
   	if(num1+num2>num3&&num1+num3>num2&&num2+num3>num1){
   		//判断是否能构成三角形,能则求其面积
   		area=Math.sqrt(s*(s-num1)*(s-num2)*(s-num3));
   		//利用海伦公式求面积
   	}
   	if(area==0){
   		//如果面积为0,说明不能构成三角形,直接输出不能构成,退出系统
   		System.out.println("not a triangle");
   		System.exit(0);
   	}
   	if(num1==num2&&num1==num3){
   		//三条边都相等说明是等边三角形
   		System.out.println("equilateral triangle");
   	}else if(num1==num2||num1==num3||num2==num3){
   		//有任意两条边相等说明是等腰三角形
   		System.out.println("isosceles triangle");
   	}else if(num1*num1+num2*num2==num3*num3||
   			num1*num1+num3*num3==num2*num2||
   			num3*num3+num2*num2==num1*num1){
   		//符合勾股定理说明是直角三角形
   		System.out.println("right triangle");
   	}else{
   		//以上请况都不符合,则为普通三角形
   		System.out.println("common triangle");
   	}
   	//输出其面积,保留三位小数
   	System.out.printf("area=%.3f\n",area);
   }
}

运行结果

enter three number
2 3 4
common triangle
area=2.905

7.输出一千以内所有的水仙花数

public class NarcissisticNum {
  public static void main(String[] args) {
  	//输出一千以内所有的水仙花数
  	
  	int count=0;
  	for(int i=100;i<1000;i++){
  		int b=i/100;
  		int s=i/10%10;
  		int g=i%10;
  		if(b*b*b+g*g*g+s*s*s==i){
  			System.out.println(i);
  			count++;
  		}
  	}
  	System.out.println("count:"+count);
  }
}

运行结果

153
370
371
407
count:4
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值