您的位置:首页 > 其它

第十三讲习题参考答案

2009-11-13 19:56 239 查看
说明:这里给出的参考答案不能保证是最好的答案,并且只给出部分(对于没有给出答案的,如果你做了,感觉有问题,可以继续问)。

因为这里没有学习方法,所以所有代码都在main方法中完成。下面给出的答案都是main方法中的代码,你要执行这些代码,需要把基本框架写出来。

程序的基本框架:

public class Test1{

public static void main(String args[]){

// 要执行的代码写在这里

}

}



编程题:

3、 输出1到1000中能被7整除或者以7结尾的数。

最常见的答案:

for(int i=1;i<=1000;i++){

if(i%7==0 || i%10==7){

System.out.println(i);

}

}

不过这个程序要对1000个数进行遍历,其实这些数据规律性很强,可以利用这些规律,能被7整除也就是7的倍数,乘以1、2、3、4等等,以7结尾,相当于7+0、7+10、7+20、7+30等等。下面的代码是改造后的代码:

int value1=7; // 表示7 的倍数这一组

int value2=7; // 表示余数为7的这一组

while(true){

if(value1 < value2){

if(value1>1000) break;

System.out.println(value1);

value1+=7;

}else if(value1 == value2){

if(value1>1000) break;

System.out.println(value1);

value1+=7;

value2+=10;

}else{

if(value2>1000) break;

System.out.println(value1);

value2+=10;

}

}

如何不考虑顺序:

int number1=1000/7; // 能被7整除的数的个数

int number2=1000/10; // 余数为7的个数

int value=7;

for(int i=0;i<number1;i++) {

System.out.println(value);

value+=7;

}

value=7;

for(int i=0;i<number2;i++){

if(value%7 != 0){ // 去掉重复的

System.out.println(value);

value+=10;

}

}

读程序题:

1. 写结果,如果有错,指出错误

double a = 3.1251111111;
double b = 1.0417037037;
System.out.println((a/3)==b);
System.out.println((b*3)==a);
答案:如果你认真计算,结果应该为true,但实际上不一定为true,我测试的结果为false,这道题不在于你答true或者false,而应该指出这种用法不对。因为计算机采用二进制表示,一个数很可能不能被准确表示。例如0.1表示为二进制0.000110011001100110011,不管采用多长都没有办法表示。所以对它进行加减乘除运算之后的结果也可能是不准确的,所以不能使用等号进行判断。只能按照一定的精度进行处理:
a/3-b>0.0000001 && a/3-b<0.0000001。(这个一定要牢记,在其他语言中也会有这样的问题,至少在C++中有)
2. 写结果,如果有错,指出错误
int a=5;
System.out.println(a++);
System.out.println(++a);

int b=a++;
int c=++a;
System.out.println(b);
System.out.println(c);
答案:5 7 7 9 (考察++在前和在后的区别)
3. 写结果,如果有错,指出错误
int a=0123;
int b=123;
System.out.println(a);
System.out.println(b);
答案:83 123 (考察8进制和16进制表示)
4. 写结果,如果有错,指出错误
byte b = 3;
short s = 4;
s = s+b++;
System.out.println(s);
答案:s = s+b++;有错。整数的加减乘除如果操作数不是int,会转换为int,然后把int赋值给short后者byte时会出错。需要进行强制类型转换。
5.写结果,如果有错,指出错误
int a=10;
int b=20;
int c=30;
if(a++ < b || a++ < c){
System.out.println(a);
}else{
System.out.println(b);
}
答案:11(考察||的用法)
6. 写结果,如果有错,指出错误
int a=9;
int b=5;
int c=-5;
System.out.println(a/b);
System.out.println(a/c);

System.out.println(a%b);
System.out.println(a%c);
如果把a=9改为a=-9,结果是什么
答案:1 -1 4 -4 (结果为整数)
7.指出代码中的错误
int a=123456;
short s=123456;
a=123456789123;
long l=123456789123;
float f=32;
float f=32.3;
double d=32.3;
答案:代码第2、3、4、6行有错误
8.写结果,如果有错,指出错误
int a=10;
int b=3;
if(a>b){
System.out.println(1);
}elseif(a=b){
System.out.println(2);
}else{
System.out.println(3);
}
答案:代码错误,第五行应该为}else if(a==b){

李绪成 CSDN Blog:http://blog.csdn.net/javaeeteacher
邀请您为好友:http://student.csdn.net/invite.php?u=124362&c=7be8ba2b6f3b6cc5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: