一.选择题
1、【C语言】 include <x.h> 和 include "y.h" ,以下说法正确的是( A )
A. “ ” 表示先到源文件所在目录下搜索头文件
B. <> 表示先到源文件所在目录下搜索头文件
C. 两者用法没有区别
解析:< > 代表是从 C库中去查找。而" "指定的文件则先在当前路径寻找,找不到时再到系统include 路径中寻找。
2、【C语言】 int i=10 ,j= 10 ,k= 3 ; k*=i+j k 最后的值是? ( A )
A: 60 B: 40 C: 50 D: 23
解析:化解为:k = k*(i+j);
3、面向对象方法的多态性是指( C )
A:一个类可以派生出多个特殊类
B:一个对象在不同的运行环境中可以有不同的变体
C:针对一消息,不同的对象可以以适合自身的方式加以响应
D:一个对象可以是由多个其他对象组合而成的
解析:A:不是多态相关,是继承相关 B:是向上转型的问题
C:满足多态的特性 D:是组合的特点
4、关于下面程序,哪些描述是正确的: ( B )
public class While { //1
public void loop() { //2
int x= 10; //3
while ( x ) { //4
System.out.print("x minus one is " + (x - 1));//5
x -= 1; //6
}
}
}
A:行1有语法错误 B:行4有语法错误
C:行5有语法错误 D:行6有语法错误
E:行2有语法错误,loop是关键字 F:程序能够正常编译和运行
解析:while的条件必须是布尔表达式,此时x是整数的数据类型。在Java中,没有所谓的非0是真,0是假。只有true和false来表示真假。
5、在 java 中,下列对继承的说法,正确的是( A )
A:子类能继承父类的所有成员 B:子类继承父类的非私有方法和状态
C:子类只能继承父类的 public 方法和状态 D:子类只能继承父类的方法
解析:B:需要注意,私有的也被继承了,只是再子类不能访问。
C:private,public,protected,默认的权限,都被继承了。 D:普通的成员变量也可以被继承。
二.代码题
1、一对相亲数是指:甲的约数之和等于乙,乙的约数之和等于甲。求1000以内的相亲数。
//求某个数字的约数的和
public static int divSum(int n) {
int sum = 0;
for (int i=1;i<n;i++) {
if (n%i == 0) {
sum+=i;
}
}
return sum;
}
public static void main(String[] args) {
for (int i = 1; i < 1000; i++) {
int j = divSum(i);
if (i > j && divSum(j) == i) {
System.out.println(i+" "+j);
}
}
}
解析:约数是只要整除了就是约数。8的约数,1,2,4,8.但是本题中,计算的时候不用考虑数 字本身。所以,我们可以先求数字甲n的约数和,假设为sumN;反过来再去求sumN的约数和是不是等于数字乙N,满足这个 表达式,那么就是相亲数。1000以内的相亲数是284,220.
2、编写一个递归程序,求一个一维数组的所有元素的和?
解析:数组长度为1,直接返回0下标,大于1,开始进行递归。要求长度为n的数组和sum(array,n) = sum(array,n-1)+array[n-1];这个就是递推公式。
public static int arraySum(int[] array,int len) {
if(len == 1) {
return array[0];
}
return array[len-1]+arraySum(array,len-1);
}
public static void main(String[] args) {
int[] array1 = {1,3,5,7,9};
System.out.println(arraySum(array1,array1.length));
}