J2SE习题—基本语法2

1.用1元5角钱人民币兑换5分、2分和1分的硬币(每一种都要有)共100枚,问共有几种兑换方案?每种方案各换多少枚?

2.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加,a这个数字是2),几个数相加,这个数字是几均由键盘输入

3.有1、2、3、4这4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

4.已知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。

5.输入一个五位以内的正整数,(1)判断它是一个几位数;(2)请按序输出其各位数字;(3)逆序输出其各位数字。

6.输入某年某月某日,判断这一天是这一年的第几天?

7.求任意2个日期之间相差的天数

import java.util.*;
class Test2 
{
	public static void main(String[] args) 
	{
		question_1();
		System.out.println(question_2(2,3));
		question_3();
		question_4();
		question_5(543210);
		question_6(20170228);
		question_7(20200101,20200301);//会识别闰年,60天

	}

	//1.用1元5角钱人民币兑换5分、2分和1分的硬币(每一种都要有)共100枚,问共有几种兑换方案?每种方案各换多少枚?
	public static void question_1()
	{
		int total = 0;
		int count = 0;
		for (int x=0;x<=100 ;x++ )
		{
			for (int y=0;y<=100-x ;y++ )
			{
				total = 5*x + 2*y + 1*(100-x-y);
				if (total == 150)
				{
					//count自增必须放前面,即使有括号,放后面也会先输出后自增
					System.out.println("方案"+(++count)+":五分"+x+"枚,2分"+y+"枚,1分"+(100-x-y)+"枚。");
					break;
				}
			}
		}
		System.out.println("方案一共有"+count+"种");
	}

	//2.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加,a这个数字是2),几个数相加,这个数字是几均由键盘输入
	public static double question_2(int num,int len)
	{
		double sum=0;
		double js = 0;
		for (int x=1;x<=len-1 ;x++ )
		{
			js = js + num * Math.pow(10,x);
			sum = sum + js;
		}
		return sum;
	}

	//3.有1、2、3、4这4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
	public static void question_3()
	{
		System.out.print("一共有"+(4*3*2)+"种组合:");
		for (int i=1;i<=4 ;i++ )
		{
			for (int m = 1;m<=4 ;m++ )
			{
				if(i==m)
					continue;
				for (int n = 1;n<=4 ;n++ )
				{
					if(i==n || m==n)
						continue;
					System.out.print(i*100+m*10+n+",");
				}
			}
		}
		System.out.println();

	}

	//4.已知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。
	public static void question_4()
	{
		System.out.print("满足条件的a,b,c所有组合:");
		for (int a=3; a<=6; a++ )
		{
			for (int c=12-a;c+a<=13&c<10;c++)
			{
				int b2 = 1333-101*(a+c);
				if (b2%20==0)
				{
					System.out.print(100*a+b2/2+c+",");
					System.out.print(100*c+b2/2+a+",");
				}
			}
		}
	}

	//5.输入一个五位以内的正整数,(1)判断它是一个几位数;(2)请按序输出其各位数字;(3)逆序输出其各位数字。 
	public static void question_5(int n)
	{
		StringBuilder sb= new StringBuilder();
		int count=1;
		if(n<=0)
			System.out.println("哥们,请输入正整数");
		System.out.println("正序输出:"+n);
		while(n/10!=0)
		{
			
			int a = n%10;
			sb.append(a);
			n=n/10;
			count++;
		}
		sb.append(n);
		System.out.println("这是一个"+count+"位数。");
		System.out.println("正序输出:"+sb.reverse().toString());
		System.out.println("这是一个"+sb.reverse().toString());
	}

	//6.输入某年某月某日,判断这一天是这一年的第几天?
	public static void question_6(int n)
	{
		int year = n/10000;
		int month = n%10000/100-1;//month默认从0开始,即1月为0月
		int day = n%100;
		GregorianCalendar cal= new GregorianCalendar(year,month,day);
		GregorianCalendar cal2= new GregorianCalendar(year,0,0);
		long time = (cal.getTimeInMillis()-cal2.getTimeInMillis())/(24*60*60*1000) +1;//因为减去了年初一天
		System.out.println("这一天是这一年的第"+time+"天");
	}

	//7.求任意2个日期之间相差的天数//不考虑前后
	public static void question_7(int n,int m)
	{
		GregorianCalendar cal= new GregorianCalendar(n/10000,n%10000/100-1,n%100-1);
		GregorianCalendar cal2= new GregorianCalendar(m/10000,m%10000/100-1,m%100-1);
		long time = (cal.getTimeInMillis()-cal2.getTimeInMillis())/(24*60*60*1000);
		System.out.println("2个日期之间相差"+time+"天");
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值