2016年12月29日 星期四

運算子 運算式與敘述ch4

1.
(a)
public class hw4_1a

{
  public static void main (String args[])
  {
     int a=8;
     System.out.println("a="+(++a));
     System.out.println("a="+(a--));
 }
}
//印出 a=9  a=a+1 執行完+1
           a=9              不知道為何會是9,以為是7。
(b)
public class hw4_1b

{
  public static void main (String args[])
  {
     int a=10,b=20;
     a%=5
     b*=3;
     System.out.println("a="+a);
     System.out.println("b="+b);
 }
}
//印出a=0
          b=3

(c)
public class hw4_1c
{
  public static void main (String args[])
  {
     int a=20,b=5;
     a%=b
     b*=3;
     System.out.println("a="+a);
     System.out.println("b="+b);
 }
}
//印出a=0
          b=15

2.下列哪些運算式的值為true?那些運算式的值為false?
(a)'a'<28            a  false
(b)4+3==8-1     n  True
(c)8>2               s  True
(d)'a'!=97              false

3.撰寫一程式,將習題2的運算結果織布林值印出。
(b)4+3==8-1     True
public class iplusf

{
  public static void main (String args[])
  {

    boolean bool=true;
 
 if(4+3==8-1)
 {


    System.out.println(true);
 }
 else
 {
    System.out.println(false);
 }

  }

}//印出true
(c)8>2               True


public class iplusf

{
  public static void main (String args[])
  {

    boolean bool=true;
 
 if(8>2)
 {


    System.out.println(true);
 }
 else
 {
    System.out.println(false);
 }

  }//印出true
4. 下列的運算式中,是指出那些式運算元,那些式運算子?
(a)(6  +  num )  -  12 +  a
     元 子 元     子 元 子 元
(b)num=(  12 +  ans) -  24
     元   子 元 子 元  子 元
(c)k++
元子子
5.何謂一元運算子?與其他運算子相比,他有何特徵?
ans:
一元運算子、二元運算子、以及三元運算子。它們差在哪兒?答案是,它們能,或者說,它們需要幾個運算元來做運算。例如加法會是二元運算子,因為它需要兩個運算元來計算,只有一個運算元是無法做加法運算的。負號則是一元運算子,它將一個運算元變號,從負變正,或者從正變負。三元運算子比較特別,而且只有一個,這個留待以後補充。每個運算子在工作時,會吃掉被用來作運算的運算元,消化後轉化成一個新的運算元,消化方式與結果則視運算子的運算方法而定。

4.2

6.下列的四則運算都沒有加上括號。請在適當的位置將它們都加上括號,使得這些運算式較易閱讀,且依然符合先乘除後加減的原則:
(a)(12/3)+(4*10)+(12*2)
(b)12+(5*12)-(5*6)/4
(c)5-(2*7)+56-(12*12)-(6*3)/(4+1)

7.試判別下列的各敘述的執行結果:
(a)6+4<9+12                                A   true
(b)16+7*6+9                                N   67
(c)(13-6)/7+8                                S   9
(d)7>0 && 6<6 && 12<13                false
(e)8>0 || 12<7                                     true
(f)8<=8                                               true
(g)7+7>15                                          false
(h)19+34-6>4                                     true
(i)12+7>0 || 13-5>6                            true
(j)3>=5                                               false

8.撰寫一程式,將習題7的運算結果列印出。
public class hw_8

{
  public static void main (String args[])
  {

    System.out.println(3>=5   );


  }

}
//印出false。

4.3
9.設下列個運算式中,a的初值皆為10,b的初值皆為20,是寫出下列各式中,經運算後的num a與b之值:
(a)num=(a++)-b
(b)num=(-b)*a
(c)num=(a++)+(b--)
(d)num=(--a)+(b--)
(e)a+=a*(b++)

ans:
(a)10
(b)-200
(c)30
(d)29
(e)a=a+a*(b++) //210
//備註:a++或a-- 似乎沒效果,只有在++a先執行遞增的有效果。


10.試撰寫一程式,將習題9的運算結果印出。
public class aaa

{
  public static void main (String args[])
  {

 int a=10,b=20,num;

    System.out.println(a+=a*(b++));


  }

}
//僅寫其中一個程式。

11.設下列各運算式中,a的出值皆為10,b的初值為5,在不需強制轉換資料型態的情況下,試寫出下列各式中,經運算過後的a與b值:
(a)b*=a
(b)a/=b++
(c)a/=++b
(d)a%=--b
(e)b%=a++
ans
(a)b=b*a          50
(b)a=a/b+1       3
(c)a=a/(b+1)     1.6666
(d)a=a%(b-1)    2
(e)b=b%a+1      6

12.撰寫一程式,將11題的運算結果列印出來。

public class 12

{
  public static void main (String args[])
  {

 int a=10,b=5;

    System.out.println(b=b%a+1  );


  }

}

13.試撰寫一轉換攝氏至華氏溫度的程式,計算攝氏0度是多少華氏溫度,其轉換公式如下:

華氏溫度=(9/5)*攝氏溫度+32

ans   輸入0可得32


import java.util.Scanner;
public class iplusf

{
  public static void main (String args[])
  {
 float a,b;
 Scanner scn=new Scanner(System.in);
 a=scn.nextInt();

System.out.println("攝氏溫度0等於華氏溫度"+(32f+9f/5f*a));


  }
14.根據上題所提供的轉換公式,撰寫轉換華氏溫度至攝氏溫度的程式,並計算華氏32度是多少攝氏溫度。

ans

import java.util.Scanner;
public class iplusf

{
  public static void main (String args[])
  {
 float a,b
 Scanner scn=new Scanner(System.in);
 a=scn.nextInt();

 System.out.println((a-32)*5f/9f));


  }

15.撰寫一轉換英鎊至公斤的程式,計算100英鎊是多少公斤,其轉換公式如下:
      1英鎊=0.454公斤

ans

import java.util.Scanner;
public class iplusf

{
  public static void main (String args[])
  {


 float a,b;
 System.out.println("輸入英鎊");


 Scanner scn=new Scanner(System.in);
 a=scn.nextInt();

 System.out.println((0.454f*a)+"公斤");

  }
//印出45.4公斤

16.根據上題所提供的資訊,撰寫轉換公斤至英鎊的程式,並計算10公斤是多少英鎊。

ans

import java.util.Scanner;
public class iplusf

{
  public static void main (String args[])
  {
 
 float a,b;
 System.out.println("輸入公斤");
 
 
 Scanner scn=new Scanner(System.in);
 a=scn.nextInt();

 System.out.println((2.2026f*a)+"英鎊");

  }
  
}
//印出22.026001英鎊

17.試撰寫一程式,輸入長方形的長和寬,計算其面積。

ans

import java.util.Scanner;
public class iplusf

{
  public static void main (String args[])
  {
 
 float a,b;
 System.out.println("輸入長與寬");
 
 
 Scanner scn=new Scanner(System.in);
 a=(float) scn.nextDouble();
      b=(float) scn.nextInt();  
 System.out.println((float)a*b+"面積");

  }
//輸入小數無法得出面積待解決<- b=(float) scn.nextInt();  更正scn.nextDouble();

18.已知圓球體積為4/3r3次方

ans
import java.util.Scanner;
public class iplusf

{
  public static void main (String args[])
  {

 float a,b;
 System.out.println("圓球體積4/3Π/rrr請輸入半徑R");


 Scanner scn=new Scanner(System.in);
 a=(float) scn.nextDouble();
     
 System.out.println((float)4/3*3.14*a*a*a+"體積");

  }

19.一周有7天,試撰寫一程式,計算285天是幾周又幾天。

ans
import java.util.Scanner;
public class iplusf

{
  public static void main (String args[])
  {

 int c;
 float a,b;
 System.out.println("輸入285");


 Scanner scn=new Scanner(System.in);
      c=scn.nextInt();
 System.out.println(c/7+"week "+c%7+"day");

  }
//印出40week 5day。

20.當Java發現程式的運算式中有形態不符合的情況時,請問有哪些規則可以處裡型態的轉換?
ans:

      自己回答:資料相容  精準度小轉大 若要大轉小則必須自己輸入(強制轉換)
依據本書3-19自動資料做轉換
1.傳換前的資料型態與轉換後的型態相容。
2.轉換後的資料型態之表示範圍比轉換前的形態大。

3-22
強制轉換,若是試表示比較大範圍資料型態的變數,設給範圍較小之資料型態的變數,稱縮小轉換,過程中可能會漏失精準度。

21.設有一程式碼,其變數的初值宣告如下:
char ch='A';
short s=12;
float f=12.4f;
int i=15;
double d=13.62;

在下面的運算式中,是仿照圖4.4.1與圖4.4.2的畫法,繪出資料型態的轉換過程與資料運算過程:
(a) s+(f/s)+(ch*i)
(b)ch+d/(s-i)*f
(c)(s+d)/ch*(d+i)

ans
//第2與3題目S寫錯。


22.試撰寫一程式,將習題21的運算結果印出,藉以驗證運算結果。
(a) s+(f/s)+(ch*i)       我的答案double988.0333..
(b)ch+d/(s-i)*f                           double3.37776  //8.704001731872559正確
(c)(s+d)/ch*(d+i)                       double0.04226  //11.280683076923076正確

import java.util.Scanner;
public class iplusf

{
  public static void main (String args[])
  {

 char ch='A';
 short s=12;
 float f=12.4f;
 int i=15;
 double d=13.62;

 System.out.println((s+d)/ch*(d+i)  );

  }

}

23.設有一程式碼,其變數的初始宣告如下
char ch='P';
short s=54;
float f=6.9f;
int    i=24;
double d=2.98;

試寫出下面各運算式運算過最終的資料型態與運算結果:

(a)ch/(s+f)-(i%d)         //double1.1536289119720458
(b)ch*(s-f)/i-d              //double154.02
(c)i+(f-ch)*s%(i+ch)   //double-75.3999
(d)25-(ch+s)/18           //double18



沒有留言:

張貼留言