提高景区网站建设网络营销成功案例ppt
目录
- 1.参数解析
- 1.1题目描述
- 1.2思路
- 1.3代码
- 2.跳石板
- 2.1题目
- 2.2思路
- 2.3代码
- 3.选择题
1.参数解析
1.1题目描述
在命令行输入如下命令:
xcopy /s c:\ d:\e,
各个参数如下:
参数1:命令字xcopy
参数2:字符串/s
参数3:字符串c:\
参数4: 字符串d:\e
请编写一个参数解析程序,实现将命令行各个参数解析出来。
解析规则:
1.参数分隔符为空格
2.对于用""包含起来的参数,如果中间有空格,不能解析为多个参数。比如在命令行输入xcopy /s “C:\program files” "d:“时,参数仍然是4个,第3个参数应该是字符串C:\program files,而不是C:\program,注意输出参数时,需要将”"去掉,引号不存在嵌套情况。
3.参数不定长
4.输入由用例保证,不会出现不符合要求的输入
数据范围:字符串长度:1\le s\le 1000\1≤s≤1000
进阶:时间复杂度:O(n)\O(n) ,空间复杂度:O(n)\O(n)
输入描述:
输入一行字符串,可以有空格
输出描述:
输出参数个数,分解后的参数,每个参数都独占一行
示例1
输入:
xcopy /s c:\ d:\e
输出:
4
xcopy
/s
c:\
d:\e
1.2思路
xcopy /s c:\ d:\e 这个字符串中间空了三个空格,但是有四个参数,因此我们只需要在遇见空格的时候count++,最后输出count+1的数就是我们的参数个数。
不过这里需要注意,因为我们在双引号里面的算是一个字符串,所以哪怕双引号里面有空格我们以不能计算上,例如:xcopy /s “C:\program files” d:\,这个还是4个参数,C:\program files这个一个整体。
双引号外面的我们直接打印,遇到空格和双引号不打印,并且遇到双引号外面的空格还要换行。但还如果遇到双引号怎么办?我们可以先定义一个flag=1,遇到双引号就异或1此时结果为0,这个时候就在全部打印就可以了,空格也打印,在遇到双引号再异或上1,此时变为1,这个时候空格需要换行,
大家需要注意,flag=0代表在上引号里面,flag=1代表在外面/双引号结束了。
1.3代码
import java.util.*;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str = sc.nextLine();int count = 0;for (int i = 0; i < str.length(); i++) {//如果碰到双引号,我们就需要i++直到找到下一个双引号if (str.charAt(i) == '"') {do {i++;} while (str.charAt(i) != '"');}if (str.charAt(i) == ' ') {count++;}}System.out.println(count + 1);int flag = 1;for (int i = 0; i < str.length(); i++) {//遇到第一个双引号,flag变为0,//遇到第二个双引号结束后flag重新变为1//只要在打印双引号中的内容的时候flag的值始终为0if (str.charAt(i) == '"') {flag ^= 1;}//除了双引号和特殊空格以外的字符都要打印if (str.charAt(i) != ' ' && str.charAt(i) != '"') {System.out.print(str.charAt(i));}//双引号中的空格需要打印if (str.charAt(i) == ' ' && flag == 0) {System.out.print(str.charAt(i));}//双引号外碰到空格,需要换行if (str.charAt(i) == ' ' && flag == 1) {System.out.println();}}}
}
2.跳石板
2.1题目
描述
小易来到了一条石板路前,每块石板上从1挨着编号为:1、2、3…
这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和本身的约数)的位置。 小易当前处在编号为N的石板,他想跳到编号恰好为M的石板去,小易想知道最少需要跳跃几次可以到达。
例如:
N = 4,M = 24:
4->6->8->12->18->24
于是小易最少需要跳跃5次,就可以从4号石板跳到24号石板
输入描述:
输入为一行,有两个整数N,M,以空格隔开。 (4 ≤ N ≤ 100000) (N ≤ M ≤ 100000)
输出描述:
输出小易最少需要跳跃的步数,如果不能到达输出-1
示例1
输入:
4 24
输出:
5
2.2思路
将1 - M个石板看做一个结果数组stepNum,每个stepNum[i]储存着从起点到这一步最小的步数,其中0为不
能到达。 从起点开始对stepNum进行遍历,先求i的所有约数(即从stepNum[i]能走的步数),然后更新那
几个能到达的位置的最小步数。如果不能到达则更新为此时位置的最小步数 + 1,如果是能到达的就更新为
min(已记录的最小步数,此处的最小步数 + 1)),遍历一遍后得到结果。
2.3代码
import java.util.*;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int[] step = new int[m + 1];for (int i = 0; i < m + 1; i++) {step[i] = Integer.MAX_VALUE;}step[n] = 0;for (int i = n; i < m; i++) {if (step[i] == Integer.MAX_VALUE) {continue;}//求i的约数List<Integer> list = div(i);for (int j : list) {//j代表此时我们一步可以条几个台阶if (i + j <= m && step[i + j] != i) {step[i + j] = Math.min(step[i + j], step[i] + 1);} else if (i + j <= m) {step[i + j] = step[i] + 1;}}}if (step[m] == Integer.MAX_VALUE) {System.out.println(-1);} else {System.out.println(step[m]);}}public static List<Integer> div(int num) {List<Integer> list = new ArrayList<>();for (int i = 2; i * i <= num; i++) {if (num % i == 0) {list.add(i);if (num / i != i) {list.add(num / i);}}}return list;}
}
3.选择题
- 一个关系数据库文件中的各条记录 (B) 。
A 前后顺序不能任意颠倒,一定要按照输入的顺序排列
B 前后顺序可以任意颠倒,不影响库中的数据关系
C 前后顺序可以任意颠倒,但排列顺序不同,统计处理的结果就可能不同
D 前后顺序不能任意颠倒,一定要按照关键字字段值的顺序排列
关系数据库的逻辑性强而物理性弱,因此关系数据库中的各条记录前后顺序可以任意颠倒,不影响库中数据的关系。
2.一名员工可以使用多台计算机,每台计算机只能由一名员工使用,则实体员工和计算机间的联系是(A)
A 一对多
B 多对多
C 多对一
D 一对一
一名员工可以使用多个计算机,所以是1对多
3.下列关于视图的说法错误的是:(B)
A 视图是从一个或多个基本表导出的表,它是虚表
B 视图一经定义就可以和基本表一样被查询、删除和更新
C 某一用户可以定义若干个视图
D 视图可以用来定义新的视图
视图是指计算机数据库中的视图,是一个虚拟表,其内容由蛮询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
视图一经定义就无法修改
不能更新
4.在Mysql中,订单表 ( 订单号,雇员代号,地区代号,订购日期 ) 中订单号为主键,要删除订单中前三年以前的信息, SQL 为:(D)
A delete from 订单表 where 订购日期<getdate()+3
B delete from 订单表 where 订购日期<DATEADD(yy,3,getdate())
C delete from 订单表 where 订购日期<getdate()-3
D delete from 订单表 where 订购日期<DATEADD(yy,-3,getdate())
DATEADD()函数在日期中添加或减去指定的时间间隔。
语法
DATEADD(datepart,number ,date)
datapart参数的取值范围是{yy/yyyy,qq/q,mm/m,dy/y,dd/d,wk/ww,dw/w,hh,mi/n,ss/s,ms ,mcs,ns]
number 是您希望添加的间隔数
date 参数是合法的日期表达式
GETDATEO函数从 SQL Server 返回当前的时间和日期。
mysq1中获取当前日期和时间的函数为now0,mysgl中没有getdate()函数mysq]中也有dateadd()函数,语法为 DATE_ADD(date,INTERVAL expr type)date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。
- 负责数据库中查询操作的数据库语言是(C )。
A 数据定义语言
B 数据管理语言
C 数据操纵语言
D 数据控制语言
数据定义语言DDL
数据定义语言DDL用来创建数据库中的各种对象:表、视图、索引、同义词、聚族等。例如:CREATE TABLE/VIEW/INDEX/SYN/CLUSTERDDL操作是隐性提交的,不能ro11back。
数据操作语言DML
主要负责数据的基本操作,包括查询及增加、剧除、修改等操作。
数据控制语言DCL
数据控制语言DCL用来授予或回收访问数据除的某种特权,并控制数据除操纵事务发生的时间及效果,对数据原实行监视
等。
如:1) GRANT:授权 2) ROLLBACK IWORK] TO[SAVEPOINT1: 网退到某一点,ROLLBACK:回涨回滚命令使数据库状态回到上次最后提交的状态。其格式为: SQL>ROLLBACK。3) COMMIT [WORK]: 提交
- 数据库管理系统是( B)。
A 操作系统的一部分
B 在操作系统支持下的系统软件
C 一种编译系统
D 一种操作系统
7.SQL 语句中修改表结构的命令是(C)
A MODIFY TABLE
B MODIFY STRUCTURE
C ALTER TABLE
D ALTER STRUCTURE
修改表结构的关键字都alter table 表名,再跟具体修改的语句,如:添加表字段
alter table table_name add 字段名称 字段类型
删除表字段
alter table table_name drop 字段名称
修改表字段
alter table table_name change 旧字段名称 新字段名称 字段类型
alter table table_name modify 字段名称 字段类型
8.在sql数据库中,哪个语句能校验整数列 i 的值不小于 1 不大于 10 ?(A)
A i BETWEEN 1 AND 10
B i BETWEEN 0 AND 11
C i IN INTERVAL(0,11)
D i IN INTERVAL(1,10)
9.在学生表 Student 的系别 (Sdept) 属性中查询信息系 (IS) 、数学系 (MA) 和计算机系 (CS) 的学生姓名(Sname) 和性别 (Ssex) ,正确的命名格式应为:(B)
A SELECT Student FROM Sname, Ssex WHERE Sdept IN (‘IS’, ’MA’, ‘CS’)
B SELECT Sname, Ssex FROM Student WHERE Sdept IN (‘IS’, ’MA’, ‘CS’)
C SELECT Sname, Ssex FROM Student WHERE Sdept (IS, MA, CS)
D SELECT Sname, Ssex FROM Student WHERE Sdept LIKE IS, MA, CS
10.SQL 查询语句中 WHERE 、 GROUP BY 、 HAVING 这些关键字区别和用法总结错误的是(D)
A HAVING在查询语句中必须依赖于GROUP BY
B WHERE子句用来限制SELECT语句从表中指定选取的行
C GROUP BY子句用来分组WHERE子句的输出结果集
D HAVING子句用来从分组的结果中筛选列
having是分组查询时,在分组后条件过滤。这里的过滤是针对行来过滤,不是筛选列