【Java笔试强训 15】
🎉🎉🎉点进来你就是我的人了
博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!欢迎志同道合的朋友一起加油喔🤺🤺🤺
目录
一、选择题
二、编程题
🔥查找输入整数二进制中1的个数
🔥手套
一、选择题
1.score(stu_id,name,math,english,Chinese), 下列语句正确的是( )
A Select sum(math),avg(chinese) from score
B Select *,sum(english) from score
C Select stu-id, sum(math) from score
D Delete * from score
正确答案: A
2、SQL Server 2005 属于( )
A 应用软件
B 操作系统
C 语言处理系统
D 数据库管理系统
正确答案: D
参考答案:
SQL Server 2005 是 Microsoft 公司推出的关系型数据库管理系统。故正确答案为 D 选项。
3、设有一个数据库mydb中有一个表tb1,表中有六个字段,主键为ID,有十条记录,ID从0到9,以下代码输出结果是()
A 6
B 4
C 3
D 5
正确答案: C
4、在一个mysql查询中,使用哪一个关键字能去除重复列值()
A group by
B order by
C distinct
D limit
正确答案: C
参考答案:
A是分组去重、B是排序、D是分页
5、在一个含有group by的查询sql中,同时存在having和where,sql在解析执行的时候,先执行的是哪一个?
A having
B where
正确答案: B
6、数据库做join操作时,至少要涉及到几张表?
A 3
B 1
C 2
D 4
正确答案: B
7、在下面的两个关系中,职工号和部门号分别为职工关系和部门关系的主键(或称主码)职工(职工号、职工名、部门号、职务、工资) 部门(部门号、部门名、部门人数、工资总额) 在这两个关系的属性中,只有一个属性是外键(或称外来键、外码、外来码),它是 ______
A 职工关系的“职工号”
B 职工关系的“部门号”
C 部门关系的“职工号”
D 部门关系的“部门号”
正确答案: B
8、下列哪一个命令为删除 sample 数据库的 tb_ame 表()
A delete from tb_ame
B delete from sample.tb_ame
C drop table tb_ame
D drop table sample.tb_ame
正确答案: D
9、语句 SELECT IF(-1,5,2) 的返回值是:
A 2
B 6
C -1
D 5
正确答案: D
参考答案:
if()函数的具体语法如下:IF(exprlexpr2expr3),如果expr1的值为真(boalean值true,或不为0的数值),则返回expr2的值,否则返回expr3的值。
10、数据库中存在学生表S、课程表C和学生选课表SC三个表,它们的结构如下:S(S#,SN,SEX,AGE,DEPT)、C(C#,CN)、SC(S#,C#,GRADE)其中:S#为学号,SN为姓名,SEX为性别,AGE为年龄,DEPT为系别,C#为课程号,CN为课程名,GRADE为成绩。请检索选修课程号为C2的学生中成绩最高的学号。( )
A 、SELECT S#,SUM(GRADE)FROM SC WHERE GRADE>=60 GROUP BY S# ORDER BY 2 DESC HAVING COUNT(*)>=4 WHERE C#=“C2” AND GRADE>=(SELECT GRADE FORM SC WHERE C#=“C2”)
B、 SELECT S# FORM SC WHERE C#=“C2” AND GRADE IN (SELECT GRADE FORM SC WHERE C#=“C2”)
C、 SELECT S# FORM SC WHERE C#=“C2” AND GRADE NOT IN (SELECT GRADE FORM SC WHERE C#=“C2”)
D、 SELECT S# FORM SC WHERE C#=“C2” AND GRADE>=ALL (SELECT GRADE FORM SC WHERE C#=“C2”)
正确答案: D
all表示全部都是满足才返回true。
二、编程题
🔥查找输入整数二进制中1的个数
查找输入整数二进制中1的个数_牛客题霸_牛客网
【解题思路】:
本题是计算一个数二进制表示中1的个数,通过(n >> i) & 1可以获取第i位的二进制值,每次n右移一位,可以获取一位的二进制值,右移32次,n变成0,循环终止。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
int count=0;
while(n!=0){
if((n&1)==1){
count++;
}
n=n>>1;
}
System.out.println(count);
}
}
}
🔥手套
手套_牛客题霸_牛客网
【解题思路】:
对于非0递增序列a1,a2…an,要想最终取值覆盖每一个种类 n = sum(a1…an) - a1 + 1(也就是总数减去最小值之后加一) 所以对于左右手手套颜色都有数量的序列,想要覆盖每一种颜色,则最小数量leftsum = 左边数量和 - 左边最小值 + 1, rightsum = 右边数量和 - 右边的最小值 + 1。而对于有0存在的,则需要做累加,保证覆盖每一种颜色。
import java.util.*;
public class Gloves {
public int findMinimum(int n, int[] left, int[] right) {
int leftSum=0;
int rightSum=0;
int leftMin=Integer.MAX_VALUE;
int rightMin=Integer.MAX_VALUE;
int sum=0;0;//存放某种颜色的一只手的手套个数为0的时候,另一只手的手套数量
for(int i=0;i<n;i++){
if(left[i]*right[i]==0){
sum+=left[i]+right[i];
}else{
leftSum+=left[i];
rightSum+=right[i];
if(leftMin>left[i]){
leftMin=left[i];
}
if(rightMin>right[i]){
rightMin=right[i];
}
}
}
return Math.min(leftSum-leftMin+1,rightSum-rightMin+1)+1+sum;
}
}