J2SE習題—基本語法2
阿新 • • 發佈:2019-02-11
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+"天");
}
}