欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-29 09:57:38
...

滴滴!今天接到了一个新任务,在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 =aaa@qq.com@b    --小鸡,小鸡的只数等于100减去公鸡数和母鸡数
			   if (@a*aaa@qq.com*aaa@qq.com/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 =aaa@qq.com@b    --小鸡
			   if (@a*aaa@qq.com*aaa@qq.com/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

运行结果是这样子滴!
用sql server 存储过程实现百元买百鸡用sql server 存储过程实现百元买百鸡

相关标签: 基础学习