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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章