Java面向对象编程(14)

简介: Java面向对象编程(14)

定义学生、教师和课程的关系模式 S (S#,Sn,Sd,Dc,SA )(其属性分别为学号、姓名、所在系、所在系的系主任、年龄); C ( C#,Cn,P# )(其属性分别为课程号、课程 名、先修课); SC ( S#,C#,G) (其属性分别为学号、课程号和成绩),则该关系为( )

A. 第二范式

B. 第一范式

C. 第三范式

D. BCNF范式

答案:A

下面不属于数据库系统特点的是( )

A. 数据冗余度高

B. 数据具有完整性

C. 数据共享性好

D. 数据独立性高

答案:A

将实体-联系模型转换为关系模型时,实体之间多对多联系在关系模型中的实现方式是( )

A. 建立新的关系

B. 建立新的属性

C. 增加新的关键字

D. 建立新的实体

答案:A

关于求和函数,以下说法正确的是()

A. sum返回表达式中所有数的总和,因此只能用于数字类型的列

B. Avg返回表达式中所有数的平均值,可以用于数字型和日期型的列

C. Max和Min可以用于字符型的列 D. Count可以用于字符型的列

答案:A

有三个关系 R 、 S 和 T 如下:

则由关系 R 和 S 得到关系 T 的操作是( )。

A. 自然连接

B. 交

C. 除

D. 并

答案:C

设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为( )。

A. 课号,成绩

B. 学号,成绩

C. 学号,课号

D. 学号,姓名,成绩

答案:C

关系数据库所采用的数据存放形式是()

A. 二维表

B. 链表

C. 网状

D. 二叉树

答案:A

某关系表有:员工(部门编号,部门名称,员工编号,姓名,性别,年龄),则其主码为()。

A. 部门编号、员工编号

B. 员工编号

C. 姓名

D. 部门编号

答案:A

在使用 limit 子句时,如果没有足够的行,则:

A. MySQL会报错

B. MySQL将只返回它能返回的那么多行

C. MySQL将不会返回任何行

答案:B

不属于SQL语句的是()

A. SELECT

B. CANCEL

C. UPDATE

D. ALTER

答案:B

计算日期到天数的转化

题目描述:根据输入的日期,计算是这一年的第几天

。 保证年份为4位数且日期合法。

进阶:时间复杂度:O(N),空间复杂度:O(1)

输入描述:输入一行,每行空格分割,分别是年,月,日

输出描述:输出是这一年的第几天

写法一:


public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while (scanner.hasNext()){
            int y=scanner.nextInt();
            int m=scanner.nextInt();
            int d=scanner.nextInt();
            int sum=0;
            int[] day={31,59,90,120,151,181,212,243,273,304,334,365};
            if (m>=2){
                sum=sum+day[m-2];
            }
            sum=sum+d;
            if (y%4== 0 && y %100 !=0 || y%400==0){
                sum=sum+1;
            }
            System.out.println(sum);
        }
    }
}

写法2:

import java.util.Scanner;
public class Main2 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int[] array=new int[3];
        //将年月日分别对应到数组中
        for (int i = 0; i < 3; i++) {
            array[i]=scanner.nextInt();
        }
          //下述对应关系
        int year=array[0];
        int moth=array[1];
        int day=array[2];
            //闰年的日子
        int[] ret1={31,29,31,30,31,30,31,31,30,31,30,31};
         //不是闰年的日子
        int[] ret2={31,28,31,30,31,30,31,31,30,31,30,31};
        int sum=0;
       if (findYear(year)){
         //是闰年的情况
            for (int i = 0; i < moth-1; i++) {
                sum=sum+ret1[i];
            }
            sum=sum+day;
        }else {
         //不是闰年的情况
            for (int i = 0; i < moth-1; i++) {
                sum=sum+ret2[i];
            }
            sum=sum+day;
        }
        System.out.println(sum);
    }
    public static Boolean findYear(int year){
        if (year % 4==0 && year %100 !=0 || year % 400==0){
            return true;
        }
        return false;
    }
}

幸运的袋子

题目描述:一个袋子里面有n个球,每个球上面都有一个号码(拥有相同号码的球是无区别的)。如果一个袋子是幸运的当且仅当所有球的号码的和大于所有球的号码的积。

例如:如果袋子里面的球的号码是{1, 1, 2, 3},这个袋子就是幸运的,因为1 + 1 + 2 + 3 > 1 * 1 * 2 * 3

你可以适当从袋子里移除一些球(可以移除0个,但是别移除完),要使移除后的袋子是幸运的。现在让你编程计算一下你可以获得的多少种不同的幸运的袋子。

输入描述:第一行输入一个正整数n(n ≤ 1000) 第二行为n个数正整数x (x ≤ 1000)

输出描述:输出可以产生的幸运的袋子数


public class Main3 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int[] a=new int[n];
        for (int i = 0; i < n; i++) {
            a[i]=scanner.nextInt();
        }
        Arrays.sort(a);
        System.out.println(count(a,n,0,0,1));
    }
    public static int count(int[] a, int n,int pos, int sum, int multi){
        int count=0;
        for (int i = pos; i < n; i++) {
            sum=sum+a[i];
            multi=multi*a[i];
            if (sum>multi){
                count=count+1+count(a,n,i+1,sum,multi);
            }else if (a[i]==1){
                count=count+count(a,n,i+1,sum,multi);
            }else {
                break;
            }
            sum=sum-a[i];
            multi=multi/a[i];
            while (i<n-1 && a[i]==a[i+1]){
                i++;
            }
        }
        return count;
    }
}
相关文章
|
25天前
|
安全 Java 数据安全/隐私保护
|
1月前
|
Java 数据库连接 API
Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API
Java 是一种广泛使用的、面向对象的编程语言,始于1995年,以其跨平台性、安全性和可靠性著称,应用于从移动设备到数据中心的各种场景。基础概念包括变量(如局部、实例和静态变量)、数据类型(原始和非原始)、条件语句(if、else、switch等)、函数、循环、异常处理、数据结构(如数组、链表)和面向对象编程(类、接口、继承等)。深入学习还包括包、内存管理、集合框架、序列化、网络套接字、泛型、流、JVM、垃圾回收和线程。构建工具如Gradle、Maven和Ant简化了开发流程,Web框架如Spring和Spring Boot支持Web应用开发。ORM工具如JPA、Hibernate处理对象与数
94 3
|
1月前
|
Java
Java面向对象编程
Java面向对象编程
|
1月前
|
存储 Java
JAVA面向对象编程
JAVA面向对象编程
|
1月前
|
Java
Java中的面向对象编程特性(封装、继承、多态)
Java中的面向对象编程特性(封装、继承、多态)
|
2月前
|
设计模式 Java 程序员
Java中面向对象编程的实现
Java中面向对象编程的实现
|
2月前
|
存储 Java
深入解析 Java 面向对象编程与类属性应用
面向对象编程 (OOP) 是一种编程范式,它将程序组织成对象。对象包含数据和操作数据的方法。 OOP 的优势: 更快、更易于执行 提供清晰的结构 代码更易于维护、修改和调试 提高代码重用性 减少开发时间
65 0
|
3月前
|
Java 编译器
【Java不看后悔系列】|面向对象编程|[继承、封装、多态全覆盖]
【Java不看后悔系列】|面向对象编程|[继承、封装、多态全覆盖]
18 0
|
3月前
|
Java 编译器
【JAVA面向对象编程】--- 探索子类如何继承父类
【JAVA面向对象编程】--- 探索子类如何继承父类
19 0
|
3月前
|
Java 编译器
【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4)
【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4)
22 0