欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Java假期作业(Day04)

时间:2023-06-10
一.选择题

1、【C语言】读程序,选择结果( D )

int main(){ int a = 5; if( a = 0 ){ printf("%d", a - 10); } else { printf("%d", a++); } return 0;}

A、-5      B、6      C、1      D、0

解析:注意 if 语句 if (a = 0),是一个等号,此时是赋值。那么a被改为了0,if条件就是假了;打印的时候,是后置++,所以先打印 a,那么结果就是0,最后对a进行自增运算,最终a还是变成1了,打印的时候还是0。

2、【C语言】关于野指针,下面说法错误的是( C )

A、野指针指可能指向非法的内存地址

B、野指针有时也可能指向合法的内存地址

C、野指针都是由指针未初始化导致的

D、对野指针的访问,可能会导致程序异常

解析:野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)指针变量在定义时如果未初始化,其值是随机的,指针变量的值是别的变量的地址,意味着指针指向了一个地址是不确定的变量,此时去解引用就是去访问了一个不确定的地址, 所以结果是不可知的。 所以C选项中:不一定都是未初始化引起的。也可能是,比如动态内存开辟后使用free释放,但是最后没有置空。 故:A B D均为正确的。

3、下列 java 程序的输出结果为( B )。

public class Example{ String str=new String("hello"); char[]ch={'a','b'}; public static void main(String args[]){ Example ex=new Example(); ex.change(ex.str,ex.ch); System.out.print(ex.str+" and "); System.out.print(ex.ch); } public void change(String str,char ch[]){ str="test ok"; ch[0]='c'; }}

A: hello and ab       B: hello and cb 

C: hello and a         D: test ok and ab

解析:主要考察引用的传递,是否会修改原来的值。建议在IDEA中运行和调试。 在change函数中,接受的都是引用,但是str修改的是形参自己的指向。ch是通过该引用修改了原来数组对象的内容。所以, 同学们需要注意,传引用什么时候,能够改变原来的指向的内容?就看是否通过当前这个引用,修改了原来的对象的内容。

4、已知有下列Test类的说明,在该类的main方法内,则下列哪个语句是正确的?( A )

public class Test { private float f = 1.0f; int m = 12; static int n = 1; public static void main (String args[]) { Test t = new Test(); }}

A: t.f;           B: this.n;

C: Test.m    D: Test.f

解析:A:同一个类中,可以访问私有的成员   

B:n是静态的,不能通过this访问   

C:m是普通的成员变量,需要通过对象的引用访问   

D:f是普通的成员变量,需要通过对象的引用访问

5、以下会产生信息丢失的类型转换是( B )

A: float a=10;

B: int a =(int)8846.0;

C: byte a=10; int b=-a

D: double d=100

解析:A:整数部分可以存入浮点型中

B:会丢失信息,小数部分无法保存,就算是0也不能保存

C:字面值10赋值给a,没有超过表示的范围,可以存储。int b = -a;一个字节赋值给4个字节没有问题

D:同A时一个道题。

二.代码题

1、有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个 人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

public class getAge{ public class static main(String[] args){ int n = 2, age = 10; for(int i = 2 ;i <= 5;i++){ age += n; } System.out.println("第五个人的年龄是:" + age); } }

private static int getAge(int age){ if(age==1) return 10; else return getAge(age-1)+2;}public static void main(String[] args) { System.out.println(getAge(5));}

2、给定一个3乘以3的二维数组,里面的数据随机生成。分别求出两个对角线的元素之和。

public static void main(String[] args) { Random random = new Random(); int[][] array = new int[3][3]; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { array[i][j] = random.nextInt(10); } } int sum1 = 0; int sum2 = 0; for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { //1、确定左到右的对角线 if(i == j) { sum1 += array[i][j]; } //2、确定右到左的对角线 if(i+j == array.length-1) { sum2 += array[i][j]; } } } System.out.println(sum1); System.out.println(sum2);}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。