1. 程式人生 > 其它 >2、資料型別和運算子作業

2、資料型別和運算子作業

技術標籤:大資料——JAVA基礎篇

資料型別和運算子作業

一、填空題
1.Java語言規定識別符號由字母、下劃線、美元符號和數字組成,並且第一個字元不能是 數字 。
2.Java中整型變數有byte、short、int和long四種,不同型別的整數變數在記憶體中分配的位元組數不同,數值範圍也不同。對於int型變數,記憶體分配 4 個位元組。
3.在Java中浮點型變數有float和double兩種,對於float型變數,記憶體分配4個位元組,尾數可精確到7位有效數字,對於double型變數,記憶體分配 8 個位元組。
4.char c=’a’;System.out.println(c+1);執行結果為: 98 。

5.&&是短路與運算子,如果左側表示式的計算結果是false,右側表示式將不再進行計算。
6.下面的語句是宣告一個變數並賦值:boolean b1=5!=8; b1的值是___true

7.使用位運算子來實現運算效率最高,所以最有效率的方法算出2乘以8等於多少的語句是 2<<3 。
8.基本資料型別的型別轉換中,要將double型別的常量3.14159賦給為整數型別變數n的語句是_______int n=(int)3.14159
_____。
9.八進位制整數012表示十進位制的___10___,十六進位制數0x3C表示十進位制的__50___。
10.一個十進位制整數轉換成八進位制數後是1234,則它轉為十六進位制數後是 0x29C 。

二、選擇題

  1. 在Java中,以下錯誤的變數名是( D )。(選擇一項)

    A constant
    B. flag
    C. a_b
    D. final

  2. 以下選項中屬於合法的Java識別符號的是( CD )。(選擇兩項)

    A. public
    B. 3num
    C. name
    D. _age

  3. 在Java中,byte資料型別的取值範圍是( A )。(選擇一項)

    A -128 ~ 127
    B. -228 ~128
    C. -255 ~ 256
    D. -255 ~ 255

  4. 下面的程式碼段中,執行之後i和j的值是( B )。(選擇一項)
    int i=1; int j;
    j=i++;

    A 1,1
    B. 1,2
    C. 2,1

    D. 2,2

  5. 下面Java程式碼的執行結果是( A )。(選擇一項)
    public class Test {
    public static void main(String args[]) {
    System.out.println(100 % 3);
    System.out.println(100%3.0);
    }
    }

    A 1 1.0
    B. 1 1
    C. 1.0 1.0
    D. 33 33.3

  6. 下面的賦值語句中錯誤的是( A )。(選擇一項)

    A float f = 11.1;
    B. double d = 5.3E12;
    C. double d = 3.14159;
    D. double d = 3.14D;

  7. 在Java中,下面( AB )語句能正確通過編譯。(選擇兩項)

    A System.out.println(1+1);
    B. char i =2+‘2’;
    System.out.println(i);
    C. String s=“on”+‘one’;
    D. int b=255.0;

  8. 以下Java運算子中優先級別最低的兩個選項是( AC )。(選擇二項)

    A 賦值運算子=
    B. 條件運算子 ?=
    C. 邏輯運算子|
    D. 算術運算子+

  9. 有以下方法的定義,請選擇該方法的返回型別( D )。(選擇一項)
    method(byte x, double y) {
    return (short)x/y*2;
    }

    A byte
    B. short
    C. int
    D. double

  10. 關於以下Java程式中錯誤行的說明正確的是( B )。(選擇一項)
    public class Test2 {
    public static void main(String[] args) {
    short s1=1; //1
    s1=s1+1; //2
    s1+=1; //3
    System.out.println(s1);
    }
    }

    A 1行錯誤
    B. 2行錯誤
    C. 3行錯誤
    D. 1行,2行,3行都錯誤

三、判斷題
1.Java中變數名不區分大小寫,number和NuMbEr代表同一個變數。( × )
2.在編譯Java源程式時,計算機根本不會去識別各個變數名的具體含義,因此命名規範對編寫Java程式而言不是必要的,而且有可能會降低編寫Java源程式的效率。( × )
3.Java語言中不同資料型別的長度是固定的,不隨機器硬體不同而改變。( √ )
4.char型別變數可以儲存一個Unicode字元,在記憶體中佔2個位元組,該字元可以是一個漢字。( √ )
5.運算子||和&&既是邏輯運算子,也是位運算子。根據兩側運算元的型別判斷是邏輯運算子還是位運算子。( × )
6.^ 是異或位運算子,運算規則是如果兩個運算元相同,結果是0,否則結果是1。( √ )
7.賦值運算子優先級別低於條件運算子,條件運算子優先級別低於算術運算子。( √ )
8.賦值和條件運算子是運算級別最低的兩種運算子,都具有自右向左的結合性。( T )
9.整型常量的預設型別是int型別,浮點常量的預設型別是float型別。( × )
10.00101010 & 00010111語句的執行結果為00111111( × )

四、簡答題
1.Java是一種強型別語言,說明Java的資料型別分類。
答:Byte、short、int、long、char、float、double、boolean
2.i++和++i的異同之處
答:I++是先賦值後加1,++i是先加1後賦值
3.運算子||和|的異同之處
答:都代表著邏輯或運算,||表示短路或,只要第一個是ture,後面就不做運算,|反之,還是會依次判斷。

4.Java中基本資料型別轉換的規則
答:1、基本資料型別的自動提升;
2、強制型別轉換。

五、編碼題
1.輸入自己的名字,年齡和性別,分別用不同的變數接收,並將輸入的資訊做輸出。

2.輸入圓形半徑,求圓形的周長和圓形的面積,並將結果輸出。

3.銀行利率表如下表所示,請計算存款10000元,活期1年、活期2年,定期1年,定期2年後的本息合計。

結果如下圖所示。(結果四捨五入,不保留小數位。使用Math.round(double d)實現)

4.某個公司採用公用電話傳遞資料,資料是四位的整數,在傳遞過程中是加密的,加密規則如下:每位數字都加上5,然後用和除以10的餘數代替該數字,再將第一位和第四位交換,第二位和第三位交換。結果如圖所示。

六、可選題

1.網上查詢資料,瞭解如下內容
1)ASCII、ISO8859-1、GB2312、GBK、GB18030、BIG5、UNICODE、ANSI等字符集的特點
2)常用進位制(二進位制、八進位制、十六進位制、十進位制)的特點及其轉換
3)原始碼、反碼、補碼含義、作用及其轉換

2.利用”異或”運算的性質,對幾個字元進行加密並輸出密文,然後再解密。加密演算法是:金鑰是字元’8’,明文的每個字元和金鑰進行異或運算,得到密文。金鑰和密文的每個字元再次進行異或運算,重新得到明文。結果如圖所示。

00000000 00000000 00000000 1000

資料型別和運算子作業答案

一、填空題

1.數字
2.4
3.8
4.98
5.&&
6.true
7.2<<3
8.int n=(int)3.14159;
9.10 60
10.29C

二、選擇題

1.D
2.CD
3.A
4.C
5.A
6.A
7.AB
8.AB
9.D
10.B

三、判斷題

1.×
2.×
3.√
4.√
5.×
6.√
7.√
8.√
9.×
10.×

四、簡答題

1、答:基本資料型別:數值型<整數型別:byte、short、int、long,浮點型別:float、double,字元型(char),布林型(boolean);引用資料型別:類(class),介面(interface),陣列
2、答:i++,先進行運算再自增;++i先自增再進行運算
3、答:||左邊的表示式為真時,右邊的表示式不用進行計算了;|需要考慮倆邊的表示式。
4、答:(1)布林型和其它基本資料型別之間不能相互轉換;(2)byte型可以轉換為short、 int、long、float和double; (3)short可轉換為int、long、float和double; (4)char可轉換為int、long、float和double; (5)int可轉換為long、float和double; (6)long可轉換為float和double; (7)float可轉換為double.

五、編碼題

1.輸入自己的名字,年齡和性別,分別用不同的變數接收,並將輸入的資訊做輸出。

import java.util.Scanner;
public class TestPerson {
	public static void main(String[] args) {
		System.out.println("Please input your name here:");
		Scanner input = new Scanner(System.in);
		String Name = (String) input.next();
		System.out.println("Please input your age here:");
		int age = input.nextInt();
		System.out.println("Please input your gender here:");
		String gender = input.next();
		System.out.println("The computer recorded that :");
		System.out.println("Your nanme is:" + Name);
		System.out.println("Your age is:" + age);
		System.out.println("Your gender is:" + gender);
	}
}

2.輸入圓形半徑,求圓形的周長和圓形的面積,並將結果輸出。

import java.util.Scanner;
public class TestCircle {
	public static void main(String[] args) {
		// 定義圓周率
		final double PI = 3.14;
		Scanner input = new Scanner(System.in);
		// 輸入半徑
		System.out.println("請輸入圓的半徑:");
		// 計算周長和麵積
		float r = input.nextFloat();
		double c = 2 * PI * r;
		double s = PI * r * r;
		// 輸出周長和麵積
		System.out.println("該圓的半徑為:R=" + r);
		System.out.println("該圓的周長為:C=" + 2 + "*" + PI + "*" + r + "=" + c);
		System.out.println("該圓的面積為:S=" + PI + "*" + r + "*" + r + "=" + s);
	}
}

3.計算存款10000元,活期1年、活期2年,定期1年,定期2年後的本息合計。

public class TestDeposit {
	public static void main(String[] args) {
		//給出本金並輸出
		int money = 10000;
		System.out.println("本金:"+money);
		//計算活期1年本金並輸出
		double result1 = money*(1+0.35/100);
		System.out.println("活期1年本金總計:"+Math.round(result1));
		//計算定期1年本金並輸出
		double result2 = money*(1+1.50/100);
		System.out.println("定期1年本金總計:"+Math.round(result2));
		//計算活期2年本金並輸出
		double result3 = money*(1+0.35/100*2);
		System.out.println("活期2年本金總計:"+Math.round(result3));
		//計算定期2年本金並輸出
		double result4 = money*(1+2.10/100*2);
		System.out.println("定期2年本金總計:"+Math.round(result4));
	}
}

4.某個公司採用公用電話傳遞資料,資料是四位的整數,在傳遞過程中是加密的,加密規則如下:每位數字都加上5,然後用和除以10的餘數代替該數字,再將第一位和第四位交換,第二位和第三位交換。

public class TestEncryption {
	public static void main(String[] args) {
		//輸入一個4位整數
		Scanner s = new Scanner(System.in);
		System.out.print("請輸入一個4位正整數:");
		int num = s.nextInt();		
		//獲取各個位上的數
		int bit4 = (num / 1000); // 取千位的數字
		int bit3 = (num / 100) % 10; // 取百位的數字
		int bit2 = (num / 10) % 10; // 取十位的數字
		int bit1 = num % 10; // 取個位的數字
		//每位數字加5		
		bit4 = (bit4+5)%10;
		bit3 = (bit3+5)%10;
		bit2 = (bit2+5)%10;
		bit1 = (bit1+5)%10;
		//交換第一位和第四位
		int  temp;
		temp = bit4;
		bit4 = bit1;
		bit1 = temp;
		//交換第二位和第三位
		temp = bit2;
		bit2 = bit3;
		bit3 = temp;
		// 輸出加密後數字		
		//System.out.println("加密後的數字為:"+bit4+bit3+bit2+bit1);
		int ennum = bit4*1000+bit3*100+bit2*10+bit1;
		System.out.println("加密後的數字為:"+ennum);
		
	}
}

六、可選題

  1. 利用”異或”運算的性質,對幾個字元進行加密並輸出密文,然後再解密。
public class TestEncryption2 {
	public static void main(String args[]) {
		//原文
		char a1 = '十', a2 = '點', a3 = '進', a4 = '攻';
		System.out.println("加密前原文:" + a1 + a2 + a3 + a4);
		//加密
		char secret = '8';
		a1 = (char) (a1 ^ secret);
		a2 = (char) (a2 ^ secret);
		a3 = (char) (a3 ^ secret);
		a4 = (char) (a4 ^ secret);		
		System.out.println("密文:" + a1 + a2 + a3 + a4);
		//解密
		a1 = (char) (a1 ^ secret);
		a2 = (char) (a2 ^ secret);
		a3 = (char) (a3 ^ secret);
		a4 = (char) (a4 ^ secret);
		System.out.println("解密後原文:" + a1 + a2 + a3 + a4);
	}
}