笔试强训SQL day15

一、选择题给出数据表

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 (正确)
正确答案: A
2、SQL Server 2005 属于( )
A 应用软件
B 操作系统
C 语言处理系统
D 数据库管理系统
他的回答: D (正确)
正确答案: D
参考答案:
SQL Server 2005 是 Microsoft 公司推出的关系型数据库管理系统。故正确答案为 D 选项。
3、设有一个数据库mydb中有一个表tb1,表中有六个字段,主键为ID,有十条记录,ID从0到9,以下代码输出结果是()
在这里插入图片描述

A 6
B 4
C 3
D 5
他的回答: C (正确)
正确答案: C
4、在一个mysql查询中,使用哪一个关键字能去除重复列值()
A group by
B order by
C distinct
D limit
他的回答: C (正确)
正确答案: C
参考答案:
A是分组去重、B是排序、D是分页
5、在一个含有group by的查询sql中,同时存在having和where,sql在解析执行的时候,先执行的是哪一个?
A having
B where
他的回答: A (错误)
正确答案: B
6、数据库做join操作时,至少要涉及到几张表?
A 3
B 1
C 2
D 4
他的回答: A (错误)
正确答案: B
7、在下面的两个关系中,职工号和部门号分别为职工关系和部门关系的主键(或称主码)职工(职工号、职工名、部门号、职务、工资) 部门(部门号、部门名、部门人数、工资总额) 在这两个关系的属性中,只有一个属性是外键(或称外来键、外码、外来码),它是 ______
A 职工关系的“职工号”
B 职工关系的“部门号”
C 部门关系的“职工号”
D 部门关系的“部门号”
他的回答: 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 (正确)
正确答案: D
9、语句 SELECT IF(-1,5,2) 的返回值是:
A 2
B 6
C -1
D 5
他的回答: B (错误)
正确答案: 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”)

他的回答: A (错误)
正确答案: D
all表示全部都是满足才返回true。

二、编程题

【查找输入整数二进制中1的个数】
输入一个正整数,计算它在二进制下的1的个数。
注意多组输入输出!!!!!!
数据范围:1<=n<=2^31-1

输入描述:
输入一个整数

输出描述:
计算整数二进制中1的个数

示例1:
输入
5
输出
2

【解题思路】:
本题是计算一个数二进制表示中1的个数,通过(n >> i) & 1可以获取第i位的二进制值,每次n右移一位,可以获取一位的二进制值,右移32次,n变成0,循环终止。

牛客网ACM模式代码

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);
       }
    }
}

【手套】
在地下室里放着n种颜色的手套,手套分左右手,但是每种颜色的左右手手套个数不一定相同。A先生现在要出门,所以他要去地下室选手套。但是昏暗的灯光让他无法分辨手套的颜色,只能分辨出左右手。所以他会多拿一些手套,然后选出一双颜色相同的左右手手套。现在的问题是,他至少要拿多少只手套(左手加右手),才能保证一定能选出一双颜色相同的手套。
给定颜色种数n(1≤n≤13),同时给定两个长度为n的数组left,right,分别代表每种颜色左右手手套的数量。数据保证左右的手套总数均不超过26,且一定存在至少一种合法方案。

测试样例:
4,[0,7,1,6],[1,5,0,6]
返回:10(解释:可以左手手套取2只,右手手套取8只)

【解题思路】:
对于非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;
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值