Java作業(第二週)

1. 使用公式C=(5/9)(F-32)打印下列華氏溫度與攝氏溫度對照表


import java.text.DecimalFormat;
public class temperature {
/**
* @param args
*/
public static void main(String[] args) {
// 打印下列華氏溫度與攝氏溫度對照表
double c1=0;int j;
DecimalFormat fnum = new DecimalFormat(“#0.0”);
System.out.println(“整齊打印整數溫度表,並保留一位小數”);
System.out.println(“華氏溫度”+”\t”+”攝氏溫度”);
for(int i=0;i<300;i+=20){
c1=jisuan(i);
System.out.print(i+”\t”);
String d=fnum.format(c1);
System.out.println(d);
}
System.out.println(“倒序輸出”);
System.out.println(“華氏溫度”+”\t”+”攝氏溫度”);
for(int i=300;i>=0;i-=20){
c1=jisuan(i);
System.out.print(i+”\t”);
String d=fnum.format(c1);
System.out.println(d);
}
}
private static double jisuan(int f){
double c=0;
c=(((double)5/9))*(f-32);
return c;
}
}

程序運行結果
整齊打印整數溫度表,並保留一位小數
華氏溫度    攝氏溫度
0   -17.8
20  -6.7
40  4.4
60  15.6
80  26.7
100 37.8
120 48.9
140 60.0
160 71.1
180 82.2
200 93.3
220 104.4
240 115.6
260 126.7
280 137.8
倒序輸出
華氏溫度    攝氏溫度
300 148.9
280 137.8
260 126.7
240 115.6
220 104.4
200 93.3
180 82.2
160 71.1
140 60.0
120 48.9
100 37.8
80  26.7
60  15.6
40  4.4
20  -6.7

2.打印出所有的”水仙花數”,所謂”水仙花數”是指一個三位數,其各數字立方和等於該數本身。例如:153 是一個”水仙花數”,因爲153=1的三次方+5的三次方+3的三次方。


public class narcissu {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    for(int i=100;i<1000;i++){
        if(i==jisuan(i)){
            System.out.println(i);
        }
    }
}
private static int jisuan(int num){
    int result=num%10;
    if(num<10){
        return num*num*num;
    }
    else{
        return jisuan(num / 10) + result*result*result;

    }
}

}

程序運行結果
153
370
371
407




3.求1+2!+3!+…+20!的和


public class factorial {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    long total=0;
    long result=1;
    for(int i=1;i<=20;i++){
        result=result*i;
        System.out.println(i+"的階乘等於"+result);
        total+=result;
    }
    System.out.println("求1+2!+3!+…+20!的和是:"+total);

}

}

程序運行結果:
1的階乘等於1
2的階乘等於2
3的階乘等於6
4的階乘等於24
5的階乘等於120
6的階乘等於720
7的階乘等於5040
8的階乘等於40320
9的階乘等於362880
10的階乘等於3628800
11的階乘等於39916800
12的階乘等於479001600
13的階乘等於6227020800
14的階乘等於87178291200
15的階乘等於1307674368000
16的階乘等於20922789888000
17的階乘等於355687428096000
18的階乘等於6402373705728000
19的階乘等於121645100408832000
20的階乘等於24329020081766400001+2!+3!+…+20!的和是:2561327494111820313

**在做此題時,在定義變量時,由於沒有考慮到變量的長度而定義成int型,導致數據溢出,會產生錯誤結果如下:求1+2!+3!+…+20!的和。
錯答案
1的階乘等於1
2的階乘等於2
3的階乘等於6
4的階乘等於24
5的階乘等於120
6的階乘等於720
7的階乘等於5040
8的階乘等於40320
9的階乘等於362880
10的階乘等於3628800
11的階乘等於39916800
12的階乘等於479001600
13的階乘等於1932053504
14的階乘等於1278945280
15的階乘等於2004310016
16的階乘等於2004189184
17的階乘等於-288522240
18的階乘等於-898433024
19的階乘等於109641728
20的階乘等於-2102132736
求1+2!+3!+…+20!的和是:268040729**

4. 求一個n階方陣對角線元素之和。


import java.util.Random;
import java.util.Scanner;

public class add {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    int n;
    Scanner scanner=new Scanner(System.in);
    System.out.println("請輸入矩陣的變數");
    n=scanner.nextInt();
    scanner.close();
    int a[][]=new int[n][n];
    int result1=0,result2=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            //隨機產生數,給數組複製
            Random random=new Random();
            int num=random.nextInt(100);
            a[i][j]=num;
            System.out.print(a[i][j]+"\t");
        }
        System.out.println();
    }
    //計算主對角線
    System.out.println("主對角線的元素是:");
    for(int i=0;i<n;i++){
        System.out.print(a[i][i]+"\t");
        result1+=a[i][i];
    }
   System.out.println();
   System.out.println("副對角線元素是:");
   for(int i=0;i<n;i++){
       System.out.print(a[i][n-1-i]+"\t");
       result2+=a[i][n-1-i];
   }
   System.out.println();
   System.out.println("主對角線之和"+result1);
   System.out.println("副對角線之和"+result2);

}

}

程序運行結果:
請輸入矩陣的變數
4
55  94  11  0   
23  32  17  36  
9   17  34  30  
64  5   72  51  
主對角線的元素是:
55  32  34  51  
副對角線元素是:
0   17  17  64  
主對角線之和172
副對角線之和98

5.輸入一個一維數組,最大的與第一個元素交換,最小的與最後一個元素交換,輸出數組。


import java.util.Random;
import java.util.Scanner;

public class change {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    int n,max1=0,min1=0,t;
    Scanner scanner=new Scanner(System.in);
    System.out.println("請輸入數組的長度");
    n=scanner.nextInt();
    int a[]=new int[n];
    System.out.println("數組的情況:");
    for(int i=0;i<n;i++){
        //給數組賦值並輸出
        Random random=new Random();
        a[i]=random.nextInt(100);
        System.out.print(a[i]+"\t");
    }
    System.out.println();
    int max=a[0],min=a[0];
    for(int i=0;i<n;i++){
        if(a[i]>max){
            max=a[i];
            max1=i;
        }
        if(a[i]<min){
            min=a[i];
            min1=i;
        }
    }
    t=a[0];
    a[0]=max;
    a[max1]=t;
    t=a[n-1];
    a[n-1]=min;
    a[min1]=t;
    System.out.println("最大數:"+max);
    System.out.println("最小數:"+min);
    System.out.println("交換後的數組");
    for(int i=0;i<n;i++){
        System.out.print(a[i]+"\t");
    }


}

}

“`
程序運行結果:
請輸入數組的長度
4
數組的情況:
70 47 84 18
最大數:84
最小數:18
交換後的數組
84 47 70 18

發佈了37 篇原創文章 · 獲贊 7 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章