【www.arisingsemi.com--IT认证】

3333333
实验3  运算符和表达式的使用
1. 登陆上机练习系统,完成实验03中的4个题目,并提交。
20001 20003 20007 20011
20001  求两个数的和与差
输入整数a和b,计算并输出a、b的和与差。
例:
输入
2  -8
输出
The sum is -6
The difference is 10
import r;
public class Test20001{
public static void main(String args[]){
int a, b, sum, diff;
Scanner in=new Scanner();
a=t();
b=t();
/*------------------*/
sum=a+b;
diff=a-b;

n("The sum is "+sum);
n("The difference is "+diff);
}
}
20003  华氏温度转换为摄氏温度
输入华氏温度f,计算并输出相应的摄氏温度c。
c = 5/9(f-32).
例:括号内是说明
输入
17.2 (华氏温度)
输出
The temprature is -8.222222222222223
import r;
public class Test20003 {
public static void main(String[] args) {
Scanner in=new Scanner();
double f, c;
f=uble();
/*------------------*/
c=5.0/9*(f-32);  //注意:5/9结果是0
n("The temprature is "+c);   
}
}
20007  计算三门课程的平均成绩
math=87;
eng=72;
comp=93;
average=(math+eng+comp)/3;

20011  计算一个3位数的各位数字
c=n%10;        //个位
b=(n/10)%10;    //十位
a=(n/100)%10;    //百位

2. 阅读以下程序,写出程序的运行结果,并上机运行验证。

运行结果:
m=2 k=1
x=1.0 y=2.0 z=-3.0
ch1=A ch2=A
ch1=A ch2=a
Hello,Welcome to core Java。
思考:
(1) 字符"A"和"a"之间有什么关系。
字符"A"的Unicode码比字符"a"的小32。
(2) 假设字符型变量ch中保存一个大写字母,执行ch+=("a"-"A" );后,ch中是什么。
ch中是相应的小写字母。例:若ch="B",执行ch+=("a"-"A" );后ch="b"。

3. 阅读以下程序,写出程序的运行结果,并上机运行验证。
运行结果:
m=3 n=2. m大于n吗?true
m=2 n=2. m大于n吗?false
str1=Hello;str2=Hello。

s1和s2相等吗?false
思考:
(1) s1和s2为什么不相等。
s2比s1多一个字符“。”,所以不相同。

(2) s1和s2哪一个大。
s2比s1大。
4. 阅读以下程序,写出程序的运行结果,并上机运行验证。


运行结果:
逻辑变量b1=true、b2=false
b1^b2(异或运算)的结果是:true
b1^。b2(b2取反后与b1异或运算)的结果是:false
思考:
(1) 如果给 b1赋值2,程序会怎样。
会出错。
因为类型不匹配:不能从int转换为boolean。
5. 阅读以下程序,写出程序的运行结果,并上机运行验证。
运行结果:
第1段测试代码输出
-1
127
-127
-128
第2段测试代码输出
f=1.23456792E8
d=1.23456789123456784E17
第3段测试代码输出
float型变量强制转换为int型的结果是:3
int型变量运算:(m+2*n)/k的结果是:2
(m+2*n)/k的结果赋值给float型变量后x=2.0
思考:
(1) 分析第1段代码,说明在什么情况下,int类型的数值转换为byte类型,会出现符号变化,即正数变负数,负数变正数。
为何输出会不同。
如果数值超出byte类型的取值范围时,会出现符号变化。因转换时从int类型数值的二进制补码形式中截取低8位,作为byte类型的补码,所以输出会不同。
(2) 分析第2段代码,说明整数类型向浮点型转换是否可能出现精度损失,是否需要强制转换。

整数类型向浮点型转换可能出现精度损失,但不需要强制转换。
(3) 语句float x=3.14f; 改为float x=3.14; 会出错,为什么。

因为3.54是double类型,不能赋给float类型的变量x,在3.54后面加F或f,将其转换成float类型,就可以赋值了。
(4) 如果将x=(m+2*n)/k改为x=(m+2*n)/(float)k,x的结果是多少。

x=(m+2*n)/k=7/3=2
x=(m+2*n)/(float)k=7/3.0=2.3333333
6. 阅读以下程序,写出程序的运行结果,并上机运行验证。
运行结果:
i=7  j=6  k=3
t=13  i=8  j=5  k=3
表达式c1+j*k/j%i的结果是:100
f=false  i=7  j=6
f=true  j=6
思考:
(1) 分析语句 t=i+++k%--j*2; 的执行过程。
即 t=(i++)+k%(--j)*2; 执行过程如下:
--j; 得j为5
t=i+k%j*2=7+3%5*2=7+3*2=13;
i++;  得i为8
(2) 表达式c1+j*k/j%i的结果是什么类型。为什么。
字符和整数相加得到什么。
是int,因为字符变量c1自动转换成int后参加运算。

字符和整数相加得到整数。
(3) 把语句f=i

本文来源:http://www.arisingsemi.com/it/63980/