当前位置:文档之家› 实验八函数和触发器答案

实验八函数和触发器答案

实验八函数和触发器答案
实验八函数和触发器答案

实验8 函数和触发器

任务一.创建函数(将脚本写进实验报告)

1. 在pubs数据库中,创建内嵌表值函数,根据给出的stor_id的值,返回该书书名title(在表titles中)和销售量qty(在表sales中)

2. 在northwind数据库中,创建标量用户定义函数,根据给的产品号productid(在order details表中),返回该产品的库存量

任务二创建触发器(将脚本写进实验报告)

1.创建update触发器,使得当产品表(products)中的单价信息变化时,订购信息表(order details)中的单价也跟着变化。

并测试该触发器的执行情况

2.创建delete触发器, 使得在northwind数据库中employees表每次只能删除一个雇员的信息(并测试该触发器的执行情况)

3.创建instead of 触发器,不允许更改订单表(orders)中的产品编号(并测试该触发器的执行情况)

任务一

1. create function fnqty (@id int)

returns table

as

return(select title, qty

from titles join sales on titles.title_id=sales.title_id

where stor_id=@id)

2.create function fn_instock(@proid int)

returns int

as

begin

return

select unitsinstock

from products as p join [order details] as o

on p.productid=o.productid

where unitsinstock=@proid

end

执行

select dbo.fn_instock(17)

任务二

1.

create trigger productupdate

on products

for update

as

if update(unitprice)

begin

update o

set unitprice=i.unitprice

from [order details] as o join Inserted as i

on o.productid=i.productid

end

2.create trigger deleteemployee

on employees

for delete

as

if (select count(*)from deleted)>1

begin

raiserror('You cannot delete more than one row',16,1) rollback transaction

end

3.create trigger insteadupdate

on orders

instead of update

as

if update(productid)

begin

raiserror('You cannot delete the row',16,1)

rollback transaction

end

实验八使用触发器实现数据完整性

实验八使用触发器实现数据完整性 一、实验目的 使学生用触发器实现数据完整性的重要性,掌握用触发器实现数据完整性的方法, 掌握用触发器实现参照完整性的方法,并理解触发器与约束的不同。 二、实验内容 (1)为表建立触发器,实现域完整性,并激活触发器进行验证。 (2)为表建立级联的触发器,实现参照完整性,并激活触发器进行验证 (3)比较约束与触发器的执行顺序。 三、实验指导 实验 8.1 创建 JXGL数据库的表 S 的 INSERT触发器材 tri_INSERT_S,插入年龄在线 15 到 30 之间的记录。 实验 8.2 创建 JXGL 数据库的表 S 的 DELETE 触发器 tgr_s_delete, 当删除 S 表中的记录时触发该触发器

DELETE 触发器会在删除数据的时候主,将刚才删除的数据保存在 下面删除表S 中的记录: DELETED表中。 实验 8.3 在数据库 JXGL中有 3 个表,即 S、SC和 C,其中,表 S 连接。如果要删除表 S 中的记录,需要创建触发器,先删除 SC的字段 sno 作为外键与表SC中与要删除记录级联的所 有记录,再删除表S 中的记录。

实验 8.4 为学生表 S创建一个 UPDATE 触发器,当更新了某同学的姓名时,就激活该触发器,并使用 PRINT 语句返回一个提示信息。

deleted表中,将更新后的数据保UPDATE 触发器会在更新数据后,将更新前的数据保存在 存在 inserted 表中。 实验 8.5触发器中的其它操作。 (1)触发器中常用的消息函数raiserror() 的应用。

Python 实验8 函数1

实验8 函数(一)实验目的: 1、理解自定义函数过程的定义与调用方法; 2、掌握自定义函数的定义与调用方法; 3、理解函数中的参数的作用; 实验内容: 1、编写一函数Fabonacci(n),其中参数n代表第n 次的迭代。While循环 def fib(n): if n==1 or n==2: return 1 a=1 b=1 i=2 while True: c=a+b a=b b=c i+=1 #第i次迭代,也就就是第i个数 if i==n: return c break def main(): n=input("Enter a number of generation:") print fib(n) main() 或者用for循环 def fib(n): a=1 b=1 c=0 if n==1 or n==2: return 1 else: for i in range(3,n+1): c=a+b a=b b=c return c def main(): n=input("enter n:") print fib(n) main() 2、编写一函数Prime(n),对于已知正整数n,判断该数就是否为素数,如果就是素数,返回True,否则返回 False。 def prime(n): if n<2: return False a=0 for i in range(1,n+1): if n%i==0: a+=1 if a>2: return False else: return True def main(): n=input("Enter a number:") print prime(n) main() Or: def prime(n): if n<2: return False if n==2: return True for i in range(2,n): if n%i==0: return False return True def main(): n=input("Enter a number:") print prime(n) main()

浙师大 C语言 实验10函数2+答案

上机实验十函数与程序结构 学号姓名 一.目的要求 1.掌握函数声明、定义和调用的基本方法 2.掌握用递归函数解决问题的方法。 3.掌握局部变量与全局变量的作用域区别 4.掌握数组作为函数参数的基本方法。 二.实验内容 【实验题1】 分析如下: Line 2中的变量k是_全局_变量;而Line 10中的k是__局部_变量。程序输出结果是k=1,k=1,k=1 。 如果将第10行改为“static int k=1;变量,程序输出结果是k=1,k=2,k=1 。 如果将第10行改为“k=1; ”,该k变量,程序输出结果是k=1,k=1,k=2 。 如果将第10行改为空语句“; ”后,,程序输出结果是k=1,k=2,k=3 。 【实验题2】程序填空:输入一个整数n (1≤n≤10),再输入n个整数,将它们按升序排列后输出。 程序分析_选择法: (1)由于n最大是10,需要定义一个长度为10的整型数组a; (2)整个排序只需要确定前n-1个元素(a[0] ~a[n-2]),最后一个元素a[n-1]无需另外处理; (3)在确定a[i](i=0,1,…,n-2)时,先将a[i]本身看成最小,即令k=i, 并将a[k]与后面的元素a[j](j=i+1, i+2, …, n-1)一一比较, 如果a[j]< a[k],则更新k的值:k =j。找出对应于下标i的最小元素a[k]后,交换a[i]与a[k]。(4)上述排序算法的代码:

运行程序,输入n: 5,输入5个整数:23 -9 14 0 -3,显示结果为: 如果是按从大到小的降序排列,语句行Line 13 应改为:if(a[k]> a[j] ) k=j; [思考题]程序填空: 将上述的程序用函数调用的方式去实现。定义一个sort()函数来实现数组的排序;在main()函数中调用sort()函数来实现数组的排序,并将结果输出。

MATLAB)课后实验答案[1]

实验一 MATLAB 运算基础 1. 先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。 (1) 0 12 2sin851z e =+ (2) 221ln(1)2 z x x =++,其中2 120.45 5i x +??=? ?-?? (3) 0.30.330.3sin(0.3)ln , 3.0, 2.9,,2.9,3.022a a e e a z a a --+= ++=-- (4) 2242011 122123t t z t t t t t ?≤=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3) .*(t.^2-2*t+1)

4. 完成下列操作: (1) 求[100,999]之间能被21整除的数的个数。 (2) 建立一个字符串向量,删除其中的大写字母。 解:(1) 结果: m=100:999; n=find(mod(m,21)==0); length(n) ans = 43 (2). 建立一个字符串向量例如: ch='ABC123d4e56Fg9';则要求结果是: ch='ABC123d4e56Fg9'; k=find(ch>='A'&ch<='Z'); ch(k)=[] ch =

实验2:函数的应用

实验项目:函数的应用 实验目的: (1)掌握函数的定义和调用方法 (2)练习重载函数的使用 (3)练习使用系统函数 (4)使用debug调试功能,使用step into追踪到函数内部。 实验任务: 1.编写重载函数MAX1可分别求取两个整数,三个整数,两个双精度,三个双精度数的最大值。 2.用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。 实验步骤: 1.分别编写四个同名的函数max1,实现函数重载,在main()中测试函数功能。 int max1(int x, int y) { return (x>y?x:y); } int max1(int x, int y, int z) { int temp1=max1(x,y); return (y>z?y:z); } double max1(double x, double y) { return (x>y?x:y); } double max1(double x, double y, double z) { double temp1=max1(x,y); return (y>z?y:z); } void main() { int x1, x2; double d1, d2; x1 = max1(5,6); x2 = max1(2,3,4); d1 = max1(2.1, 5.6); d2 = max1(12.3, 3.4, 7.8); cout << "x1=" <=1000) {printf("please enter the num again! (num>=100&&num<1000) \n"); scanf("%d",&num);} if(fun(num)==1) printf(" yes \n"); else printf(" no \n");} 编写函数ss(n), 判断n是否为素数,是返回1,否返回0。编写main函数,输入一个数num,调用ss(num)函数,并输出函数的返回值。 #include "stdio.h" int ss(int n) {int i; for(i=2;i=n) return(1); else return(0);} main() { int num; scanf("%d",&num); if(ss(num)==1) printf(" yes \n"); else printf(" no \n");} 编写一个函数fun(n),计算n!,并编写main函数测试,在main函数中输入num,调用fun(num),输出计算的结果。 #include "stdio.h" long fun(int n) {long s=1; int i; for(i=1;i<=n;i++) s=s*i; return(s);}

实验 触发器设计

实验8 触发器设计 一、实验目的: 通过本实验了解数据库触发器的概念,掌握触发器完整性设计方法。 二、实验原理 触发器(Trigger)是用户定义在关系表上的一类由事件驱动的特殊过程,由服务器自动激活可以进行更为复杂的检查和操作,具有更精细和更强大的数据控制能力。 创建触发器语法格式 CREATE TRIGGER <触发器名> {BEFORE | AFTER} <触发事件> ON <表名> FOR EACH ROW [WHEN <触发条件>] <触发动作体> 触发时间:Before, AFTER 触发事件:insert,update, delete 删除触发器:drop trigger <触发器名> 显示创建触发器脚本 >show create trigger <触发器名> >show triggers; 三、实验内容及方法 实验平台操作系统:win7,数据库管理平台:mysql5.6或者mysql8,实验用数据库:老师提供的数据库脚本TradeDBSQL.txt (一)触发器应用于数据库完整性设计 实体完整性-PK 参照完整性-FK 用户定义完整性 1.参照完整性级联约束 在订单表Orders(主表)与订单细节表OrderDetails(副表)中实现更新、删除级联是通过下列方式实现的 foreign key(OrderID) references Orders (OrderID) on delete cascade on update cascade 用下面的更新、删除触发器实现上面的更新、删除级联 1)更新级联触发器orderd_upd

DELIMITER %% /* 用%% 代替; 作为命令结束符*/ Create trigger orderd_upd /* 创建触发器名为orderd_upd */ after update on Orders /* 在表orders 上建立更新后触发器*/ for each row /* 对于每一行*/ begin /* 在表orders上更新后自动更新OrderDetails 表*/ update OrderDetails set OrderID = new.OrderID where OrderID=old.OrderID; end %% 特别要注意new,old 的区别 old 表示更新前的一行记录(for each row) new 表示更新为新的数据的一行记录。 DELIMITER ; /* 恢复; 命令行结束符*/ 设计测试用例,测试是否生效: 例如将orderid 从10400 改为14400 select * from orders where orderid=10400; update orders set orderid=14400 where orderid=10400 select * from orders where orderid=14400;

实验二 函数的应用

实验二函数的应用 一、实验目的 1、掌握函数的定义和调用方法。 2、掌握函数实参与形参的对应关系。 3、掌握函数嵌套调用和递归调用的方法。 二、实验内容与步骤 1、写一个判断素数的函数,在主函数中输入一个整数,输出是否是素数的信息。 2、编写重载函数Max可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。 3、递归函数与非递归函数。 编写一个函数,求从n个不同的数中取r个数的所有选择的个数。其个数值为:n! C r n= r!*(n-r)! 其中:n!=n*(n-1)*(n-2)* (1) 要求: (1)分别用递归和非递归两种方式完成程序设计; (2)主程序中设计一个循环,不断从输入接收n和r的值,计算结果并输出,当用户输入0 0时,程序结束; (3)能检查输入数据的合法性,要求n>=1并且n>=r; (4)注意整数能存放的数据范围有限,如何解决? 提示: (1)可以用double数据类型来存放函数的计算结果。 (2)递归结束条件: 如果r=0,则C(n,r)=1; 如果r=1, 则C(n,r)=n。 测试数据: 输入:5 3 输出:10 输入:10 20 输出:Iput Invalid1 输出:50 3 输出:19600 输入:0 0 程序结束 思考问题:

(1)对各种数据类型的字长是否有了新的认识? (2)递归函数的书写要点是什么? (3)递归和非递归函数各有哪些好处? 4、求两个整数的最大公约数和最小公倍数,用一个函数求最大公约数,用另一个函 数求最小公倍数。 要求: 两个整数在主函数中输入,并传送给函数1,求出的最大公约数返回主函数,然后再和两个整数一起作为实参传递给函数2,以求出最小公倍数,再返回到主函数输出最大公约数和最小公倍数。

实验6函数习题及答案

实验6 函数 班级:学号: 姓名:日期: 一、实验目的 (1)掌握定义函数的方法; (2)掌握函数实参与形参的对应关系,以及“值传递”的方式; (3)掌握函数的嵌套调用和递归调用的方法; (4)掌握全局变量和局部变量、动态变量和静态变量的概念和使用方法; (5)学习对多文件的程序编译和运行。 二、实验内容 1.阅读下面程序,写出程序运行结果,并且上机进行验证。 (1)a1.cpp 变量的虚实耦合,实现的是值传递,是单向传递 #include "stdio.h" int swap(int a,int b) { int c,s; c=a; a=b; b=c; s=a+b; return s; } void main() { int a,b,s; a=3;b=4; s=swap(a,b); printf("a=%d b=%d s=%d\n",a,b,s); } (2)a2.cpp

将十进制数26的各位数字相乘 #include "stdio.h" int fun(int num) { int k=1; do { k*=num %10; / num/=10; }while(num); return(k); } void main() { int n=26; printf("%d\n",fun(n)); } (3)a3.cpp 变量的作用域,当在函数内定义了与全局变量同名的局部变量时,全局变量被屏蔽#include "stdio.h" int a=3,b=5,c; void f(int b) { c=a+b; printf("%d %d %d\n",a,b,c); } void main() { int a=8; f(3); printf("%d %d %d\n",a,b,c); } (4)a4.cpp 递归,将十进制11转换为二进制 #include "stdio.h" void dtob(int n) { int i;

实验十一指针应用二daan

实验十一指针应用(二) 一?实验目的 1.了解指针与函数的关系并能够初步利用指针处理函数问题。 2.了解指向数组的指针的概念及其使用方法。 3.了解指向指针的指针的概念及其使用方法。 二?实验学时数 1学时 三?实验步骤 (一)阅读程序 #include #include fun(char *s) {char a[7]; s=a; strcpy(a,"look"); puts(s); } main() {char *p; fun(p); 2.#include main() {int a[5]={2,4,6,8,10},*p,**pp; p=a; pp=&p; printf("%d",*p++); printf("%3d\n",**pp); }

3. #include main() {char *str[]={"Pascal","C language","Cobol","Dbase"}; char **p; int k; p=str; for(k=0;k<4;k++) printf("%s\n",*(p++)); 4. #include main() {int a[2][3]={2,4,6,8,10,12},(*p)[3],i,j; p=a; scanf("%d,%d",&i,&j); printf("a[%d][%d]=%d",i,j,*(*(p+i)+j)); } (二)调试程序 要求:分析下列程序是否正确,如有错,错在哪儿?应如何改正?如正确,运行结果如何?上机调试之。 1.调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求:⑴ 2个数的和,⑵ 2个数交换值。要求用函数指针调用这两个函数,结果在主函数中输出。 行号sum(int a,int b,int c) 1{ c=a+b; 2 return c;

D触发器及其应用

实验八 D 触发器及其应用 一、实验目的 1.熟悉基本D 触发器的功能测试; 2.了解触发器的两种触发方式(脉冲电平触发和脉冲边沿触发)及触发特点; 3.熟悉触发器的实际应用; 4.了解并掌握 Multisim 仿真软件的使用。 二、实验设备 数字实验电路箱,74LS74,导线若干,Multisim 数电仿真软件。 74LS74引脚图 74LS74逻辑图 三、实验原理 D 触发器在时钟脉冲CP 的前沿(正跳变0到1)发生翻转,触发器的次态 U1A 74LS74D 1D 2 1Q 5 ~1Q 6 ~1CLR 1 1CLK 3 ~1PR 4

n Q 取决于脉冲上升沿到来之前D 端的状态,即 Q =D 。因此, 它具有置0、置1两种功能。由于CP=1期间电路具有维持阻塞作用,所以在CP=1期间,D 端的数据状态变化,不会影响触发器的输出状态。 R 和 S 分别是决定触发器初始状态 Q 的直接置0、置1端。当 不需要强迫置0、置1时, R 和 S 端都应置高电平(如接+5V 电源)。 74LS74、74LS175等均为上升沿触发的边沿触发器。触发器的应用很广,可用作数字信号的寄存,移位寄存,分频和波形发生器等。 四、实验内容 1.测试D 触发器的逻辑功能; 2.构成异步分频器,构成2分频和4分频; 3.构成同步分频器,构成2分频和4分频。 五、实验设计及实验仿真 1.测试D 触发器的逻辑功能: (1)将74LS74的D S D R 端分别加低电平,观察并记录Q 端的状态; (2)令D S D R 端为高电平,D 端分别接高、低电平,用单脉冲做CP ,观察记录当CP 为0,上升,1,下降时Q 段状态的变化; (3)当D S D R 为高电平,CP=0(或CP=1),改变D 端状态,观察Q 端的状态是否变化; (4)得到74LS74D 触发器的功能测试表:

实验4-1 函数的应用的答案

实验4 函数的应用 【实验目的】 1掌握函数声明、定义和调用的方法; 2了解函数调用的实参与形参的传递,以及参数默认值的设置。 3掌握重载函数的实现方法。 4理解递归和嵌套函数的概念、定义与调用。 【实验内容】 ⒈分别输入整数半径和实数半径,使用函数重载计算圆的面积。 #include #define PI 3.14 int area(int); float area(float); void main() { int r1; cout<<"Input a integer r="; cin>>r1; cout<<"area="<> s1; cout << "please input the second string : "; cin >> s2; int r; r = My_strcmp(s1, s2); // 函数调用返回值赋值给r if (r>0) cout << s1 << " is larger!" << endl; else if (r<0)

触发器及其应用实验报告 - 图文-

实验报告 一、实验目的和任务 1. 掌握基本RS、JK、T和D触发器的逻辑功能。 2. 掌握集成触发器的功能和使用方法。 3. 熟悉触发器之间相互转换的方法。 二、实验原理介绍 触发器是能够存储1位二进制码的逻辑电路,它有两个互补输出端,其输出状态不仅与输入有关,而且还与原先的输出状态有关。触发器有两个稳定状态,用以表示逻辑状态"1"和"0飞在二定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态,它是一个具有记忆功能的二进制信息存储器件,是构成各种时序电路的最基本逻辑单元。 1、基本RS触发器 图14-1为由两个与非门交叉祸合构成的基本RS触发器,它是无时钟控制低电平直接触发的触发器。 基本RS触发器具有置"0"、置"1"和保持三种功能。通常称s为置"1"端,因为 s=0时触发器被置"1"; R为置"0"端,因为R=0时触发器被置"0"。当S=R=1时状态保持,当S=R=0时为不定状态,应当避免这种状态。

基本RS触发器也可以用两个"或非门"组成,此时为高电平有效。 S Q S Q Q 卫R Q (a(b 图14-1 二与非门组成的基本RS触发器 (a逻辑图(b逻辑符号 基本RS触发器的逻辑符号见图14-1(b,二输入端的边框外侧都画有小圆圈,这是因为置1与置。都是低电平有效。 2、JK触发器 在输入信号为双端的情况下,JK触发器是功能完善、使用灵活和通用性较强的一种触发器。本实验采用74LS112双JK触发器,是下降边沿触发的边沿触发器。引脚逻辑图如图14-2所示;JK触发器的状态方程为: Q,,+1=J Q"+K Q 3 5

J Q CLK K B Q 图14-2JK触发器的引脚逻辑图 其中,J和IK是数据输入端,是触发器状态更新的依据,若J、K有两个或两个以上输入端时,组成"与"的关系。Q和Q为两个互补输入端。通常把Q=O、Q=1的状态定为触发器"0"状态;而把Q=l,Q=0 定为"}"状态。 JK触发器常被用作缓冲存储器,移位寄存器和计数器。 CC4027是CMOS双JK触发器,其功能与74LS112相同,但采用上升沿触发,R、S端为高电平

实验十函数应用答案

实验十函数应用 一?实验目的 1.掌握函数的定义和调用; 2.理解形参和实参的使用和传值调用; 3.理解函数声明的使用; 4.掌握函数的嵌套调用; 5.了解函数的嵌套与递归调用,掌握递归函数的编写规律; 6.了解数组元素、数组名作函数参数。 二?实验学时数 2学时 三?实验步骤 (一)阅读程序 1.#include int fun (int x, int y, int z) { z=x * x + y * y; } main() { int a=38; fun(7,3,a); printf("%d",a); 2.#include void fun (int x,int y ); main() {int x=5,y=3; fun(x,y); printf("%d,%d\n",x,y); } void fun (int x,int y ) { x=x+y; y=x-y;

x=x-y; printf("%d,%d\n",x,y); 3.#include int f (int a); main() { int s[ 8 ] = {1,2,3,4,5,6} ,i, d=0; for (i=0; f( s[i] ) ; i++) d+=s[i]; printf("%d\n",d); } int f(int a) { return a%2; } 4.#include long f( int g) { switch(g) { case 0:return 0; case 1: case 2: return 1; } return ( f(g-1)+ f(g-2)); } main ( ) { long int k; k = f(7); printf("\nk= %d\n",k); }

实验八 函数含答案

实验八函数 【目的与要求】 1.掌握C语言函数的定义方法、函数的声明及函数的调用方法。 2.了解主调函数和被调函数之间的参数传递方式。 【上机内容】 【一般示例】 【例1】将打印18个"*"组成星形线定义为一个返回值和形参列表都为空的函数,通过主函数调用它。 #include void Star(void) //画星形线。函数没有返回值,形参列表也为空 { int i; for(i=1;i<=18;i++) printf("*"); //18个"*"组成星形线 printf("\n"); return ; //返回值类型为void,return后不带表达式,此句可省略 } int main() { Star( ); //单独的函数调用语句,实参表为空,但必须保留括号 printf("I love C language!\n"); Star( ); return 0; } 【例2】调用prime 函数以每行5个素数的格式输出100到200之间的所有素数。

#include #include int prime(int m) //判断素数函数定义 { int i,k,f=1 ; //函数内定义3个变量 if (m==1) //形参若为1 f=0 ; //形参若为1,非素数 k=(int)sqrt(m); for (i=2; i<=k;i++) if (m%i==0) //m被某除数整除 f=0 ; //则不是素数 return f ; //用return语句返回 } //函数体结束 int main( ) { int i,count=0; for (i=101;i<200;i=i+2) //用i作为循环控制变量,从101开始,步长为2 if (prime(i)) //对每一个i,调用prime函数判断它是否为素数 { printf("%5d",i); //如果是素数,输出该素数i count++ ; //素数个数加1 if (count%5==0 ) //每输出5个素数换一行 printf("\n"); }

C语言:函数的应用实验报告

课程名称:结构化程序设计与C语言开课实验室:年月日 一、实验目的 用C语言编写和调试函数的程序。从而对函数的定义、调用、全局变量的灵活运用有比较深入的了解。 二、内容及结果 1、程序一素数函数 1)程序要求:写一个判断是否是素数的函数,在主函数输入一个整数,调用它后输出结果。2)代码: #include #include int prime(int n) { int i,k; k=sqrt(n); for(i=2;i<=k;i++) if(n%i==0) break; if(i<=k) return 0; else

return 1; } int main() { int prime(int n); int n; printf("Please enter n:"); scanf("%d\n",&n); if(prime(n)==1) printf("%d is a prime number",int(n)); else printf("%d is not a prime number",int(n)); } 3)运行截图: 2、程序二用递归方法求n阶勒让德多项式的值 1)程序要求: 递归公式为: 当n=0,= ) (x P n 1 当n=1, = ) (x P n x; 当n>=1, = ) (x P n((2n-1)x-P n-1(x)-(n-1)P n-2 )x))/n 2)代码: #include

#include int p(int n,int x); void main() { int n,x; scanf("%d",&x); for(n=0;n<=10;n++) printf("p(%d,%d)=%d\n",n,x,p(n,x)); } int p(int n,int x) { if(n==0) return 1; else if(n==1) return x; else return((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n; } 3)运行截图:

c实验题目(实验1-5及答案)

实验一顺序结构的程序设计1.输入x的值,根据下面的多项表达式求y的值: y=3 4 x5+12x4-7.3x3- 8 3 x2+2x-4 (1)编程,注意要有输入数据的提示语句。 #include "stdio.h" main() { double x,y; printf("please input x:\n"); scanf("%lf",&x); y=3.0/4*x*x*x*x*x+12*x*x*x*x-7.3*x*x*x+2*x-4; printf("y=%10.4lf\n",y); } (2)x取下列值时,分别运行此程序 2.任意输入一个三位整数,然后逆序输出。如输入为123,则输出为321。 (1) 编程,注意要有输入数据的提示语句 (2) 用八进制的形式输出各位数字的ASCII码。 (3) 输入取下列值时,分别运行此程序 main() { int x,inversed,hundred,ten,indiv; printf("please input x:\n"); scanf("%d",&x); hundred=x/100; ten=(x-hundred*100)/10; indiv=x%10; /*indiv=(x-hundred*100)-ten*10;*/ inversed=indiv*100+ten*10+hundred; printf("the original number is %d\n",x); printf("the inversed number is %d\n",inversed);

printf("the oct number is %0,%0,%0\n",indiv+'0',ten+'0',hundred+'0'); } #include main() { int x,inversed,hundred,ten,indiv; printf("please input x:\n"); scanf("%d",&x); indiv=x%10; ten=((x-indiv)/10)%10; hundred=(((x-indiv)/10-ten)/10)%10; inversed=indiv*100+ten*10+hundred; printf("the original number is %d\n",x); printf("the inversed number is %d\n",inversed); printf("the oct number is %0,%0,%0\n",indiv+'0',ten+'0',hundred+'0'); } 实验二选择结构的程序设计 1.编程计算下面的分段函数。 4x-8 -1≤x<0 y= 3x2+10x-1 0≤x<1 8x3-3x2+2x-1 1≤x<2 (1)事先编好程序和流程图。要求用if语句结构实现,注意数据类型和输入提示语句。#include main ( ) { float x,y; printf ("input x:\n"); scanf ("%f",&x); if (x>=-1&&x<2) { if (x>=-1&&x<0) y=4*x-8; else if (x>=0&&x<1) y=3*x*x+10*x-1; else y=8*x*x*x-3*x*x+2*x-1; printf("y=%10.2f",y); } else printf ("DA TA ERROR!"); } (2)将程序运行六遍,分别从键盘上输入-1,-0.5,0,0.5,1,1.5这六个数,记录

实验八 触发器的使用

实验八触发器的使用 一、实验目的 ●掌握触发器的创建、修改和删除操作。 ●掌握触发器的触发执行。 ●掌握触发器与约束的不同。 二、实验要求 1.创建触发器。 2.触发器执行触发器。 3.验证约束与触发器的不同作用期。 4.删除新创建的触发器。 三、实验内容 (一)示例 1.创建触发器 ①启动SQL Server 查询编辑器,选择要操作数据库,如“sc(学生选课)”数据库。 ②在查询命令窗口中输入以下CREATE TRIGGER语句,创建触发器。 为sc(学生选课)表创建一个基于UPDATE操作和DELETE操作的复合型触发器,当修改了该表中的成绩信息或者删除了成绩记录时,触发器被激活生效,显示相 关的操作信息。 2.触发触发器 ①在查询命令窗口中输入以下UPDATE sc语句,修改成绩列,激发触发器。 UPDATE sc SET grade=grade+5 WHERE 课程号=’3’ ②在查询命令窗口中输入以下UPDATE sc语句修改非成绩列,激发触发器。 UPDATE sc SET cno=’9’ WHERE 课程号=’1’ ③在查询命令窗口中输入以下DELETE sc 语句,删除成绩记录,激发触发器。 DELETE sc WHERE cno=’7’ 3. 比较约束与触发器的不同作用期 ①在查询命令窗口中输入并执行以下ALTER TABLE 语句,为sc表添加一个约束,使 得成绩只能大于等于0且小于等于100。 ALTER TABLE sc ADD CONSTRAINT CK_成绩 CHECK(grade>=0 ANDgrade<=100) ②在查询命令窗口中输入并执行以下UPDATE sc语句,查看执行结果。 UPDATE sc

相关主题
文本预览
相关文档 最新文档