(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++)
(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++));
}
}
(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();
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的畫法,繪出資料型態的轉換過程與資料運算過程:double d=13.62;
(a) s+(f/s)+(ch*i)
(b)ch+d/(s-i)*f
(c)(s+d)/ch*(d+i)
ans
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
沒有留言:
張貼留言