第4章循环 习题答案
- 格式:doc
- 大小:66.00 KB
- 文档页数:10
汇编语言程序设计(第四版)第4章【课后答案】汇编语言程序设计第四版【课后习题答案】--囮裑為檤第4章基本汇编语言程序设计〔习题4.1〕例题4.2如果要求算术右移8位,如何修改程序。
〔解答〕思路:首先由最高位字节向次低位字节传送……次低位字节向最低位字节传送(共7次);再判最高位字节符号位,如为0,送00h到最高位字节;如为1,送ffh到最高位字节。
传送可参考例题4.2,不过应从第一号字节送第零号字节,……最高位字节向次低位字节传送;也可以用循环来完成:.model small.stack 256.dataqvar dq 1234567887654321h.code.startupmov cx,7mov si,1again: mov al, byte ptr qvar[si]mov byte ptr qvar[si-1],alinc siloop againtest al,80hjz ezzmov bl,0ffhjmp doneezz: mov bl,0done: mov byte ptr qvar[7],bl.exit 0end〔习题4.2〕例题4.2如果要求算术左移7位,如何用移位指令实现。
〔解答〕思路:可设计外循环体为8个字节左移一次,方法是:最低位字节算术左移一次,次低位字节至最高位字节依次带CF 位循环左移一次(内循环共8次),外循环体控制执行7次即可。
.model small.stack 256.dataqvar dq 1234567887654321h.code.startupmov dx, 7 ;外循环次数mov ax, byte ptr qvar[0] ;最低位字节送axlpp: shl ax, 1 ;最低位字节左移一次,其d7移入CF位mov si, 1mov cx, 7 ;内循环次数again: rcl byte ptr qvar[si], 1 ;高位字节依次左移P50inc siloop againdec dxjnz lpp.exit 0.end〔习题4.3〕将AX寄存器中的16位数连续4位分成一组,共4组,然后把这4组数分别放在AL、BL、CL和DL寄存器中。
第四章血液循环一、填空题1.在一个心动周期中,心室的射血是由于①收缩的作用,心室充盈主要依靠②作用,心房起着③的作用。
2.第一心音标志着心室① ,第二心音标志着心室②。
3.调节或影响心输出量的因素有①、②、③和④。
4.心室肌的前负荷是①或②,后负荷是③。
5.心室肌细胞动作电位可分为五期,分别称为①、②、③、④和⑤。
6.钠通道因其激活、失活均很迅速,称为①通道,其阻断剂是②。
7.快反应细胞是指①、②和③细胞等,它们的动作电位0期去极化是由④内流引起的,去极化的速度⑤。
8.慢反应细胞是指①、②和③细胞等,它们的动作电位0期去极化是由④内流引起的,去极化的速度⑤。
9.心肌细胞的生理特性有①、②、③和④。
10.心室肌细胞的兴奋周期可分为①、②和③期。
在④期,其兴奋性将暂时丧失或极低;在⑤期,其兴奋性低于正常;在⑥期,其兴奋性高于正常。
11.心脏的正常起搏点是①,除此之外的各部位统称为②。
由窦房结细胞所控制的心律称为③,若为窦房结以外各点控制的心律称为④。
12.兴奋在①传导最慢。
这是由于该处细胞的体积②,细胞间连接膜通道数量③,细胞膜电位④,0期除极幅度⑤及除极速度⑥所致。
13.心电图的P波代表①,QRS 综合波代表②,T波代表③。
14.大动脉管壁的弹性可缓冲血压的波动,即防止收缩压①,舒张压②,以维持③。
15.中心静脉压的高低取决于①和②之间的相互关系。
16.在毛细血管动脉端,有效滤过压①,组织液② ;而在毛细血管静脉端,有效滤过压③,组织液④。
17.在微循环中,迂回通路的作用是①,直接通路的作用是②;动-静脉短路的作用是③。
18.对动脉血压进行快速调节的反射是① ,其感受器是②和③;其反射效应是使心率④,外周血管阻力⑤ ,血压⑥;其生理意义是⑦。
19.在临床上,肾上腺素常用于①,而去甲肾上腺素常用于②。
20.肾血流量长期减少,可使肾素分泌量①,血管紧张素生成②,导致③。
21.血管内皮生成的舒血管物质主要有①和②,血管内皮生成的缩血管物质称为③。
第四章的习题及答案4-1 设有一台锅炉,水流入锅炉是之焓为62.7kJ ·kg -1,蒸汽流出时的焓为2717 kJ ·kg -1,锅炉的效率为70%,每千克煤可发生29260kJ 的热量,锅炉蒸发量为4.5t ·h -1,试计算每小时的煤消耗量。
解:锅炉中的水处于稳态流动过程,可由稳态流动体系能量衡算方程:Q W Z g u H s +=∆+∆+∆221体系与环境间没有功的交换:0=s W ,并忽 动能和位能的变化, 所以: Q H =∆设需要煤mkg ,则有:%7029260)7.622717(105.43⨯=-⨯m解得:kg m 2.583=4-2 一发明者称他设计了一台热机,热机消耗热值为42000kJ ·kg -1的油料0.5kg ·min -1,其产生的输出功率为170kW ,规定这热机的高温与低温分别为670K 与330K ,试判断此设计是否合理?解:可逆热机效率最大,可逆热机效率:507.06703301112max =-=-=T T η 热机吸收的热量:1m in210005.042000-⋅=⨯=kJ Q热机所做功为:1m in 102000m in)/(60)/(170-⋅-=⨯-=kJ s s kJ W该热机效率为:486.02100010200==-=Q W η 该热机效率小于可逆热机效率,所以有一定合理性。
4-3 1 kg 的水在1×105 Pa 的恒压下可逆加热到沸点,并在沸点下完全蒸发。
试问加给水的热量有多少可能转变为功?环境温度为293 K 。
解:查水蒸气表可得始态1对应的焓和熵为:H 1=83.93kJ/kg, S 1=0.2962kJ/kg.K 末态2对应的焓和熵为:H 2=2675.9kJ/kg, S 2=7.3609kJ/kg.K)/(0.259293.839.267512kg kJ H H Q =-=-=)/(0.522)2962.03609.7(15.2930.25920kg kJ S T H W sys id =-⨯-=∆-∆=4-4如果上题中所需热量来自温度为533 K 的炉子,此加热过程的总熵变为多少?由于过程的不可逆性损失了多少功? 解:此时系统的熵变不变)./(0647.7K kg kJ S sys =∆炉子的熵变为)./(86.45330.2592K kg kJ T H T Q S sur -=-=∆-==∆ )./(205.286.40647.7K kg kJ S t =-=∆ )/(0.646205.215.2930kg kJ S T W t l =⨯=∆=4-5 1mol 理想气体,400K 下在气缸内进行恒温不可逆压缩,由0.1013MPa 压缩到1.013MPa 。
第四章复习思考题1.说明汽油机燃烧过程各阶段的主要特点。
答:燃烧过程:(1)着火落后期:它对每一循环都可能有变动,有时最大值是最小值的数倍。
要求:为了提高效率,希望尽量缩短着火落后期,为了发动机稳定运行,希望着火落后期保持稳定(2)明显燃烧期:压力升高很快,压力升高率在0.2-0.4MPa/(°)。
希望压力升高率合适(3)后燃期:湍流火焰前锋后面没有完全燃烧掉的燃料,以及附在气缸壁面上的混合气层继续燃烧。
希望后燃期尽可能的短。
2.爆燃燃烧产生的原因是什么?它会带来什么不良后果?答:燃烧室边缘区域混合气也就是末端混合气燃烧前化学反应过于迅速,以至在火焰锋面到达之前即以低温多阶段方式开始自然,引发爆燃爆燃会给柴油机带来很多危害,发生爆燃时,最高燃烧压力和压力升高率都急剧增大,因而相关零部件所受应力大幅增加,机械负荷增大;爆燃时压力冲击波冲击缸壁破坏了油膜层,导致活塞、气缸、活塞环磨损加剧,爆燃时剧烈无序的放热还使气缸内温度明显升高,热负荷及散热损失增加,这种不正常燃烧还使动力性和经济性恶化。
3.爆燃和早燃有什么区别?答:早燃是指在火花塞点火之前,炽热表面点燃混合气的现象。
爆燃是指末端混合气在火焰锋面到达之前即以低温多阶段方式开始自然的现象。
早燃会诱发爆燃,爆燃又会让更多的炽热表面温度升高,促使更加剧烈的表面点火。
两者相互促进,危害更大。
另外,与爆燃不同的时,表面点火即早燃一般是在正常火焰烧到之前由炽热物点燃混合气所致,没有压力冲击波,敲缸声比较沉闷,主要是由活塞、连杆、曲轴等运动件受到冲击负荷产生震动而造成。
4.爆燃的机理是什么?如何避免发动机出现爆燃?答:爆燃着火方式类似于柴油机,同时在较大面积上多点着火,所以放热速率极快,局部区域的温度压力急剧增加,这种类似阶越的压力变化,形成燃烧室内往复传播的激波,猛烈撞击燃烧室壁面,使壁面产生振动,发出高频振音(即敲缸声)。
避免方法:适当提高燃料的辛烷值;适当降低压缩比,控制末端混合气的压力和温度;调整燃烧室形状,缩短火焰前锋传播到末端混合气的时间,如提高火焰传播速度、缩短火焰传播距离。
习题4一、单项选择题1.若有说明inta[3][4];则a数组元素的非法引用是【】A.a[0][2*1]B.a[1][3]C.a[4-2][0]D.a[0][4]【答案】D【解析】数组下标从0开始,a[0][4]的列下标越界。
2.在C++语言中,引用数组元素时,其数组下标的数据类型允许是【】A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式【答案】C3.以下不正确的定义语句是【】A.doublex[5]={2.0,4.0,6.0,8.0,10.0};B.inty[5]={0,1,3,5,7,9};C.charc1[]={′1′,′2′,′3′,′4′,′5′};D.charc2[]={x1′0′x,a′′x,8′′};【答案】B【解析】初始值的个数大于数组的大小,系统会出现编译错误。
4.对以下说明语句的正确理解是【】inta[10]={6,7,8,9,10};A.将5个初值依次赋给a[1]至a[5]B.将5个初值依次赋给a[0]至a[4]C.将5个初值依次赋给a[6]至a[10]D.因为数组长度与初值的个数不相同,所以此语句不正确【答案】B5.若有说明:inta[][4]={0,0};则下面不正确的叙述是【】A.数组a的每个元素都可得到初值0B.二维数组a的第一维大小为1C.当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小D.只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值【答案】D【解析】二维数组初始化时,行大小可以省略,被省略的大小根据初值的个数系统来确定,本题中,有2个初值说明是1行4列,所以第一维为1。
元素a[0][0]和a[0][1]赋初值为0,其余元素初值系统默认为0。
6.以下能对二维数组c进行正确的初始化的语句是【】A.intc[3][]={{3},{3},{4}};B.intc[][3]={{3},{3},{4}};C.intc[3][2]={{3},{3},{4},{5}};D.intc[][3]={{3},{},{3}};【答案】B【解析】二维数组初始化时,行大小可以省略,列大小不可以省略,所以A答案错误。
第4章 MATLAB程序流程控制习题4一、选择题1.下列关于脚本文件和函数文件的描述中不正确的是()。
A A.函数文件可以在命令行窗口直接运行B.去掉函数文件第一行的定义行可转变成脚本文件C.脚本文件可以调用函数文件D.函数文件中的第一行必须以function开始2.下列程序的输出结果是( )。
Dy=10;if y==10y=20;elseif y>0y=30enddisp(y)A.1 B.30 C.10 D.203.有以下语句:a=eye(5);for n=a(2:end,:)for循环的循环次数是()。
CA.3 B.4 C.5 D.104.设有程序段k=10;whilekk=k—1end则下面描述中正确的是()。
AA.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次5.有以下程序段:x=reshape(1:12,3,4);m=0;n=0;for k=1:4if x(:,k)<=6m=m+1;elsen=n+1;endend则m和n的值分别是()。
CA.6 6 B.2 1 C.2 2 D.1 26.调用函数时,如果函数文件名与函数名不一致,则使用()。
A A.函数文件名B.函数名C.函数文件名或函数名均可D.@函数名7.如果有函数声明行为“function [x,y,z]=f1(a,b,c)”,则下述函数调用格式中错误的是()。
BA.x=f1(a,b,c) B.[x,y,z,w]=f1(a,b,c)C.[x,b,z]=f1(a,y,c) D.[a,b]=f1(x,y,z)8.执行语句“fn=@(x)10*x;",则fn是()。
AA.匿名函数B.函数句柄C.字符串D.普通函数9.执行下列语句后,变量A的值是( )。
D>> f=@(x,y) log(exp(x+y));〉〉 A=f(22,3);A.22,3B.22 C.3 D.2510.程序调试时用于设置断点的函数是()。
第3章栈和队列习题1.选择题(1)若让元素1,2,3,4,5依次进栈,则出栈次序不可能出现在()种情况。
A.5,4,3,2,1 B.2,1,5,4,3 C.4,3,1,2,5 D.2,3,5,4,1(2)若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为()。
A.i B.n-i C.n-i+1 D.不确定(3)数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素个数的公式为()。
A.r-f B.(n+f-r)%n C.n+r-f D.(n+r-f)%n (4)链式栈结点为:(data,link),top指向栈顶.若想摘除栈顶结点,并将删除结点的值保存到x中,则应执行操作()。
A.x=top->data;top=top->link; B.top=top->link;x=top->link;C.x=top;top=top->link; D.x=top->link;(5)设有一个递归算法如下int fact(int n) { //n大于等于0if(n<=0) return 1;else return n*fact(n-1); }则计算fact(n)需要调用该函数的次数为()。
A. n+1 B. n-1 C. n D. n+2 (6)栈在()中有所应用。
A.递归调用 B.函数调用 C.表达式求值 D.前三个选项都有(7)为解决计算机主机与打印机间速度不匹配问题,通常设一个打印数据缓冲区。
主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。
该缓冲区的逻辑结构应该是()。
A.队列 B.栈 C.线性表 D.有序表(8)设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5和e6依次进入栈S,一个元素出栈后即进入Q,若6个元素出队的序列是e2、e4、e3、e6、e5和e1,则栈S的容量至少应该是()。
第 4 章 习 题 答 案3. 已知某机主存空间大小为64KB ,按字节编址。
要求: (1)若用1K×4位的SRAM 芯片构成该主存储器,需要多少个芯片? (2)主存地址共多少位?几位用于选片?几位用于片内选址? (3)画出该存储器的逻辑框图。
参考答案: (1)64KB / 1K×4位 = 64×2 = 128片。
(2)因为是按字节编址,所以主存地址共16位,6位选片,10位片内选址。
(3)显然,位方向上扩展了2倍,字方向扩展了64倍。
下图中片选信号CS 为高电平有效。
A 15A 10A 9A 0D 0D 7……WE…4. 用64K×1位的DRAM 芯片构成256K×8位的存储器。
要求:(1) 计算所需芯片数,并画出该存储器的逻辑框图。
(2) 若采用异步刷新方式,每单元刷新间隔不超过2ms ,则产生刷新信号的间隔是多少时间?若采用集中刷新方式,则存储器刷新一遍最少用多少读写周期? 参考答案:(1)256KB / 64K×1位 = 4×8 = 32片。
存储器逻辑框图见下页(图中片选信号CS 为高电平有效)。
(2)因为每个单元的刷新间隔为2ms ,所以,采用异步刷新时,在2ms 内每行必须被刷新一次,且仅被刷新一次。
因为DRAM 芯片存储阵列为64K=256×256,所以一共有256行。
因此,存储器控制器必须每隔2ms/256=7.8µs 产生一次刷新信号。
采用集中刷新方式时,整个存储器刷新一遍需要256个存储(读写)周期,在这个过程中,存储器不能进行读写操作。
A 17A 16A 15A 0D 0D 7………5. 用8K×8位的EPROM 芯片组成32K×16位的只读存储器,试问:(1)数据寄存器最少应有多少位? (2) 地址寄存器最少应有多少位? (3) 共需多少个EPROM 芯片? (4) 画出该只读存储器的逻辑框图。
第三章循环生理【习题】一、名词解释1.心肌自动节律性2.窦性心律3.异位心律4.房室延搁5.期前收缩6.代偿间歇7.心率8.心动周期9.每搏输出量 10.心输出量 11.射血分数 12.心指数13.心力储备 14.动脉血压 15.收缩压 16.舒张压 17.平均动脉压 18.脉搏压19.中心静脉压 20.微循环二、填空题1.心室肌细胞动作电位1期复极是因_______外流产生的。
2.心室肌细胞的阈电位相当于_______通道的激活电位。
3.心肌细胞的生理特性有_______、_______、_______和_______。
4._______自律性最高。
其原因是由于_______期自动_______速度快,被称为正常心脏。
5.主要根据心肌细胞动作电位_______期去极机制的不同,把心肌细胞分为快反应细胞及慢反应细胞。
6.心脏中传导速度最快的是_______。
7._______和_______是慢反应心肌细胞。
8.心肌快反应细胞动作电位0期是由_______内流所致,2期是由_______负载内向离子流和_______携带外向离子流所形成。
9.窦房结细胞0期去极化是由_______负载内向离子流所致,3期是由_______外流所致。
10.决定和影响自律性的最重要因素是_______。
11.决定和影响传导性的最重要因素是_______。
12.心肌兴奋性周期变化经历_______,_______和_______。
13.决定和影响兴奋性的因素有_______,_______,_______。
14.心肌发生兴奋后,有一段时间,无论给它多强的刺激,都不能引起它再兴奋,此期称为_______。
15.成人正常心率为_______~_______次/min。
16.在一个心动周期中,心室容积保持相对不变的时期是_______和_______。
17.用心音图描记心脏有四个心音。
第一个心发生于_______;第二心音发生于_______;第三心音发生于_______;第四心音发生于_______。
第4章控制结构习题一、选择题。
1.关于程序设计所要求的基本结构,以下选项中描述错误的是( )A)循环结构B)分支结构C)goto 跳转D)顺序结构正确答案: C解析:为了表示更复杂的处理逻辑,在Python程序中存在三种基本结构,它们分别是:顺序结构;分支结构;循环结构。
2.下面代码的输出结果是for s in “HelloWorld”:if s==“W”:continueprint(s,end="")A)HelloB)WorldC)HelloWorldD)Helloorld正确答案: D解析:Python通过保留字for实现“遍历循环”,for语句的循环执行次数是由遍历结构体中元素的个数确定的。
遍历循环可以理解为从要遍历的结构中逐一提取元素,并赋值给循环变量,对于所提取的每个元素执行一次循环体。
Python 提供了两个保留字:break和continue,用来辅助控制循环执行。
continue语句只结束本次循环,而不终止整个循环的执行。
3.关于Python循环结构,以下选项中描述错误的是()A)遍历循环中的遍历结构可以是字符串、文件、组合数据类型和range()函数等。
B)break用来跳出最内层for或者while循环,脱离该循环后程序从循环代码后继续执行C)每个continue语句只有能力跳出当前层次的循环D)Python通过for、while等保留字提供遍历循环和无限循环结构正确答案: C解析:continue用来结束当前当次循环,但不跳出当前循环;每个break语句只有能力跳出当前层次的循环。
4.以下程序的输出结果是:()for i in "CHINA":for k in range(2):print(i, end="")if i == 'N':breakA)CCHHIINNAAB)CCHHIIAAC)CCHHIAAD)CCHHIINAA正确答案: D解析:每个break语句只有能力跳出当前层次的循环。
第4章 MATLAB程序流程控制习题4一、选择题1.下列关于脚本文件和函数文件的描述中不正确的是()。
AA.函数文件可以在命令行窗口直接运行B.去掉函数文件第一行的定义行可转变成脚本文件C.脚本文件可以调用函数文件D.函数文件中的第一行必须以function开始2.下列程序的输出结果是()。
Dy=10;if y==10y=20;elseif y>0y=30enddisp(y)A.1 B.30 C.10 D.203.有以下语句:a=eye(5);for n=a(2:end,:)for循环的循环次数是()。
CA.3 B.4 C.5 D.104.设有程序段k=10;while kk=k-1end则下面描述中正确的是()。
AA.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次5.有以下程序段:x=reshape(1:12,3,4);m=0;n=0;for k=1:4if x(:,k)<=6m=m+1;elsen=n+1;endend则m和n的值分别是()。
CA.6 6 B.2 1 C.2 2 D.1 26.调用函数时,如果函数文件名与函数名不一致,则使用()。
A A.函数文件名B.函数名C.函数文件名或函数名均可D.@函数名7.如果有函数声明行为“function [x,y,z]=f1(a,b,c)”,则下述函数调用格式中错误的是()。
BA.x=f1(a,b,c) B.[x,y,z,w]=f1(a,b,c)C.[x,b,z]=f1(a,y,c) D.[a,b]=f1(x,y,z)8.执行语句“fn=@(x) 10*x;”,则fn是()。
AA.匿名函数B.函数句柄C.字符串D.普通函数9.执行下列语句后,变量A的值是()。
D>> f=@(x,y) log(exp(x+y));>> A=f(22,3);A.22,3B.22 C.3 D.2510.程序调试时用于设置断点的函数是()。
第四章的习题及答案4-1 设有一台锅炉,水流入锅炉是之焓为62.7kJ ·kg -1,蒸汽流出时的焓为2717 kJ ·kg -1,锅炉的效率为70%,每千克煤可发生29260kJ 的热量,锅炉蒸发量为4.5t ·h -1,试计算每小时的煤消耗量。
解:锅炉中的水处于稳态流动过程,可由稳态流动体系能量衡算方程:Q W Z g u H s +=∆+∆+∆221体系与环境间没有功的交换:0=s W ,并忽 动能和位能的变化, 所以: Q H =∆设需要煤mkg ,则有:%7029260)7.622717(105.43⨯=-⨯m解得:kg m 2.583=4-2 一发明者称他设计了一台热机,热机消耗热值为42000kJ ·kg -1的油料0.5kg ·min -1,其产生的输出功率为170kW ,规定这热机的高温与低温分别为670K 与330K ,试判断此设计是否合理?解:可逆热机效率最大,可逆热机效率:507.06703301112max =-=-=T T η 热机吸收的热量:1m in210005.042000-⋅=⨯=kJ Q热机所做功为:1m in 102000m in)/(60)/(170-⋅-=⨯-=kJ s s kJ W该热机效率为:486.02100010200==-=Q W η 该热机效率小于可逆热机效率,所以有一定合理性。
4-3 1 kg 的水在1×105 Pa 的恒压下可逆加热到沸点,并在沸点下完全蒸发。
试问加给水的热量有多少可能转变为功?环境温度为293 K 。
解:查水蒸气表可得始态1对应的焓和熵为:H 1=83.93kJ/kg, S 1=0.2962kJ/kg.K 末态2对应的焓和熵为:H 2=2675.9kJ/kg, S 2=7.3609kJ/kg.K)/(0.259293.839.267512kg kJ H H Q =-=-=)/(0.522)2962.03609.7(15.2930.25920kg kJ S T H W sys id =-⨯-=∆-∆=4-4如果上题中所需热量来自温度为533 K 的炉子,此加热过程的总熵变为多少?由于过程的不可逆性损失了多少功? 解:此时系统的熵变不变)./(0647.7K kg kJ S sys =∆炉子的熵变为)./(86.45330.2592K kg kJ T H T Q S sur -=-=∆-==∆ )./(205.286.40647.7K kg kJ S t =-=∆ )/(0.646205.215.2930kg kJ S T W t l =⨯=∆=4-5 1mol 理想气体,400K 下在气缸内进行恒温不可逆压缩,由0.1013MPa 压缩到1.013MPa 。
第三章习题答案1.掌握算法必须要掌握的五个特性:a)有穷性。
算法执行步骤的次数有限,能在有限时间内完成。
b)确切性。
每一步操作的执行步骤、执行结果确定,不能有二义性。
c)有效性。
算法中的每一步操作都是可执行的,即算法的每一步都能通过手工或机器在有限时间内完成。
d)必须有零个或多个输入。
e)必须有一个或多个输出。
2.算法是指令的有限序列,是求解问题显式的一步一步进行的过程。
为程序编写提供依据。
程序是用C语言单词将算法表达出来的过程。
算法是程序的灵魂。
3.数据类型总体分为三类:a)对象类型。
对象类型的基本类型又分为整型、浮点型、字符型。
b)函数类型。
c)不完全类型。
4.整型可分为:a)有符号整数。
它又包括 short int、int、long int、long long int。
b)无符号整数。
它又包括unsigned short int、unsigned int、unsigned longint、unsigned long long int。
不同数据类型数据的值域范围不同。
5.合法的标识符有:scanf、x、x1、_y 、_y2x、printf、main合法标识符由英文字母、数字、下划线组成,且第一个字符只能是英文字母或下划线。
关键词不能成为合法标识符。
6.略7.8.变量名:x 数据对象:3存储地址:&x 存储单元:8(在VS2005中)9.0x13B1:十六进制int型字面值;3e3:十进制 int型字面值;‘d’:字符型字面值;“my university”:字符串型字面值;99:十进制int型字面值;023:八进制int型字面值;1.3e-4:double型浮点型字面值;33U:十进制unsigned int型字面值;034L:八进制long int型字面值;0x34UL:十六进制unsigned long int型字面值;30.23L:十进制long double型字面值;30.23F:十进制float型字面值;10.\?:?\’:’\”:”\\:\\233:表示八进制int型整数233\x2f:表示十六进制int型整数 2f。
第4章 MATLAB程序流程控制习题4一、选择题1.下列关于脚本文件和函数文件的描述中不正确的是()。
AA.函数文件可以在命令行窗口直接运行B.去掉函数文件第一行的定义行可转变成脚本文件C.脚本文件可以调用函数文件D.函数文件中的第一行必须以function开始2.下列程序的输出结果是()。
Dy=10;if y==10y=20;elseif y>0y=30enddisp(y)A.1 B.30 C.10 D.203.有以下语句:a=eye(5);for n=a(2:end,:)for循环的循环次数是()。
CA.3 B.4 C.5 D.104.设有程序段k=10;while kk=k-1end则下面描述中正确的是()。
AA.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次5.有以下程序段:x=reshape(1:12,3,4);m=0;n=0;for k=1:4if x(:,k)<=6m=m+1;elsen=n+1;endend则m和n的值分别是()。
CA.6 6 B.2 1 C.2 2 D.1 26.调用函数时,如果函数文件名与函数名不一致,则使用()。
A A.函数文件名B.函数名C.函数文件名或函数名均可D.@函数名7.如果有函数声明行为“function [x,y,z]=f1(a,b,c)”,则下述函数调用格式中错误的是()。
BA.x=f1(a,b,c) B.[x,y,z,w]=f1(a,b,c)C.[x,b,z]=f1(a,y,c) D.[a,b]=f1(x,y,z)8.执行语句“fn=@(x) 10*x;”,则fn是()。
AA.匿名函数B.函数句柄C.字符串D.普通函数9.执行下列语句后,变量A的值是()。
D>> f=@(x,y) log(exp(x+y));>> A=f(22,3);A.22,3B.22 C.3 D.2510.程序调试时用于设置断点的函数是()。
第四章串一、单项选择题1.B2. B3.B4.C5. C二、填空题1.空、字符2.由空格字符(ASCII值32)所组成的字符串空格个数3.长度、相等、子、主4.55.011223126.(1)char s[ ] (2) j++ (3) i >= j7.[题目分析]本题算法采用顺序存储结构求串s和串t的最大公共子串。
串s用i指针(1<=i<=s.len)。
t串用j指针(1<=j<=t.len)。
算法思想是对每个i(1<=i<=s.len,即程序中第一个WHILE循环),来求从i开始的连续字符串与从j(1<=j<=t.len,即程序中第二个WHILE循环)开始的连续字符串的最大匹配。
程序中第三个(即最内层)的WHILE循环,是当s中某字符(s[i])与t中某字符(t[j])相等时,求出局部公共子串。
若该子串长度大于已求出的最长公共子串(初始为0),则最长公共子串的长度要修改。
(1) i+k<=s.len && j+k<=t.len && s[i+k]==t[j+k] //所有注释同上(a)(2) con=0 (3) j+=k (4) j++ (5) i++三、应用题1.空格是一个字符,其ASCII码值是32。
空格串是由空格组成的串,其长度等于空格的个数。
空串是不含任何字符的串,即空串的长度是零。
2.(a)A+B “ mule”(b)B+A “mule ”(c)D+C+B “myoldmule”(d)SUBSTR(B,3,2) “le”(e)SUBSTR(C,1,0) “”(f)LENGTH(A) 2(g)LENGTH(D) 2(h)INDEX(B,D) 0(i)INDEX(C,”d”) 3(j)INSERT(D,2,C) “myold”(k)INSERT(B,1,A) “m ule”(l)DELETE(B,2,2) “me”(m)DELETE(B,2,0) “mule”3.朴素的模式匹配(Brute-Force)时间复杂度是O(m*n),KMP算法有一定改进,时间复杂度达到O(m+n)。
1:/*编写程序,实现从键盘输入学生的平时成绩、期中成绩、期末成绩,计算学生的学期总成绩。
学生的学期总成绩=平时成绩*15%+期中成绩*25%+期末成绩*60%。
*/#include<stdio.h>void main (){float a,b,c,sum;printf("输入同学的成绩\n");scanf("%f,%f,%f",&a,&b,&c);sum=a*0.15+b*0.25+c*0.6;printf("同学的总成绩是%4.2f",sum);}2:/*编写程序,输入一个数,判断该数是奇数还是偶数。
*/#include<stdio.h>void main (){int a;printf("输入个数:");scanf("%d",&a);if(a%2==0)printf("是偶数!");elseprintf("是奇数!");}3:/*编写程序,从键盘输入三个数,输出其中最小的数。
*/#include"stdio.h"void main(){int min,a,b,c;printf("请输入三个整数用逗号分开:");scanf("%d,%d,%d",&a,&b,&c);min=a;//给min 初始化一个值之后才可进行比较if(min>b){min=b;if(min>c)min=c;}else if(min>c){min=c;}printf("最小的数为%d\n",min);}4:/*编写程序,接受用户通过键盘输入的1~13 之类的整数,将其转换成扑克牌张输出,1 转换为字符A,2~9 转换为对应的字符,10 转换为T,11 转换为J,12 转换为Q,13 转换为K,要求使用switch 语句实现。
*/#include <stdio.h>void main(){char a;printf("输入一个数字\n");scanf("%d",&a);switch(a){case 1:printf("A\n");break;case 2:printf("%d\n",a);break;case 3:printf("%d\n",a);break;case 4:printf("%d\n",a);break;case 5:printf("%d\n",a);break;case 6:printf("%d\n",a);break;case 7:printf("%d\n",a);break;case 8:printf("%d\n",a);break;case 9:printf("%d\n",a);break;case 10:printf("T");break;case 11:printf("J");break;case 12:printf("Q");break;case 13:printf("K");break;default:printf("error\n");}}5:/*编写程序,接收用户输入的年份和月份,输出该月天数*/ #include <stdio.h>void main(){int a,b,c;printf("输入年份,月份\n");scanf("%d,%d",&b,&a);c=b%4;if(a==1||a==3||a==5||a==7||a==8||a==10||a==12)printf("这个月有31 天\n");if(a==4||a==6||a==9||a==11)printf("这个月有30 天\n");if(a==2&&c==0)printf("这个月有28 天\n");if(a==2&&c!=0)printf("这个月有29 天\n");if(a>12)printf("只有12 个月\n");}6:/*编写程序,计算s 的近似值,使其误差小于10^-6* s=1+1/x^1+1/x^2+1/x^3^……(x>1)*/#include <stdio.h>#define ep 1.0e-6void main(){double x, s,a;s=1.0;a=1.0;printf("输入一个数x=");scanf("%lf",&x);do{a=a/x;s=s+a;}while(a>1.0e-6);printf("s 的近似值=%lf",s);}7:/*编写程序,当x=0.5 时,按下面的公式计算e^x 的近似值,使其误差小于10^-6 * e^x=1+x/1!+x^2/2!+x^3/3!+……*/#include <stdio.h>#include <math.h>void main ()#define M_E 2.71828182845904523536#define ep 1.0e-6{double fact,sum,a;int i=1;sum=1;a=1;fact=pow(M_E,0.5);do{a=a*0.5/i;sum=sum+a;i++;}while (fabs(sum-fact)>ep);printf ("%lf\n",sum);}8:/*编写程序,输出所有大写英文字母及它们的ASCII 码,代码值分别用八进制、十六进制、十进制的形式输出。
*/#include <stdio.h>void main (){char a='A',i;for(i=1;i<27;i++){printf("%c:Octal:%o\tHex:%x\tDecimal:%d\n",a,a,a,a);a=a+1;}}9:/*编写程序,实现输入n 个整数,输出其中最小的数,并指出其是第几个数。
*/#include <stdio.h>void main(){int min;int count=0,min_count;int a;int flag=1;char b;printf("以a,b,c.这样的形式输入任意n 个数:");do{scanf("%d%c",&a,&b);count++;if(flag)//这个选择语句就是为了给min 赋一个初始值方便后面比较{min=a;min_count=count;flag=0;}if(min>a){min=a;min_count=count;}}while(b!='.');printf("最小的数为第%d 个,值为%d",min_count,min);}/*回文整数是指正读和反读相同的整数,编写一个程序,输入一个整数判断是否为回文整数*/#include <stdio.h>void main (){int i=0,num,fact;printf("输入你想判断的数字\n");scanf ("%d",&num);fact=num;while(0!= num){i = i*10 + num%10;num=num/10;}if (fact==i)printf ("%d 是回文整数\n",fact);elseprintf ("%d 不是回文整数\n",fact);}11:/*编写程序,找出所有三位的升序数。
所谓升序数,是指其个位数大于十位数,且十位数又大于百位数的数。
例如,279 就是一个三位升序数*/#include <stdio.h>void main (){int a=100,h,t,g;do{h=a/100;t=a/10%10;g=a%10;if (g>t&&t>h)printf("%d\t",a);a++;}while(a<=999);12:/*如果一个数的各因子之和正好等于该数本身,则该数称为完数。
如6 的影子为1、2、3,其和为6,则 6 完数。
编写程序,找出2~100 之间的所有完数。
*/#include <stdio.h>void main ()int i,j,sum;sum=0;for(i=2;i<=100;i++){for(j=1;j<i;j++){if(i%j==0)sum=j+sum;}if(sum==i){printf("%d\t",i);}sum=0;}}13:/*输入n 值,打印下列高为n 的直角三角形。
*****************/#include <stdio.h>void main(){int n,i,j;printf("输入高");scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=2*n-2*i;j++){printf(" ");}for(j=1;j<=2*i-1;j++){printf("*");}printf("\n");}}/*猴子吃桃问题。
猴子第一天摘下若干桃子,当即吃了一半,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半多一个。
到第十天早上想再吃时,就只剩下一个桃子了。
求一天一个摘了多少个桃子。
*/#include <stdio.h>void main(){int i,x;i=1;x=1;do{x=(x+1)*2;i++;}while(i<10);printf("有%d 个桃子",x);}15:/*已知大鱼5 元一条,中鱼3 元一条,小鱼1 元三条,现用100 元买100 条鱼,求能买大鱼、中鱼、小鱼各多少条。