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+"天");
}
}