Java经典笔试题—day14

news/2024/11/7 20:53:47/

Java经典笔试题—day14

  • 🔎选择题
  • 🔎编程题
    • 🍭计算日期到天数转换
    • 🍭幸运的袋子
  • 🔎结尾

🔎选择题

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

A. 第二范式
B. 第一范式
C. 第三范式
D. BCNF范式

A

范式是符合某一种级别的关系模式的集合
关系数据库中的关系必须满足一定的要求, 满足不同程度要求的为不同范式

  • 目前关系数据库有六种范式
    • 第一范式(1NF)
    • 第二范式(2NF)
    • 第三范式(3NF)
    • Boyce-Codd范式(BCNF)
    • 第四范式(4NF)
    • 第五范式(5NF)
  • 满足最低要求的范式是第一范式(1NF)
  • 在第一范式基础上进一步满足更多要求的称为第二范式(2NF), 其余范式依次类推
    一般来说, 数据库只需满足第三范式(3NF)即可
  • 第一范式(1NF): 主属性(主键)不为空且不重复, 字段不可再分(存在非主属性对主属性的部份依赖)
  • 第二范式(2NF): 关系模式是第一范式, 且非主键完全依赖于主键
  • 第三范式(3NF): 关系模式是第二范式, 且非主键与非主键之间不存在依赖关系
  • BCNF: 所有属性都不传递依赖于关系的任何候选键


    对于 S 表, 主键为学号, 非主键为姓名, 所在系, 所在系系主任, 年龄
    满足第一范式(主键非空且不重复, 字段不可再分)
    满足第二范式(关系模式是第一范式, 且非主键完全依赖于主键)
    不满足第三范式(所在系所在系系主任 存在依赖关系, 通过 所在系 能确定 所在系系主任 )
    在这里插入图片描述
    对于 C 表, 主键为课程号, 非主键为课程名, 先修课
    满足第一范式(主键非空且不重复, 字段不可再分)
    满足第二范式(关系模式是第一范式, 且非主键完全依赖于主键)
    满足第三范式(关系模式是第二范式, 且非主键与非主键之间不存在依赖关系)
    在这里插入图片描述
    对于 SC 表, 主键为学号, 课程号(联合主键), 非主键为成绩
    满足第一范式(主键非空且不重复, 字段不可再分)
    满足第二范式(关系模式是第一范式, 且非主键完全依赖于主键)
    满足第三范式(关系模式是第二范式, 且非主键与非主键之间不存在依赖关系)
    在这里插入图片描述
    综上所述, 答案为第二范式

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

A. 数据冗余度高
B. 数据具有完整性
C. 数据共享性好
D. 数据独立性高

A

  • 数据库系统的特点
    • 数据共享性高, 冗余度低
    • 具有高度的物理独立性和逻辑独立性
    • 整体结构化, 用数据模型描述
    • 由数据库系统提供数据安全性, 完整性, 并发控制和恢复能力

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

A. 建立新的关系
B. 建立新的属性
C. 增加新的关键字
D. 建立新的实体

A

  • 实体-联系模型, 也成为实体-联系图(ER图)
  • ER图包含4个基本部分
    • 矩形框: 表示实体的类型
    • 菱形框: 表示联系的类型
    • 椭圆形框: 表示实体类型和联系类型的属性
    • 直线: 联系类型与其涉及的实体类型之间用直线连接

例如每个专业设置多门课程, 某些课程可被多个专业设置
专业(实体)与课程(实体)之间的联系在ER图中表示为多对多, 但在关系模型中, 需要通过中间表(建立新的关系)来表达多对多的关系

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

A. sum返回表达式中所有数的总和,因此只能用于数字类型的列
B. Avg返回表达式中所有数的平均值,可以用于数字型和日期型的列
C. Max和Min可以用于字符型的列
D. Count可以用于字符型的列

A

B. Avg 可以应用于数字型字段(列), 不能应用于日期型字段(列)
C. Max 和 Min 应用于数字型字段(列), 不能应用于字符型字段(列)
D. Count 可以应用于任意类型的字段(列), 但不属于求和函数

(5)有三个关系 R 、 S 和 T 如下:
则由关系 R 和 S 得到关系 T 的操作是( )

在这里插入图片描述

A. 自然连接
B. 交
C. 除
D. 并

C

  • 自然连接
    • 如果关系R与S具有相同的属性B, 且该属性组的值相等时的连接称为自然连接, 结果关系的属性集合为R的属性并上S减去属性B的属性集合.(自然连接也可以看作是在广义笛卡尔积R x S中选出同名属性上符合相等条件元组, 再进行投影, 去掉重复的同名属性, 组成新的关系)
    • 取出两个结果集中字段相同的部分
      在这里插入图片描述

  • 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    • 合并两个结果集中字段相同的部分
      在这里插入图片描述

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

A. 课号,成绩
B. 学号,成绩
C. 学号,课号
D. 学号,姓名,成绩

C

SC 表的学号作为外键关联 S 表的主键学号
SC 表的课号作为外键关联 C 表的主键课号
因此, SC 表的主键为学号, 课号(联合主键)

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

A. 二维表
B. 链表
C. 网状
D. 二叉树

A

关系数据库存放数据形式类似于 Excel, 属于二维表的形式
在这里插入图片描述

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

A. 部门编号、员工编号
B. 员工编号
C. 姓名
D. 部门编号

A

  1. 判断员工编号是否可以重复
    • 员工编号可以重复(需利用其他字段区分是否为同一员工)
      类似于 id = 1001, 部门编号分别为 dept = 1 和 dept = 2
    • 员工编号不可以重复(利用员工编号即可区分是否为同一员工)
      类似于 id = 1001, id = 1002
  2. 根据题目, 已经给出部门编号等其他信息, 表明员工编号可以重复
  3. 综上, 主键为部门编号, 员工编号

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

A. MySQL会报错
B. MySQL将只返回它能返回的那么多行
C. MySQL将不会返回任何行

B

(10)不属于SQL语句的是()

A. SELECT
B. CANCEL
C. UPDATE
D. ALTER

B

A. 查询的关键字
C. 修改的关键字
D. 管理表结构的关键字

🔎编程题

🍭计算日期到天数转换


题目描述

根据输入的日期,计算是这一年的第几天。
保证年份为4位数且日期合法。

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

输入描述

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

输出描述

输出是这一年的第几天

在这里插入图片描述

解题思路

  • 判断 year 是否为闰年
  • 注意给出的 month 表示计算到当月的天数, 因此加上给出的 day 即可
//计算日期到天数转换
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int year = scan.nextInt();int month = scan.nextInt();int day = scan.nextInt();calcDay(year, month, day);}private static void calcDay(int year,int month,int day) {// flag --> 判断是否为闰年boolean flag = false;if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) flag = true;//   month    1   2  3   4   5   6   7   8   9   10  11int[] days = {31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30};days[1] = flag ? 29 : 28;int ret = 0;for(int i = 0; i < month - 1; i++) {ret += days[i];}System.out.println(ret + day);}}

📢题目链接
链接:link


🍭幸运的袋子


题目描述

一个袋子里面有n个球,每个球上面都有一个号码(拥有相同号码的球是无区别的)。如果一个袋子是幸运的当且仅当所有球的号码的和大于所有球的号码的积。
例如:如果袋子里面的球的号码是{1, 1, 2, 3},这个袋子就是幸运的,因为1 + 1 + 2 + 3 > 1 * 1 * 2 * 3
你可以适当从袋子里移除一些球(可以移除0个,但是别移除完),要使移除后的袋子是幸运的。现在让你编程计算一下你可以获得的多少种不同的幸运的袋子。

输入描述

第一行输入一个正整数n(n ≤ 1000) 第二行为n个数正整数xi(xi ≤ 1000)

输出描述

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

在这里插入图片描述

解题思路

以 n = 5, xi 分别为 1, 5, 7, 3, 1为例

  • 先进行排序(下面解释)
    • 排序后的结果为 1, 1, 3, 5, 7
  • 定义 sum = 0(和), mul = 1(乘积), cnt = 0(产生的幸运袋子数)

在这里插入图片描述
在这里插入图片描述

  • 从1, 1 开始
    • 判断1, 1, 3 能否构成幸运袋子(√)
      • 判断1, 1, 3, 5 能否构成幸运袋子(x)
    • 判断1, 1, 5 能否构成幸运袋子(√)
      • 判断1, 1, 5, 7 能否构成幸运袋子(x)
    • 判断1, 1, 7 能否构成幸运袋子(√)
  • 从1, 3 开始
    • 判断1, 3, 5 能否构成幸运袋子(x)
    • 判断1, 3, 7 判断1, 1, 3 能否构成幸运袋子(x)
  • 从1, 5 开始


排序是为了当判断当前元素不能构成幸运袋子时, 不必再判断后面的数字
因为后面的数字 ≥ 前面的数字

//幸运的袋子
import java.util.Scanner;
import java.util.Arrays;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[] nums = new int[n];for (int i = 0; i < n; i++) nums[i] = sc.nextInt();Arrays.sort(nums);System.out.println(count(nums, n, 0, 0, 1));}private static int count(int[] nums, int n, int pos, int sum, int multi) {int cnt= 0;for (int i = pos; i < n; i++) {sum += nums[i];multi *= nums[i];if (sum > multi) {cnt= cnt+ 1 + count(nums, n, i + 1, sum, multi);} else if (nums[i] == 1) {cnt= cnt+ count(nums, n, i + 1, sum, multi);} else {break;}sum = sum - nums[i];multi = multi / nums[i];// 拥有相同号码的球是无区别的while (i < n - 1 && nums[i] == nums[i + 1]) {i++;}}return cnt;}
}

📢题目链接
链接:link


🔎结尾

创作不易,如果对您有帮助,希望您能点个免费的赞👍
大家有什么不太理解的,可以私信或者评论区留言,一起加油


http://www.ppmy.cn/news/97900.html

相关文章

vuex五大核心、辅助函数

一、vuex五大核心 分别为&#xff1a;state、getters、mutations、actions、modules state&#xff1a;用来存放我们的状态&#xff0c;也可以理解数据&#xff0c;类似与data中定义的数据&#xff1b;mutations:可以获取state里面的状态&#xff0c;进行修改&#xff0c;他只…

MySQL锁的分类

MySQL锁的分类 全局锁 表级锁 ● 表锁 ● 元数据锁&#xff0c;Meta Data Lock&#xff0c;MDL锁 ● 意向锁 ● AUTO_INC 锁 行级锁(Innodb引擎牛比的地方) ● record lock&#xff0c;记录锁&#xff0c;也就是仅仅把一条记录给锁上了 ● gap lock&#xff0c;间隙锁&#xff…

如何成功申请计算机软件著作权【申请流程完整记录】

致谢 &#xff1a;此博文的编写包括软著的申请&#xff0c;均借鉴了大佬【万里守约】的博客&#xff0c;很幸运一次性通过 — 提示&#xff1a;此博文仅适合个人申请&#xff0c;因为我是自己一个人的项目&#xff0c;自己一个人申请软著 文章目录 前言&#xff1a;一、网站注册…

微服务开发系列 第八篇:Elasticsearch

总概 A、技术栈 开发语言&#xff1a;Java 1.8数据库&#xff1a;MySQL、Redis、MongoDB、Elasticsearch微服务框架&#xff1a;Spring Cloud Alibaba微服务网关&#xff1a;Spring Cloud Gateway服务注册和配置中心&#xff1a;Nacos分布式事务&#xff1a;Seata链路追踪框架…

烟火识别智能监测系统 yolov5

烟火识别智能监测系统基于pythonyolov5网络模型算法智能分析技术&#xff0c;烟火识别智能监测算法模型对现场画面进行实时分析&#xff0c;发现现场出现烟火立即抓拍实时告警。我们选择当下卷积神经网络YOLOv5来进行火焰识别检测。6月9日&#xff0c;Ultralytics公司开源了YOL…

每日学术速递5.28

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CL 1.Improving Factuality and Reasoning in Language Models through Multiagent Debate 标题&#xff1a;通过多主体辩论改进语言模型中的事实性和推理 作者&#xff1a;Yilun Du,…

调研:huggingface-diffusers

1. Diffusers能带来什么 1.1 Overview Diffusers是集成state-of-the-art预训练diffusion模型库&#xff0c;用于生成图像、音频甚至3D结构。 Diffusers库注重可用性而非高性能。 Diffusers主要提供三项能力&#xff1a; State-of-the-art diffusion pipelines&#xff0c;…

分治入门+例题

目录 &#x1f947;2.3.2 合并排序 &#x1f947;2.3.3 快速排序 &#x1f33c;P1010 [NOIP1998 普及组] 幂次方 &#x1f333;总结 形象点&#xff0c;分治正如“凡治众如治寡&#xff0c;分数是也”&#xff0c;管理少数几个人&#xff0c;即可统领全军 本质&#xff…