Java假期作业(Day05)

本文涵盖了C语言和Java编程的选择题解析,涉及头文件搜索路径、表达式计算、多态性概念、Java语法及继承原理。同时提供了两道编程题的解答,包括求解相亲数和递归计算数组元素之和的方法。通过这些题目,深入理解编程语言的基础概念和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.选择题

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));
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值