20的阶乘的代码

来源:百度知道 编辑:UC知道 时间:2024/05/18 01:01:03
DECLARE @i int,@sum int,@csum char(10)
SELECT @i=1,@sum=1
WHILE @i<=20
BEGIN
SELECT @sum=@sum*@i
SELECT @i=@i+1
END
SELECT @csum=convert(char(10),@sum)
PRINT '1*2*3*4*…*20='+@sum

这是SQL里的语句
请高手帮我修改下啊 谢谢拉

DECLARE @i int,@sum bigint,@csum varchar(50)
SELECT @i=1,@sum=1
WHILE @i<=20
BEGIN
SELECT @sum=@sum*@i
SELECT @i=@i+1
END
SELECT @csum=convert(varchar(50),@sum)
PRINT '1*2*3*4*…*20='+@csum

酱紫写就行了,
其中共改了三处,
一、将"@sum int"改为"@sum bigint"
因为得出的结果已超出int型的范围,故用bigint来定义@sum
二、将"@csum char(10)"改为"@csum varchar(50)"
因为我们不知道得出的结果有几位,所以写的大一点50,但是直接使用char(50)这样,既使得出的结果只有20位,但还要占用50个字节,浪费空间,所以使用varchar(50),这样所占用的内存存储大小是输入数据的实际长度加 2 个字节,省空间。
三、将"PRINT '1*2*3*4*…*20='+@sum"改为"PRINT '1*2*3*4*…*20='+@csum"
这个只是你马虎了!!!
还有问题,请加QQ:282975285

DECLARE @i int,@sum bigint,@csum char(50)
SELECT @i=1,@sum=1
WHILE @i<=20
BEGIN
SELECT @sum=@sum*@i
SELECT @i=@i+1
END
set @csum=convert(char(50),@sum)
print '1*2*3*4*…*20='+@csum