1. 程式人生 > >J2SE習題—基本語法2

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