定义学生、教师和课程的关系模式 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
1 && a[i]==a[i+1]){ i++; } } return count; } }