用sql server 存储过程实现百元买百鸡

滴滴!今天接到了一个新任务,在sql server 里面用存储过程写一个百元买百鸡的代码。

First 百元买百鸡是啥?

今有鸡翁一,值钱伍;鸡母一,值钱三;鸡鶵三,值钱一。凡百钱买鸡百只,问鸡翁、母、鶵各几何?

通俗点来说呢,就是:

公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。

Second 稍作分析

根据题干,我们可以设,公鸡买a只,母鸡买b只,小鸡买c只。
那么得到:
a+b+c=100
5a+3b+c/3=100
这里有三个未知量·,只有两个式子,说明答案不止有种情况。
接下来通过代码具体分析

Third 上代码

先来看主要的算法:

declare @a int;          //声明三个变量
declare @b int;
declare @c int;

set @a=0                 //变量初始化
set @b=0
set @c=0

while @a<=20                    --公鸡,因为一只公鸡5文,则公鸡数目最多20只
begin
  while @b<=(100-5*@a)/3        --母鸡,100文钱减去公鸡的只数与公鸡的单价,就是剩余的钱,在除以3,就是所能购买母鸡只数的最大值
		begin
			set @c =100-@a-@b    --小鸡,小鸡的只数等于100减去公鸡数和母鸡数
			   if (@a*5+@b*3+@c/3=100) and (@c%3!=0)
				 begin
				print '公鸡的数量为'+ convert(nvarchar(10),@a)
				print '母鸡的数量为'+ convert(nvarchar(10),@b)
				print '小鸡的数量为'+ convert(nvarchar(10),@c)
				 end    
		 set @b=@b+1
		  end 
		 set @b=0
 set @a=@a+1
 end

注意:

1、print '公鸡的数量为'+ convert(nvarchar(10),@a)convert(nvarchar(10),@a) 的作用是将数值型数据(也可以是其他数据类型)转换成最多10个字符的字符串,以便和前面的字符串相连。因为只能字符串和字符串想拼接

2、以上就可以实现对答案的输出,可是这样输出来,确实不好看,我们可以建个表,让他输入在表里面

完善版

create table buy_chicken(

male_chicken int primary key ,
female_chicken int,
little_chicken int,
)                  //创建表
declare @a int;
declare @b int;
declare @c int;

set @a=0
set @b=0
set @c=0

while @a<=20                    --公鸡
begin
  while @b<=(100-5*@a)/3        --母鸡
		begin
			set @c =100-@a-@b    --小鸡
			   if (@a*5+@b*3+@c/3=100) and (@c%3!=0)
				 begin
				insert into buy_chicken(male_chicken,female_chicken,little_chicken)values(@a,@b,@c)//插入语句
				 end    
		 set @b=@b+1
		  end 
		 set @b=0
 set @a=@a+1
 end

运行结果是这样子滴!
在这里插入图片描述在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值