SQL Server(1):例题 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

    1、编写一段程序:输出1-1000之间的质数,并保存到一个新的质数表(序号, 质数)中,

SQL Server(1):例题

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    create table 质数表(序号 int identity(1,1),质数 int)

    declare @i int, @j int, @flag bit   -- @i外循环变量, @j内循环变量, @flag表示是否质数的旗标

    set @i=2

    while @i<=1000    -- 从2到1000,检查数字看是否指数

    begin

    set @flag=1

    set @j=2

    while @j<=SQRT(@i)     -- 从2到平方根,看是否整除

    begin

    if @i%@j=0

    begin

    set @flag=0

    break       -- ①不是质数就可以退出内循环了

    end

    set @j=@j+1

    end

    if @flag=1

    insert into 质数表(质数) values(@i)

    set @i=@i+1

    end       -- ②注意缩进和对齐!!!比如每个循环的begin, end。

    www.dnzg.cn

    2、编写一个函数:要求反置一段文本后,单词首字母大写输出。例如输入 I am Frank。输出Knarf Ma I。

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    create function 反置文本(@string varchar(5000))

    returns varchar(5000)      -- 参数和返回类型

    as

    begin

    declare @i int, @flag bit     -- @flag是大小写旗标

    declare @reverse varchar(5000), @result varchar(5000)

    set @i=1    -- 第一次循环,先实现反置,结果保存到@reverse

    set @reverse=''

    while(@i<=LEN(@String))

    begin

    set @reverse=SubString(@string, @i,1)+@reverse

    set @i=@i+1

    end

    set @i=1     -- 第二次循环,再实现首字母大小写,结果保存到@result

    set @flag = 1

    set @result=''

    while(@i<=LEN(@reverse))

    begin

    if @flag = 1

    set @result=@result + Upper(SubString(@reverse, @i,1))

    else

    set @result=@result + Lower(SubString(@reverse, @i,1))

    if SubString(@reverse, @i,1) in (' ', '.')

    set @flag = 1

    else

    set @flag = 0

    set @i=@i+1

    end

    return(@result)

    end

最新文章