实验五_复杂查询答案(2012.4)

实验五_复杂查询答案(2012.4)
实验五_复杂查询答案(2012.4)

-------------------------------------------------------------------------------------------------------

(1)用子查询查询员工“张小娟”所做的订单信息。(难易程度:易)

select * from ordermaster

where salerno in

(

select employeeno from employee where employeename='张小娟'

)

------------------------------------------------------------------------------------------------

(2)查询没有订购商品的且在北京地区的客户编号,客户名称和邮政编码,并按邮政编码降序排序。(难易程度:易)

select customerno,customername,zip

from customer c

where address='北京市' and not exists

(select * from ordermaster o where c.customerno=o.customerno) order by zip desc

方法二:

select CustomerNo,CustomerName,Zip

from Customer

where Address='北京市' and CustomerNo not in (select CustomerNo

from OrderMaster )

order by Zip desc

----------------------------------------------------------------------------------------------------------------- (3)查询订购了“32M DRAM”商品的订单编号,订货数量和订货单价。

(难易程度:易)

select orderno,quantity,price from orderdetail where productno in

(

select productno from product where productname='32M DRAM'

)

------------------------------------------------------------------------------------------------------------------- (4)查询与员工编号“E2008005”在同一个部门的员工编号,姓名,性别,所属部门。(难易程度:易)

select employeeno,employeename,sex,department from employee

where department in

(

select department from employee where employeeno ='E2008005'

)

and employeeno !='E2008005'

------------------------------------------------------------------------------------------------------------------- (5)查询既订购了P2*******商品,又订购了P2*******商品的客户编号,订单编号和订单金额。(难易程度:中)

(为了验证查询结果,改为:‘P2005001’和‘P2005002’)

方法一:

select customerno,orderno,ordersum from ordermaster

where orderno in

(

select orderno from orderdetail where productno = 'P2005001'

)

and orderno in

(

select orderno from orderdetail where productno = 'P2005002'

)

方法二:可以使用表的自身连接。

Select customerno, orderno, ordersum

from ordermaster

where orderno in

(

select a.orderno from orderdetail a,orderdetail b

where a.productno='P2005001' and b.productno='P2005002' and a.orderno=b.orderno )

---------------------------------------------------------------------------------------------------

(6)查询没有(订购“52倍速光驱”或“17寸显示器”) 的客户编号,客户名称。

(为了能验证查询结果,52倍速光驱改为32M DRAM)(难易程度:难)

(此题要注意题意的理解。)

select CustomerNo,CustomerName from Customer

where CustomerNo Not in

(

select CustomerNo from OrderMaster

where OrderNo in

(

select distinct OrderNo

from OrderDetail

where ProductNo in

(

select ProductNo

from Product

where ProductName in ( '32M DRAM' , '17寸显示器' )

)

)

)

用等价的exists谓词如下:

select CustomerNo,CustomerName from Customer c

where not exists

(

select * from OrderMaster o

where o.CustomerNo=c.CustomerNo and OrderNo in

(

select OrderNo from OrderDetail

where ProductNo in

(

select ProductNo from Product

where ProductName in ('32M DRAM','17寸显示器')

)

)

)

----------------------------------------------------------------------------------------------

(7)查询订单金额最高的订单编号,客户姓名,销售员名称和相应的订单金额。(难易程度:中)

select orderno,customername,employeename,ordersum

from ordermaster o,customer c,employee e

where o.customerno = c.customerno and o.salerno = e.employeeno

and ordersum =(select max(ordersum) from ordermaster)

或者

Select top 1 *

from

(

select OrderNo,CustomerName,EmployeeName,Ordersum

from OrderMaster,Customer,Employee

where OrderMaster.SalerNo=Employee.EmployeeNo

and OrderMaster.CustomerNo=Customer.CustomerNo

) v

order by v.ordersum desc

或者

select v.OrderNo, CustomerName, EmployeeName, v.Ordersum

from Customer, Employee,

(select top 1 * from ordermaster

order by ordersum desc

) as v

where v.SalerNo=Employee.EmployeeNo and v.CustomerNo=Customer.CustomerNo ----------------------------------------------------------------------------------------------

(8)查询订购了“52倍速光驱”商品的订购数量,订购平均价和订购总金额。

(难易程度:易)

select sum(quantity),avg(price),sum(quantity*price)

from orderdetail

where productno = (select productno from product where productname='52倍速光驱')

-----------------------------------------------------------------------------------------

(9)查询订购了“52倍速光驱”商品且订货数量界于2~4之间的订单编号,订货数量和订货金额。(难易程度:易)

select orderno,sum(quantity),sum(quantity*price) 订货金额

from orderdetail

where productno in

(select productno from product where productname='52倍速光驱')

and quantity between 2 and 4

group by orderno

------------------------------------------------------------------------------

(10)在订单主表中查询每个业务员的订单数量(难易程度:易)

select salerno,count(*)

from ordermaster

group by salerno

------------------------------------------------------

(11)统计在业务科工作且在1973年或1967年出生的员工人数和平均工资。

(难易程度:易)

select count(*)员工个数,avg(salary) 平均工资

from employee

where department='业务科' and year(birthday) in (1973,1967)

----------------------------------------------------------------------------------------

(12)在订单明细表中统计每种商品的销售数量和金额,并按销售金额的升序排序输出。(难易程度:易)

select productno,sum(quantity) 销售数量,sum(quantity*price) 销售金额

from orderdetail

group by productno

order by sum(quantity*price) asc

--------------------------------------------------------------------------------

(13)统计客户号为“C20050001”的客户的订单数,订货总额和平均订货金额

(难易程度:易)

select count(*), sum(ordersum),avg(ordersum)

from ordermaster

where customerno ='C2005001'

-----------------------------------------------------------------

(14)统计每个客户的订单数,订货总额和平均订货金额。

(难易程度:中)

select customerno,count(orderno),sum(ordersum),avg(ordersum)

from ordermaster

group by customerno

-----------------------------------------------------------------

(15)查询订单中至少包含3种(含3种)以上商品的订单编号及订购次数,且订购的每种商品数量在3件(含3件)以上。(题意有歧义,可不做)

若(把订购次数理解为商品的种数)

select orderno,count(*)

from orderdetail

where quantity>=3

group by orderno

having count(*)>=3

----------------------------------------------------------------------

(16)查找订购了“32M DRAM”的商品的客户编号,客户名称,订货总数量和订货总金额。(难易程度:中)

select c.customerno, customername,sum(quantity),sum(ordersum)

from customer c,ordermaster om,orderdetail od

where om.customerno = c.customerno

and om.orderno = od.orderno

and c.customerno in

(

select customerno from ordermaster

where orderno in

(

select orderno from orderdetail

where productno in(select productno from product where productname='32M DRAM') )

)

group by c.customerno, customername

------------------------------------------------------------------------------------------------------

(17)查询每个客户订购的商品编号,商品所属类别,商品数量及订货金额,结果显示客户名称,商品所属类别,商品数量及订货金额,并按客户编号升序和按订货金额的降序排序输出。(难易程度:中)

select c.customerno,customername,productclass,sum(quantity),sum(quantity*price) 订货金额from customer c join (ordermaster om join orderdetail od on(om.orderno=od.orderno) join product p on(p.productno= od.productno)

) on (om.customerno=c.customerno)

group by c.customerno,customername,productclass

order by c.customerno, sum(quantity*price) desc ---------------------------------------------------------------------

(18)按商品类别查询每类商品的订货平均单价在280元(含280元)以上的订货总数量,订货平均单价和订货总金额。

(难易程度:中)

select productclass, sum(quantity), avg(price), sum(quantity*price)

from orderdetail, product

where product.productno=orderdetail.productno

group by productclass

having avg(price)>=280

--------------------------------------------------------------------------------

(19)查找至少有2次销售的业务员名称和销售日期。

(难易程度:中)

select employeename,orderdate from ordermaster om,employee e

where e.employeeno = om.salerno and salerno in

(

select salerno from ordermaster

group by salerno

having count(salerno)>=2

)

order by employeename

---------------------------------------------------------------------------------

(20)查询销售金额最大的客户名称和总货款额

(难易程度:中)

select customername,r.total 总货款额

from customer,(

select top 1 customerno,sum(ordersum) total

from ordermaster

group by customerno

)as r

where customer.customerno = r.customerno

----------------------------------------------------------------------------

(21)查找销售总额小于5000元的销售员编号,姓名和销售额

(难易程度:中)

select employeeno,employeename,r.total 销售额

from employee,(

select salerno,sum(ordersum) total from ordermaster

group by salerno

having sum(ordersum)<5000

)as r

where employee.employeeno =r.salerno

-----------------------------------------------------------------------------

(22)查找至少订购了3种商品的客户编号,客户名称,商品编号,商品名称,数量和金额。(难易程度:中)

select Customer.CustomerNo,CustomerName,Product.ProductNo,ProductName,Qty,Ordersum from Customer,Product,OrderDetail,OrderMaster

where Customer.CustomerNo=OrderMaster.CustomerNo

and OrderMaster.OrderNo=OrderDetail.OrderNo

and Product.ProductNo=OrderDetail.ProductNo

and OrderMaster.CustomerNo in

( select CustomerNo

from ( select CustomerNo,ProductNo

from OrderMaster,OrderDetail

where OrderMaster.OrderNo=OrderDetail.OrderNo

) a

group by a.CustomerNo

having count(distinct ProductNo)>=3

)

----------------------------------------------------------------------------------------------------------------- (23)查找同时订购了商品为“P2*******”和商品编号为“P2*******”的商品的客户编号,客户姓名,商品编号,商品名称和销售数量,按客户编号排序输出。

(难易程度:难)

select ordermaster.customerno,CustomerName,Product.ProductNo,ProductName,Quantity

from Customer,Product,ordermaster,orderdetail

where Customer.customerno = ordermaster.Customerno

and ordermaster.OrderNo = orderdetail.OrderNo

and product.productno = orderdetail.productno

and ordermaster.OrderNo in

(select OrderNo

from OrderDetail

where ProductNo='P2007001' )

and ordermaster.OrderNo in

(select OrderNo

from OrderDetail

where ProductNo='P2007002')

--------------------------------------------------------------------------------------------------------------- (24)计算每一商品每月的销售金额总和,并将结果首先按销售月份然后按订货金额降序排序输出。(难易程度:中)

Select productno,month(Orderdate) salemonth,count(*) countproduct,sum(quantity*price) total from orderdetail as od,ordermaster as om

where od.orderno = om.orderno

group by productno, month(Orderdate)

order by countproduct,total desc

------------------------------------------------------------------------------------------------------------- (25)查询订购了“键盘”商品的客户姓名,订货数量和订货日期

(难易程度:中)

select CustomerName,quantity,orderdate

from Customer,OrderDetail,OrderMaster

where Customer.Customerno = ordermaster.Customerno

and ordermaster.orderno = OrderDetail.orderno

and productno in

(select ProductNo

from Product

where ProductName like '键盘')

--------------------------------------------------------------------------------------------------

(26)查询每月(输入错误,应为“没有”)订购“键盘”商品的客户名称。

(难易程度:易)

select customername

from customer

where customerno not in(

select customerno

from ordermaster om,orderdetail od,product p

where om.orderno = od.orderno and p.productno = od.productno

and productname = '键盘'

)

------------------------------------------------------------------------------------------------------------- (27)查询至少销售了5种商品的销售员编号,姓名,商品名称,数量及相应的单价,并按销售员编号排序输出。(难易程度:中)

select Employee.EmployeeNo,EmployeeName,ProductName,Quantity,Price

from Employee,OrderDetail,Product,OrderMaster

where Employee.EmployeeNo=OrderMaster.SalerNo and

OrderMaster.OrderNO=OrderDetail.OrderNO

and OrderMaster.SalerNo in

(select e.SaleNo from

(select ordermaster.orderno as orderno,ordermaster.salerno as

saleno,orderdetail.productno as productno

from ordermaster,orderdetail

where ordermaster.orderno = orderdetail.orderno

) e

group by e.SaleNo

having count(distinct e.productno)>=5)

order by EmployeeNo

----------------------------------------------------------------------------------------------------------------- (28)查询没有订购商品的客户编号和客户名称。

(难易程度:易)

select CustomerNo,CustomerName

from Customer

where CustomerNo not in

(

select customerno

from OrderMaster

)

------------------------------------------------------------------------------------------------------------------- (29)查询至少包含了“c2007002”所订购的商品的客户编号,

客户名称,商品编号,商品名称,数量和金额。

(难易程度:难)

以下查询可得到客户编号

select r1.customerno

from

(select distinct customerno

from ordermaster,orderdetail

where ordermaster.orderno = orderdetail.orderno --(所有客户的订购信息表) 表一

)as r1

where not exists

(select productno from

(select productno,customername

from ordermaster,orderdetail,customer

where ordermaster.orderno = orderdetail.orderno and customer.customerno = ordermaster.customerno

) as r2

where r2.customername = '世界技术开发公司' and not exists

(

select * from ( select customerno,productno

from ordermaster,orderdetail

where ordermaster.orderno = orderdetail.orderno

) as r3

where

r3.productno = r2.productno and r3.customerno = r1.customerno

)

)

------------------------------------------------------------------------------------------------------------------

数字信号实验第四章答案(DOC)

数字信号处理实验报告4 线性时不变离散时间系统频域分析 一、实验目的 通过使用matlab做实验来加强对传输函数的类型和频率响应 和稳定性测试来强化理解概念。 4.1 传输函数分析 回答: Q4.1 修改程序P3_1去不同的M值,当0

title('Phase Spectrum arg[H(e^{j\omega})]') xlabel('\omega /\pi'); ylabel('Phase in radians'); 所得结果如图示: M=2 M=7

SQLSERVER2008实用教程实验参考答案(实验4)

实验 4 数据库的查询和视图 一、SELECT语句的基本使用 1. 查询Employees 表中所有数据 2. 查询Employees 表中指定字段数据 3. 查询Employees 表中的部门号和性别,要求使用Distinct 消除重复行 4. 使用WHERE子句查询表中指定的数据查询编号为 '000001 '的雇员的地址和电话查询月收入高于2000 元的员工号码查询1970 年以后出生的员工的姓名和住址 5. 使用AS 子句为表中字段指定别名 查询Employees 表中女雇员的地址和电话,并将列标题显示为地址和电话 查询Employees 表中男雇员的姓名和出生日期,并将列标题显示为姓名和出生日期 6. 使用使用CASE子句 查询Employees 表中员工的姓名和性别,要求Sex值为 1 时显示“男” ,为0 时显示“女” 查询Employees 表中员工的姓名、住址和收入水平,2000 元以下显示为低收入,2000~3000 地显示为中等收入,3000 元以上显示为高收入。 7. 使用SELECT语句进行简单计算计算每个雇员的实际收入 8. 使用内置函数 获得员工总数 计算Salary 表中员工月收入的平均数获得Employees 表中最大的员工号码计算Salary 表中所有员工的总支出查询财务部雇员的最高和最低实际收入 9. 模糊查询 找出所有姓王的雇员的部门号找出所有地址中含有“中山”的雇员的号码及部门号找出员工号码中倒数第二个数字为0 的员工的姓名、地址和学历 10. Between ?And?和Or 的使用找出收入在2000~3000 元之间的雇员编号找出部门为“ 1”或“ 2”的雇员的编号 11. 使用INTO 子句,由源表创建新表 由表Salary 创建“ SalaryNew”表,要求包括编号和收入,选择收入在1500 元以上的雇员 由表Employees 创建“ EmployeesNew ”表,要求包括编号和姓名,选择所有男员工 二、子查询的使用 1. 查找在财务部工作的雇员情况 2. 用子查询的方法查找所有收入在2500 以下的雇员的情况 3. 查找财务部年龄不低于研发部雇员年龄的雇员姓名 4. 用子查询的方法查找研发部比所有财务部雇员收入都高的雇员的姓名 5. 查找比所有财务部的雇员收入都高的雇员的姓名 6. 用子查询的方法查找所有年龄比研发部雇员年龄都大的雇员的姓名 三、连接查询的使用 1. 查询每个雇员的情况及薪水的情况 2. 查询每个雇员的情况及其工作部门的情况 3. 使用内连接的方法查询名字为“王林”的雇员所在的部门 4. 使用内连接的方法查找出不在财务部工作的所有雇员信息 5. 使用外连接方法查找出所有员工的月收入 6. 查找财务部收入在2000 元以上的雇员姓名及其薪水详情 7. 查询研发部在1976 年以前出生的雇员姓名及其薪水详请

分析化学实验课后习题答案(第四版)

实验四铵盐中氮含量的测定(甲醛法) 思考题: 1.铵盐中氮的测定为何不采用NaOH直接滴定法? 答:因NH4+的K a=5.6×10-10,其Ck a<10-8,酸性太弱,所以不能用NaOH直接滴定。 2. 为什么中和甲醛试剂中的甲酸以酚酞作指示剂;而中和铵盐试样中的游离酸则以甲基红作指示剂? 答:甲醛试剂中的甲酸以酚酞为指示剂用NaOH可完全将甲酸中和,若以甲基红为指示剂,用NaOH滴定,指示剂变为红色时,溶液的pH值为4.4,而甲酸不能完全中和。铵盐试样中的游离酸若以酚酞为指示剂,用NaOH溶液滴定至粉红色时,铵盐就有少部分被滴定,使测定结果偏高。 3.NH4HCO3中含氮量的测定,能否用甲醛法? 答:NH4HCO3中含氮量的测定不能用甲醛法,因用NaOH溶液滴定时,HCO3-中的H+同时被滴定,所以不能用甲醛法测定。 实验五混合碱的分析(双指示剂法) 思考题: 1.用双指示剂法测定混合碱组成的方法原理是什么? 答:测混合碱试液,可选用酚酞和甲基橙两种指示剂。以HCl标准溶液连续滴定。滴定的方法原理可图解如下: 2.采用双指示剂法测定混合碱,判断下列五种情况下,混合碱的组成?

(1) V 1=0 V 2>0(2)V 1>0 V 2=0(3)V 1>V 2(4)V 10时,组成为:HCO 3- ② V 1>0 V 2=0时,组成为:OH - ③ V 1>V 2时,组成为:CO 32-+ OH - ④ V 1

实验四答案2

数据库技术与应用实验 1.定义基本表和结构 按照下图分别使用SQL Server 管理控制台和T-SQL语句来创建四张表:系部表、专业表、班级表、学生表; 修改学生表,增加一个家庭住址列; alter table 学生表add 家庭住址char(10) null Go 更改列的数据类型:把学生表中的姓名列加宽到10位字符宽度; alter table 学生表 alter column 姓名char(10) go 删除学生表中的专业代码的约束; 重命名列:将班级表的备注更改为其它; alter table 班级表drop column 备注 alter table 班级表add 班主任姓名char(10) go 创建主键约束; 创建外建约束 2.数据的添加.删除.修改 在上面四张表中分别插入6条记录;(自拟) 设置条件修改表中的各项记录; 为学生表添加年龄项,分别输入各位学生的年龄; 修改年龄为18岁的学生年龄为20; update 学生表 set 年龄=20 where 年龄=18 go 修改所有学生的入学时间、班级代码等; update 学生表 set 入学时间='2002-9-1' where 入学时间='2001-9-1' go update 学生表 set 班级代码='01' go 设置条件删除表中的无用记录; 3.数据的简单查询 1)查询学生的全部信息。 select *

from 学生表 go 2)查询全体学生的学号、姓名和年龄。 Select 学号,姓名,年龄 From 学生表 go 3)查询系部代码为“01”的学生号、姓名、年龄。 Select 学号,姓名,年龄 From 学生表 Where 系部代码=’01’ go 4)查询年龄高于18的学生的学号、姓名和性别。 Select 学号,姓名,性别 From 学生表 Where 年龄>18 go 5)查询选修C1或C2课程且分数大于等于85分学生的的学号、课程号和成绩。(需先为 创建选课成绩表,并添加学号,课程号和成绩) Select 学号,课程号,成绩 From 选课成绩 Where 课程号=’c1’ and 课程号=’c2’ and 成绩>=85 go 6)查询选修C1课程并且成绩在80至90之间的学生的学号、姓名及年龄。 Select 学生表.学号,姓名,年龄 From 学生表,选课成绩 Where 学生表.学号=选课成绩.学号and 成绩between 80 and 90 and 课程号=’c1’ go 7)查询选修C1或C2的学生的学号、课程号和成绩。 select 学号,课程号,成绩 from 选课成绩 where课程号=’c1’ or 课程号=’c2’ go 8)查询没有选修C1,也没有选修C2的学生的学号、课程号和成绩。 select 学号,课程号,成绩 from 选课成绩选课成绩1 where not exists(select 学号,课程号,成绩 from 选课成绩选课成绩2 where 选课成绩1.学号=选课成绩2.学号and 选课成绩2.课程号='c1' and 选课成绩2.课程号='c2')

实验四 索引和视图参考答案

索引 --为表student中SName属性建立惟一索引 create unique index snameindex on student(SName) --为teacher中的tname属性建立惟一聚集索引。 由于sqlserver2005在主键和具有unique约束的属性上自动建立了索引,且在主键上自动建立了聚集索引,因此必须移除主键(或其它聚集索引),然后才能在tname上建立聚集索引create unique clustered index tnameindex on teacher(tname) 移除主键

然后还原Tno为teacher表的主键 --利用系统存储过程sp_helpindex查看表student上的所有索引。

exec sp_helpindex student --利用系统存储过程sp_rename将表student上的索引改名。 exec sp_helpindex student exec sp_rename 'student.snameindex','snameindex2' --删除表student中的惟一索引。(注意,sqlserver2005在主键和具有unique约束的属性上自动建立了索引,要删除这些索引,必须先取消这些属性的主键或unique性质(通过修改表),才能删除索引,不能直接删除索引) drop index student.snameindex2 --视图 --建立视图teacherview1(无check option选项),只显示教师表中姓张的教师的教师编号、教师姓名、所在系。 create view teacherview1 as select Tno, TName, DepID from teacher where TName like '张%' --建立视图teacherview2(带check option选项),只显示教师表中姓张的教师的教师编号、教师姓名、所在系。 create view teacherview2 as select Tno, TName, DepID from teacher where TName like '张%' with check option --建立视图teacherview3(带encryption选项),只显示教师表中姓张的教师的教师编号、教师姓名、所在系。 create view teacherview3 with encryption as select Tno, TName, DepID from teacher where TName like '张%' --分别向teacherview2、teacherview1中插入记录(’866’,’杨志’,3),体会with check option选项的作用。 insert into teacherview1 values('866','杨志',3) insert into teacherview2 values('867','王五',3)

matlab实验四及其答案

实验四GUI 设计专业 学号姓名成绩电气工程及其自 动化201409140305 杨诚1.创建GUI 绘制方程c bx ax y ++=2图形,需要显示绘图结果的坐标系窗口,还能够输入 a , b , c 的值和x 取值范围(最大值和最小值)。 回调函数的编写: a=str2num(get(handles.edit1,'String'));b=str2num(get(handles.edit2,'String'));c=str2num(get(handles.edit3,'String'));xmin=str2num(get(handles.edit4,'String'));xmax=str2num(get(handles.edit5,'String'));x=xmin:0.1:xmax;y=a*x.^2+b*x+c;plot(x,y); 设计的运行界面截图:

2.设计一个GUI,完成画出y=sin(x)、y=cos(x)和y=x 3.的波形图。回调函数的编写: x=-5:0.1:5 plot(x,sin(x)) x=-5:0.1:5 plot(x,cos(x))

x=-5:0.1:5 y=x.^3 plot(x,y)

设计的运行界面截图: 3.创建一个GUI,含有下拉菜单,下拉菜单中有背景颜色选择。回调函数的编写: yanse=get(handles.popupmenu1,'value'); switch yanse case1 set(gcf,'color','r'); case2 set(gcf,'color','y'); case3 set(gcf,'color','g'); end 设计的运行界面截图:

2012综合实验四-参考答案

综合实验四面向对象的程序设计 [实验目的] 1.掌握类和对象的定义 2.掌握面向对象的程序设计方法 3.掌握类的继承与派生 4.掌握基类和虚函数的用法 5.掌握运算符重载的方法 6.掌握I/O流类的操作 [实验环境] 1.软件需求:Visual C++ 6.0 2.硬件需求: Pentium III 450以上的CPU处理器,64MB以上的内存,200MB的自由硬盘空 间 [实验内容] 1.设计员工类Employee(静态数据成员)分 a)题目描述 定义一个描述员工(Employee)基本情况的类,数据成员包括编号(num)、姓名 (name)、性别(sex)、工资(wage)、人数(count)、总工资(totalWage)。 其中姓名定义为长度为18的字符数组,性别定义为长度为3的字符数组,其它数 据类型为整型,总工资和人数为静态数据成员,函数成员包括构造函数、显示基本 函数(ShowBase)和显示静态数据函数(ShowStatic),其中构造函数由已知参数 编号(nu),姓名(nm)、性别(sx)和工资(wg)构造对象,显示基本数据函数 用于显示学生的编号、姓名、性别和工资,显示静态数据函数为静态成员函数,用 于显示人数和总工资;要求所有数据成员为protected访问权限,所有成员函数为 public访问权限,在主函数中定义若干个员工对象,分别显示员工基本信息,以 及显示员工人数和总工资。 b)输入描述 第一行要求输入一个小于10的数字n,表示即将录入的员工数量,换行后从键盘 录入每个员工的数据,依次是编号,姓名,性别,工资,每个员工占一行 c)输出描述 第一行显示“人数:”,第二行显示“总工资:”,后面分别显示每个员工的信息,每个员工之间空一行 d)样例输入 2 1008 张三男 2500 1009 李四女 2600 e)样例输出 人数:2 总工资:5100元

实验四答案

实验四SQL多表查询

编写SQL完成下列功能。 (1)查询未归还图书的读者编号、姓名和性别。 SELECT 借阅.读者编号,姓名,性别,是否归还 from 借阅,读者 where 借阅.读者编号=读者.读者编号and 是否归还=false (2)查询读者“马永强”所借图书的编号、图书名称、借书日期和归还日期 SELECT 借阅.图书编号,图书名称,借阅日期,归还日期,姓名 from 借阅,读者,图书 where 借阅.读者编号= 借阅.读者编号and 图书.图书编号=借阅.图书编号and 姓名= "马

永强" (3)查询文学类图书的基本信息 SELECT * from 图书 where 分类号in( select 分类号 from 图书分类 where 分类名称="文学类") (4)查询“江西财经大学国际学院”没有归还图书的读者的编号、姓名、图书名称、借书日期SELECT 读者.读者编号,读者.姓名,图书.图书名称,借阅.借阅日期 from 图书,读者,借阅 where 读者.读者编号=借阅.读者编号 and 借阅.图书编号=图书.图书编号

and 读者.工作单位= "江西财经大学国际学院" and 借阅.是否归还=false; (5)查询借阅了“清华大学出版社”所出版图书的读者编号、姓名、图书名称、借书日期和归还日期 SELECT 读者.读者编号,读者.姓名, 图书.图书名称,借阅.借阅日期,借阅.归还日期 from 图书,读者,借阅 where 读者.读者编号=借阅.读者编号 and 借阅.图书编号=图书.图书编号 and 图书.出版社名= "清华大学出版社"; (6)查询每种图书的分类名称和入库数量 SELECT 分类名称,sum(库存数量) as 入库数量 from 图书,图书分类 where 图书.分类号=图书分类.分类号 group by 分类名称;

C语言实验报告参考答案(原)

C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述 四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include<> main() { p rintf("The dress is long\n"); p rintf("The shoes are big\n"); p rintf("The trousers are black\n"); } 2.编写程序: (1) a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 (2)a=160,b=46,c=18,d=170, 编写求(a+b)/(b-c)*(c-d)的程序。 答案: (1) #include<> main() { i nt a,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; p rintf("a/b的商=%d\n",x); p rintf("a/c的商=%d\n",y); x=a%b; y=a%c; p rintf("a/b的余数=%d\n",x); p rintf("a/c的余数=%d\n",y); }

(2) #include<> main() { i nt a,b,c,d; f loat x; a=160; b=46; c=18; d=170; x=(a+b)/(b-c)*(c-d); p rintf("(a+b)/(b-c)*(c-d)=%f\n",x); } 3. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将0赋给c。(提示:用条件运算符) 答案: #include<> main() { i nt a,b,c; a=0; b=-10; c= (a>b) b:a; p rintf("c = %d\n",c); } 五、调试和测试结果 1.编译、连接无错,运行后屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 2、(1) 编译、连接无错,运行后屏幕上显示以下结果: a/b的商=7 a/c的商=3

数学实验4答案

第四次练习题 1、 编程找出 5,1000+=≤b c c 的所有勾股数,并问:能否利用通项表示 },,{c b a ? >> for b=1: 995 a=sqrt((b+5)^2-b^2); if(a==floor(a)) fprintf('a=%i,b=%i,c=%i\n',a,b,b+5) end end a=15,b=20,c=25 a=25,b=60,c=65 a=35,b=120,c=125 a=45,b=200,c=205 a=55,b=300,c=305 a=65,b=420,c=425 a=75,b=560,c=565 a=85,b=720,c=725 a=95,b=900,c=905 >> for c=6:1000 a=sqrt(c^2-(c-5)^2); if(a==floor(a)) fprintf('a=%i,b=%i,c=%i\n',a,c-5,c) end end a=15,b=20,c=25 a=25,b=60,c=65 a=35,b=120,c=125 a=45,b=200,c=205 a=55,b=300,c=305 a=65,b=420,c=425 a=75,b=560,c=565 a=85,b=720,c=725 a=95,b=900,c=905 {a,b,c}={100*n^2-100*n+25,10*n^2-10*n,10*n^2-10*n+5} 2、编程找出不定方程 )35000(122<-=-y Dy x 的所有正整数解。(学号为单号的取D=2, 学号为双号的取D=5) D=2(学号为单号) >> for y=1:34999 x=sqrt(2*y^2-1); if(x==floor(x)) fprintf('x=%i,y=%i\n',x,y) end

C语言实验报告参考答案

长沙理工大学2010C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述 四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include<> main() { printf("The dress is long\n"); printf("The shoes are big\n"); printf("The trousers are black\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include <> main() { printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥\n"); } 2.编写程序: a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include<> main() { int a,b,c,x,y; a=150; b=20; c=45;

x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include<> main() { int a,b,c; a=0; b=-10; c= (a>b) ? b:a; printf("c = %d\n",c); } 五、调试和测试结果 1.编译、连接无错,运行后屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 3、编译、连接无错,运行后屏幕上显示以下结果: a/b的商=7 a/c的商=3 a/b的余数=10 a/c的余数=15 4. 编译、连接无错,运行后屏幕上显示以下结果: c =-10 实验二顺序结构程序设计 四、程序清单 1.键盘输入与屏幕输出练习 问题1 D 。 问题2 改printf("%c,%c,%d\n",a,b,c);这条语句

信号与系统实验四 答案

实验四 基于窗函数的FIR DF 的设计 提示: 1. Matlab 中提供了很多常用的窗函数,其中一些窗函数的调用形式为: 矩形窗:w=boxcar(N) 三角形窗:w=bartlett(N) 汉宁窗:w=hanning(N) 哈明窗:w=hamming(N) 布莱克曼窗:w=blackman(N) 其中,输入参数N 表示窗口的长度,返回的变量w 是一个长度为N 的列向量,表示窗函数在这N 点的取值。 2. b=fir1(N,Wc,'ftype',Window) fir1函数用来设计FIR 滤波器。其中N 为滤波器的阶数;Wc 是截止频率,其取值在0~1之间,它是以π为基准频率的标称值,设计低通和高通滤波器时,Wc 是标量,设计带通和带阻滤波器时,Wc 是1×2的向量;设计低通和带通滤波器时,无需 'ftype',当ftype=high 时,设计高通滤波器,当ftype=stop 时,设计带阻滤波器;Window 表示设计滤波器所采用的窗函数类型,Window 的长度为N+1,若Window 缺省,则fir1默认使用哈明窗;b 对应设计好的滤波器的系数h(n),即单位冲激响应,h(n)的长度为N+1。 需注意)(n h 的长度与滤波器的阶数间的关系。FIR 滤波器的系统函数可表示为: ∑-=-=1 )()(N n n z n h z H )(n h 的长度为N ,而滤波器的阶数为1-N 阶。 3. 求数字滤波器的频率响应 h=freqz(b,a,w) 其中,b 和a 分别为系统函数)(z H 的分子多项式和分母多项式的系数。对于FIR 滤波器,此处的b 即为h(n),a 可看作1。 实验题目: 1. 分别用矩形窗和哈明窗设计FIR 低通滤波器,设窗宽11=N ,截止频率rad c πω 2.0=,要求绘出两种窗函数设计的滤波器幅频曲线,并进行比较。

分析化学实验课后部分习题标准答案(第四版)

实验一阳离子第一组(银组)的分析思考题: 1.沉淀第一组阳离子为什么要在酸性溶液中进行?若在碱性条件下进行,将会发生什么后果? 答:在系统分析中,为了防止易水解离子的水解生成沉淀而进入第一组,所以沉淀第一组阳离子时要在酸性溶液中进行。若在碱性条件下进行,第一组以后的大部分阳离子将生成沉淀,这样就不到分离的目的。 2.向未知溶液中加入第一组组试剂HCl时,未生成沉淀,是否表示第一组阳离子都不存在? 答:向未知试液中加入第一组组试剂时,未生成沉淀,只能说明Ag+,Hg22+不存在,而不能说明Pb2+不存在,因为当试液中Pb2+的浓度小于1mg?ml-1,或温度较高时,Pb2+将不在第一组沉淀,而进入第二组。 3.如果以KI代替HCl作为第一组组试剂,将产生哪些后果? 答:如果以KI代替HCl作为第一组组试剂时,酸度太小,第二组易水解的阳离子将水解进入第一组,达不到分离的目的。另外具有氧化性阳离子将与I-发生氧化还原反应,使这些离子的浓度

降低不能鉴出。 实验二阳离子第二组(铜锡组)的分析思考题: 1.沉淀本组硫化物时,在调节酸度上发 生了偏高或偏低现象,将会引起哪些 后果? 答:沉淀本组硫化物,若酸度偏低时,第三组阳离子Zn2+将生成ZnS 沉淀进入第二组。若酸度偏高时,本组的Cd 2+不生成硫化物沉淀而进入第三组。 2.在本实验中为沉淀硫化物而调节酸度时,为什么先调至0.6mol·L-1HCl酸度,然后再稀释一倍,使最后的酸度为0.2 mol·L-1? 答:因As(III)的硫化物完全沉淀需在0.6mol·L-1HCl酸度下,Cd2+的硫化物完全沉淀需在0.2 mol·L-1HCl酸度下。因此为了使本组离子完全生成硫化物沉淀而与第三组阳离子分离,所以在调节酸度时,先调至0.6 mol·L-1HCl酸度,然后再稀释一倍,使最后的酸度为0.2mol·L-1。 3.以TAA代替H2S作为第二组组试剂时,为什么可以不加H2O2和NH4I? 答:以TAA代替H2S作为第二组组试剂时,因TAA在90℃及酸性溶液中,可在沉淀时间内将As(V)还原为As(II

华南农业大学C语言实验上机实验第四版参考答案

C语言程序设计上机实验指导与习题 参考答案(第四版) (学生改编) 实验 1 C语言程序初步 一、实验目的 (1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。 (2)了解在该系统上如何编辑、编译、连接和运行一个C程序。 (3)通过运行简单的C程序,初步了解C程序的特点。 (4)在教师的指导下,学会使用在线评判系统。 二、实验内容 1. 运行第一个C程序 [题目:The first C Program] 将下列程序输入visual c++ ,编译、连接和运行该程序。 #include"stdio.h" main() { printf("The first C Program\n"); } [具体操作步骤] (1)在编辑窗口中输入程序。 (2)保存程序,取名为 a1.c。 (3)按照第一章中介绍的方法,编译、连接和运行程序。 (4)按照第三章介绍的方法,将代码提交到在线评判系统,系统返回“通过”,则该题完成。

2. 在在线评判系统中提交实现了计算a+b功能的程序 [题目1001:计算a+b] 由键盘输入两个整数,计算并输出两个整数的和。实现该功能的程序如下, #include "stdio.h" main() { int a, b; scanf("%d%d", &a, &b); printf("%d", a + b); } (1)在程序编辑窗口中输入程序。 (2)保存程序,取名为 a2.c。 (3)按照前二章中介绍的方法,编译、连接和运行程序。 (4)在程序运行过程中,输入 15 30↙ (↙表示输入回车符) (5)如果看到如下输出结果,则表明15+30 的结果正确,如果得不到如下结果,则需检查并更正程序。 45 (6)按照第三章中介绍的方法进入在线评判系统。 (7)显示题目列表,点击题号为1001,题名为“计算a+b”的题目。 (8)查看完题目要求后,点击页面下端的“sumbit”,参照第二章提交程序的方法提交程序a2.c。 (9)查看评判结果,如果得到“accepted”则该题通过,否则返回第一步检查程序是否正确。 3 实验 2 基本数据类型、运算和表达式 一、实验目的 (1)掌握C语言数据类型,熟悉如何定义一个整型和实型的变量,以及对它们赋值的方法。(2)掌握不同的类型数据之间赋值的规律。 (3)学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运 算符的使用。 (4)进一步熟悉C程序的编辑、编译、连接和运行的过程。 二、实验内容 1. 变量的定义 [题目 1117:变量定义,按要求完成程序] 下面给出一个可以运行的程序,但是缺少部分语句,请按右边的提示补充完整缺少的语句。#include "stdio.h" main() { int a, b; /*定义整型变量a和b*/

数据库实验四答案

数据库实验四答案 --实验四-- --1.定义“IS”系学生基本情况视图V_IS 并查询结果; create view V_IS as select * from S where Sdept='IS' with check option; select * from V_IS; --2.将S,C,SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G并查询结果; create view V_S_C_G as select S.Sno,Sname,https://www.360docs.net/doc/e914582635.html,o,Cname from S,C,SC where S.Sno=SC.Sno and https://www.360docs.net/doc/e914582635.html,o=https://www.360docs.net/doc/e914582635.html,o; select * from V_S_C_G; --3.将各系学生人数,平均年龄定义为视图V_NUM_AVG并查询结果; create view V_NUM_AVG as select count(Sno) DeptNum ,avg(Sage) DeptAvgAge,Sdept from S group by Sdept; select * from V_NUM_AVG; --4.定义一个反映学生出生年份的视图V_YEAR并查询结果; create view V_YEAR as select Sno,2012-Sage birthday from S;

select * from V_YEAR; --5.将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G并查询结果; create view V_AVG_S_G as select SC.Sno,count(https://www.360docs.net/doc/e914582635.html,o) CountCno,avg(Grade) AvgGrade from S,C,SC where S.Sno=SC.Sno and https://www.360docs.net/doc/e914582635.html,o=https://www.360docs.net/doc/e914582635.html,o group by SC.Sno; select * from V_AVG_S_G; --6.将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G并查询结果; create view V_AVG_C_G as select count(SC.Sno) Cnum,avg(Grade) AvgGrade from S,C,SC where S.Sno=SC.Sno and https://www.360docs.net/doc/e914582635.html,o=https://www.360docs.net/doc/e914582635.html,o group by https://www.360docs.net/doc/e914582635.html,o; select * from V_AVG_C_G; --7.查询平均成绩为90分以上的学生学号、姓名和成绩; select SC.Sno,Sname,avg(Grade) AvgGrade from S,SC where S.Sno=SC.Sno group by SC.Sno,Sname having avg(Grade) >90; --8.查询各课成绩均大于平均成绩的学生学号、姓名、课程和成绩;create view V_AVG as select https://www.360docs.net/doc/e914582635.html,o,avg(Grade) AvgGrade from C,SC where https://www.360docs.net/doc/e914582635.html,o=https://www.360docs.net/doc/e914582635.html,o group by https://www.360docs.net/doc/e914582635.html,o; select distinct S.Sno,Sname,https://www.360docs.net/doc/e914582635.html,o,Grade

实验五参考答案计算机C语言

实验四参考答案(参考答案) (1) 设计程序sy5-1.c,从键盘上输入一个3行3列矩阵各个元素的值,输出其主对角线元素和反向对角线元素之和。 算法分析: 对角线上的元素,1维和2维下标相同,反对角线元素,如果行下标为i,列下标就为2-i; 参考答案: #include int main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int i,j,sum=0; for(i=0;i<3;i++) sum=sum+a[i][i]+a[i][2-i]; //a[i][i]当前行的主对角线元素 //a[i][2-i]当前行的反对角线元素printf("矩阵的正、反对角线元素之和为:%d\n",sum); return 0; } 运行结果: (2) 设计程序sy5-2.c,找出一个3×4的矩阵中的最小值及其位置。 算法分析: 首先把二维数组中的第一个数即a[0][0]看成最小值,然后逐行逐列的去遍历每个元素,逐一判断每一个元素是否比最小值还好小,如果是,就改写最小值,并记录他的下标。 参考答案: #include #include int main() { int a[3][4]={{10,21,41,5},{12,15,46,35},{40,21,26,30}}; int i,j,row,colum,min; printf("数组a:\n"); for(i=0;i<3;i++) { for(j=0;j<4;j++) printf("%5d",a[i][j]);

printf("\n"); } min=a[0][0];row=0;colum=0; //首先把第一个数a[0][0]看成最小数 for(i=0;i<3;i++) //双重循环逐一遍历每个元素a[i][j] for(j=0;j<4;j++) if(min>a[i][j]) //如果当前值a[i][j]比最小值还要小 {min=a[i][j];row=i;colum=j;} //用a[i][j]改写最小值,并记下他们的下标printf("矩阵中最小元素是:%d,行下标是:%d,列下标是%d\n",min,row,colum); return 0; } 运行结果: (3) 设计程序sy5-3.c,定义一个3×3的二维数组,通过随机函数自动赋值。然后输入一个整数n,使数组左下三角(含对角线元素)元素中的值乘以n 。例如:若n的值为3,a 数组中的值为 | 1 9 7 |则程序运行后a数组中的值应为| 3 9 7 | | 2 3 8 | | 6 9 8 | | 4 5 6 | | 12 15 18 | 算法分析: 主要理解到对角线即以下元素包含哪些元素,即他们的下标变化。对每一行i来说,对角线以下的元素,他们的列下标是0,1,2,---,i;所以用外循环i遍历行,内循环j(从0到i),逐一遍历每一个a[i][j],并给a[i][j]赋值为他的n倍。最后输出矩阵。 参考答案: #include #include int main() { int a[3][3]; int i,j,n; printf("原来a的值:"); for(i=0;i<3;i++) //生成数组元素,并按矩阵形式输出 { for(j=0;j<3;j++) {a[i][j]=rand()%20; //rand()参看教材385页 //rand()%20 产生一个20以内的整数

数学实验四题目和答案

一.实验题目 1.(必做题)解微分方程(组) (1) 322232(1)(0)0,'(0)1,''(0)1,d y d y dy y dx dx dx y y y ?=---???===-? (提示可以考虑[0,20]x ∈,以特解函数及其一阶、二阶导数曲线图形来表示) 解: ①将高阶微分方程化为一阶微分方程组,设y y y y y y ''='==321,,,则有 ()??? ????---='='='2122333221 1y y y y y y y y ②建立函数文件 function dy=myfun(x,y) dy=[y(2);y(3);(y(3)-1)^2-y(2)-y(1)^2]; ③主程序: [x,y]=ode45('myfun',[0,20],[0;1;-1]); plot(x,y(:,1),'*',x,y(:,2),'+',x,y(:,3),'o') %legend('y','y 的一阶导数','y 的二阶导数'); ④结果 注意此题得不到解析解,只能用数值解,解法可参看PPT 中数值解例题3 (2)运用数值解手段描述下面常微分方程组在初值0[0;0;110]x e ∈-下的相空间的相轨线. 11232233 1223'()8()/3()()'()10()10()'()()()28()()x t x t x t x t x t x t x t x t x t x t x t x t =-+??=-+??=-+-? 解:①建立函数文件 function dx=lorenz(t,x) dx=[-8/3*x(1)+x(2)*x(3);-10*x(2)+10*x(3);-x(1)*x(2)+28*x(2)-x(3)]; ②主程序文件 [t,x]=ode45('lorenz',[0,100],[0;0;1e-10]); axis([0 40 -20 20 -20 20]); plot3(x(:,1),x(:,2),x(:,3)); grid on ③结果

Matlab实验四答案.doc

实验四采用SIMULINK的系统仿真 一、实验目的: 1、熟悉SIMULINK工作环境及特点 2、掌握线性系统仿真常用基本模块的用法 3、掌握SIMULINK的建模与仿真方法 4、子系统的创建和封装设计 二、实验基本知识: 1.了解SIMULINK模块库中各子模块基本功能 妒1)

2. SIMUL1NK 的建模与仿真方法 (1) 打开枚块库,找出相应的模块。鼠标左键点击相应模块,拖拽到模型窗门屮即呵。 (2) 创建子系统:当模型人而复杂吋,可创建子系统。 (3) 设置仿真控制参数。 三、实验内容 |untitled.mat | To File 输出仿真数据到文件 simout To Workspace 输出仿真数据到工作空间

练习A 1. SIMULINK仿真实际应用 (1) 双环调速的电流环系统的方框图模型为: 阁中参数设为 Ks=44; Ts=0.00167; Ta=0.017; R= 1 ; Tm=0.075 ; Ce=0.1925; Kt=0.01178; T 1=0.049;T2=0.088, (1)在Simulink集成环境K建立模型,在给定信号作川点处输入单位给定阶跃响应信号,0.3 秒后在扰动信号点输入单位阶跃响应信号。并绘制相应的响应曲线 (2)计算仿真结果的超调量、上升吋间、调节时间、稳态误差。 ⑶没计PID调节器荇代图屮的比例积分调节器,调节K P,Ti,T d用使系统满足超调呈15%, 上升吋间0.3s,调节吋间0.4s的要求。 (4)要求对加入的PID控制器封装成-个模块使用 Gain3 Derivative

InlOut! J Subsystem Warning: Unable to reduce the step size without violating minimum step size of 1.06581410364015e-015 at time 0.300000000000001. Continuing simulation with the step size restricted to 1.06581410364015e-() 15 and using an effective relative error tolerance of 0.01352380952376598, which is greater than the specified relative error tolerance of 0.001. ? wentai=y(end) chaotiao= 100*(max(y)-wentai)/wentai lNDEXtm=find(max(y)==y); Tm=t(INDEXtm); TT=t(find((ab$(y-wcntai)/wcntai)>0.05)); Ts=max(TT) m=length(y);

相关文档
最新文档