C++第11章习题解答

合集下载

C++II习题及其解答(第1版)

C++II习题及其解答(第1版)

习题及其解答第5章类与对象5.1 选择题第7章 1. 在下列结构变量的定义中,不正确的是( d )。

第8章第9章第10章(a) struct employee{ char name[ 20 ] ;long code ;} emp ; (b) struct{ char name[ 20 ] ; long code ;} emp ;(c) struct employee{ char name[20];long code;} ;employee emp; (d) struct{ char name[20]; long code;} employee;employee emp;2.已知有职工情况结构变量emp定义为:struct employee{ char name[ 20 ] ;long code ;struct{ int year ;int month ;int day ;} birth ;} emp ;下列对 emp 的 birth 正确赋值方法是( d )。

(a) year = 1980 ; month = 5 ; day = 1 ;(b) birth.year = 1980 ; birth.month = 5 ; birth.day = 1 ;(c) emp.year = 1980 ; emp.month = 5 ; emp.day = 1 ;(d) emp.birth.year = 1980 ; emp.birth.month = 5 ; emp.birth.day = 1 ; 3.假定有以下声明和定义,则下面引用形式错误的是( b )。

1struct student{ int num ;float score ;} stu[3] = {{1001,80},{1002,75},{1003,91}}, *p = stu ;(a) p->num (b) (p++).num (c) (p++)->num (d) (*p).num4.下列四个运算符中,优先级最低的是( a )。

新标准C++程序设计教材答案郭炜

新标准C++程序设计教材答案郭炜
private: int age; int id; char name[20]; int averageScore[4];
public: int average() { int sum = 0; for( int i = 0;i < 4; ++ i) sum += averageScore[i]; return sum/4; } void printInfo() { printf("%s,%d,%d,%d",name,age,id,average()); } void readInfo() { char buf[110]; cin.getline(buf,100); char * p = strchr(buf,','); p[0] = 0; strcpy( name,buf); sscanf(p + 1, "%d,%d,%d,%d,%d,%d",&id,&age, averageScore,averageScore+1,averageScore+2,averageScore+3); }
int v; public:
A next; void Func() { }
}; #B 4. 假设有以下类 A: class A { public: int func(int a) { return a * a; } }; 以下程序片段,哪个是不正确的? A) A a; a.func(5); B) A * p = new A; p->func(5); C) A a; A & r = a; r.func(5); D) A a,b; if( a != b) a.func(5); #D 5.以下程序,哪个是不正确的? A) int main(){

机构的结构分析补充例题与习题解答

机构的结构分析补充例题与习题解答

二、补充例题
绘出图示机构的机构运动简图。
1 B2
A
4
O
3 2-1 唧筒机构
O1 2-2 回转柱塞泵
A
2-3 缝纫机 下针机构
2
4
注:构件1
的转角处
A
无转动副。
O 4
3
1
2-4 偏心轮 机构
B 2A
4
1
C
3
注:构件2的几何中心为B点,转动中心为A点!
高副数:PH = 1 F=3n - 2PL- PH =3×6 -2×8 -1 = 1
机构的自由度数与原动件数目相等,机构具有 确定的运动。
差动机构
复合铰链: A处,两个低副 局部自由度: 无 虚约束: 无
活动构件数:n= 4 低副数:PL = 4
高副数:PH =2
F=3n - 2PL- PH =3×4 -2×4 -2 = 2
f) 筛料机机构
复合铰链: 位置C ,算2个低副
复合铰链
C
局部自由度 1个
B
局部自由度
虚约束 E’
n= 7 PL = 9
E’ E F
G
AБайду номын сангаас
o
D
虚约束
PH = 1
C
B
F=3N - 2PL - PH =3×7 -2×9 -1 =2
A
E D
Fo
G
大筛机构需要两个原动件,才能具有确定的运动。
g) 压床机构
此方案能实 现设计意图, 使冲头4上下 运动吗?
为什么?问题 出在哪里?
问题出在这里!!
问题出在这里!!
修改方案
6 3
4
1
5

11结构的稳定计算习题解答

11结构的稳定计算习题解答

第11章 结构的稳定计算习题解答习题11.1 是非判断题(1)要提高用能量法计算临界荷载的精确度,不在于提高假设的失稳曲线的近似程度,而在于改进计算工具。

( )(2)对称结构承受对称荷载时总是按对称形式失稳。

( )(3)刚架的稳定问题总是可以简化为具有弹性支座的单根压杆进行计算。

( ) (4)结构稳定计算时,叠加原理已不再适用。

( )(5)有限自由度体系用能量法求出的临界荷载是精确解。

( )(6)当结构处于不稳定平衡状态时,可以在原结构位置维持平衡,也可以在新的形式下维持平衡。

( )【解】(1)错误。

能量法计算临界荷载的精确度,直接取决于所假设的失稳曲线的近似程度。

(2)错误。

既可按对称形式失稳也可按反对称形式失稳。

(3)错误。

在能求出刚度系数的情况下,才可简化为具有弹性支座的单根压杆进行计算。

(4)正确。

一般情况下,结构的稳定计算中,既要考虑几何非线性也要考虑材料非线性,因此,不能采用适用于线性弹性理论的叠加原理。

(5)正确。

(6)错误。

习题 12.2 填空题(1)结构由稳定平衡到不稳定平衡,其临界状态的静力特征是平衡形式的 。

(2)临界荷载与压杆的支承情况有关,支承的刚度越大,则临界荷载越 。

(3)用能量法求无限自由度体系的临界荷载时,所假设的失稳曲线y (x )必须满足 条件,并尽量满足 条件。

(4)利用对称性,求习题11.2(4)图所示结构的临界荷载F Pcr = 。

习题11.2(4)图(5)习题11.2(5)图(a )所示结构可简化为习题11.2(5)图(b )所示单根压杆计算,则弹簧抗转动刚度系数k = 。

1=l3EI(a) (b)习题11.2(5)图(6)习题11.2(6)图(a )所示结构可简化为习题11.2(6)图(b )计算,则抗移动弹簧刚度系数k 1= ,抗转动弹簧刚度系数k 2= 。

(a)(b)习题11.2(6)图【解】(1)二重性。

(2)大。

(3)位移边界;力的边界。

第11章-作业及习题参考答案

第11章-作业及习题参考答案

第11章(8分)将下面程序划分为基本块,并画出其基本块程序流图。

(1) if a<b goto (3)(2) halt(3) if c<d goto (5)(4) goto (8)(5) t1:=y+z(6) x :=t1(7) goto (1)(8) t2:=y-z(9) x :=t2(10) goto (1)11.1答:所谓代码优化即对代码进行等价变换,使得变换后的代码与变换前代码运行结果相同,而运行速度加快或占用存储空间少,或两者兼有。

进行优化的基础是中间或目标代码生成,以及基本块的识别、控制流分析和数据流分析。

2答:根据不同的阶段,分为中间代码优化和目标代码的优化。

根据优化所涉及的程序范围,又可分为局部优化、循环优化和全局优化。

3答:最常用的代码优化技术有:(1)删除多余运算(2)代码外提(3)强度削弱(4)变换循环控制条件(5)合并已知量和复写传播(6)删除无用赋值4 图11.23是图11.22的C代码的部分四元式代码序列(1) 请将图11.23的四元式代码序列划分为基本块并做出其流图?(2) 将每个基本块的公共子表达式删除?(3) 找出流图中的循环,将循环不变量计算移出循环外?(4) 找出每个循环中的归纳变量,并且在可能的地方删除它们图11.22void quicksort(m,n)int m,n;1 / 10{ int i,j;int v,x; if (n<=m) return;/* fragment begins here */ i = m-1;j = n;v = a[n];while(1) {do i = i+1;while (a[i]<v);do j = j-1; while (a[j]>v);if (i>=j) break;x = a[i];a[i] = a[j];a[j] = x;}x = a[i];a[i] = a[n];a[n] = x;/* fragment ends here */ quicksort (m,j);quicksort(i+1,n);}图11.23(1) i:=m-1(2)j:=n(3) t1:=4*n(4) v:=a[t1](5) i:=i+1(6) t2:=4*i(7) t3:=a[t2](8) if t3< v goto (5)(9) j:=j-1(10)t4:=4*j(11)t5:=a[t4](12)if t5> v goto (9)(13)if i >= j goto (23)(14)t6:=4*i(15)x:=a[t6] (16) t7:=4*i(17) t8:=4*j(18) t9:=a[t8](19) a[t7]:=t9(20) t10:=4*j(21) a[t10]:=x(22) goto (5)(23) t11:=4*i(24) x:=a[t11](25) t12:=4*i(26) t13:=4*n(27) t14:=a[t13](28) a[t12]:=t14(29) t15:=4*n(30) a[t15]:=x答:(1)1-4为第1块,5-8为第2块,9-12为第3块,13句为第4块,14-22为第5块,23-30句为第6块。

(完整版)理论力学课后习题答案第11章达朗贝尔原理及其应用

(完整版)理论力学课后习题答案第11章达朗贝尔原理及其应用

第11章达朗贝尔原理及其应用11-1均质圆盘作定轴转动,其中图(a ),图(c )的转动角速度为常数,而图(b ),图(d )的角速度不为常量。

试对图示四种情形进行惯性力的简化。

ωα=0α≠0ωα=0ωα≠0ω(a )(b )习题11-1图(c )(d )F I OOF InF Itωα=0M I OωOωOωα≠0M I Oα≠0α=0(a )(b )(c )(d )习题11-1解图解:设圆盘的质量为m ,半径为r ,则如习题11-1解图:2(a )F I=mr ω,MI O=0(b )F I =mr ω,F I=mr α,MI O=J O α=(c )F I=0,MI O=0(d )F I=0,MI O=J O α=11-2矩形均质平板尺寸如图,质量27kg ,由两个销子A 、B 悬挂。

若突然撤去销子B ,求在撤去的瞬时平板的角加速度和销子A 的约束力。

n2t32mr α212mr α2ACB解:如图(a ):设平板的质量为m ,长和宽分别为a 、b 。

F I=m α⋅AC =3.375α0.20m习题11-2图.15m1M I A =J A α=[m (a 2+b 2)+m ⋅AC 2]α=0.5625α122α=47.04rad/s M -0.1mg =0;;M (F )=0I A∑A F AyF IF Ax AM I A C a CBαm g θ∑F y=0;F I cos θ+F Ay -mg =0;sin θ=4=0.850.20m (a ).15m∑Fx=0;F I sin θ-F Ax=0;其中:sin θ=3=0.65F Ax=3.375⨯47.04⨯0.6=95.26NF Ay=27⨯9.8-3.375⨯47.04⨯0.8=137.6N11-3在均质直角构件ABC 中,AB 、BC 两部分的质量各为 3.0kg ,用连杆AD 、DE 以及绳子AE 保持在图示位置。

若突然剪断绳子,求此瞬时连杆AD 、BE 所受的力。

高等数学第3版(张卓奎 王金金)第十一章习题解答

高等数学第3版(张卓奎 王金金)第十一章习题解答

第十一章 微分方程习题11-11.说出下列各微分方程的阶数:(1)20dy dy x y dx dx ⎛⎫+-= ⎪⎝⎭; (2)220d Q dQ Q L Rdt dt C -+=; (3)220xy y x y '''''++= ; (4)()d (76)0x y y x y dx ++-=;(5)2sin y y y x '''++= ; (6)2d sin .d ρρθθ+= 解:(1)一阶;(2)二阶;(3)三阶;(4)一阶;(5)二阶;(6)一阶.2.指出下列各函数是否为所给微分方程的解: (1)22 , 5;xy y y x '==(2)0 , 3sin 4cos ;y y y x x ''+==-(3)221, ;y x y y x''=+=(4)21221 , sin cos .2x x d y y e y C x C x e dx +==++解:(1)∵ 10 y x '=,代入方程得 21025x x x ⋅=⋅∴25y x =是方程的解.(2)∵ 3cos 4sin ,3sin 4cos y x x y x x '''=+=-+,代入方程,得()()3sin 4cos 3sin 4cos 0y y x x x x ''+=-++-= ∴ 3sin 4cos y x x =-是方程的解.(3)∵ 2312,y y x x '''=-=,代入方程,得 23221x x x≠+ ∴1y x=是方程的解. (4)∵ 21212211cos sin ,sin cos 22x x dy d y C x C x e C x C x e dx dx =-+=--+,代入方程, 得 121sin cos 2x C x C x e ⎛⎫--++ ⎪⎝⎭121sin cos 2x x C x C x e e ⎛⎫++= ⎪⎝⎭∴121sin cos 2x y C x C x e =++是方程的解.3.在下列各题中,验证所给二元方程所确定的函数为所给微分方程的解: (1)()2222 , ;x y y x y x xy y C '-=--+= (2)()220 , ln().xy x y xy yy y y xy '''''-++-==解:(1)在二元方程22 x xy y C -+=的两边同时对x 求导,得220x y xy yy ''--+=移项后即得 ()22 x y y x y '-=-故二元方程22x xy y C -+=所确定的函数是所给微分方程的解.(2)在 ln()y xy =两边对x 求导,得11 ()y y y xy xy x y '''=+=+, 即 yy xy x'=- ()()()()()232223122 y xy x y y xy xy y yxy xy xyy xy x xy x xy x ''--+-'--+-+-''===---,代入微分方程,得()()3223222()20xy xy xyy y yxy x x y xy x xy xxy x xy x -+--⋅+⋅+⋅-⋅=---- 故 ln()y xy =所确定的函数是所给微分方程的解.4.在下列各题中,确定函数关系式中所含的参数,使函数满足所给的初始条件: (1)2220 , |1;x x xy y C y =-+==(2)()1200 , |0 , |1;x x x y C C x e y y =='=+== (3)1200cos sin , | 1 , |.t t x C t C t x x ωωω=='=+== 解:(1)∵ 0 |1x y ==∴222 =0011C -+=即 221x xy y -+=(2)()122 x y C C x C e '=++,由00 |0 , |1x x y y =='==,得 11201C C C =⎧⎨+=⎩。

第十一章 光学 习题解答

第十一章 光学 习题解答

λf
b
, 中央明纹宽为两条一级暗纹中心距离 l0 = 2
λ
b
x , f
= 2mm
λf
b
= 6mm 。
§11.8~11. 9
11.17 一宇航员声称,他恰好能分辨在他下面 R 为 180km 地面上两个发射波长 λ 为 假定宇航员的瞳孔直径 d 为 5.0mm , 如此两点光源的间距以 m 为单位, 550nm 的点光源。 则为: 【B】 (A)21.5; (B)24.2; (C)31.0; (D)42.0。 分析:设两点光源 S1、S2 的间距为 x,由于 θ 0 较小,做以下近似 θ 0 ≈ tan θ ≈
专业班级
学号
姓名
§11.1~11. 2
11.1 用白光源进行双缝实验,若用一个纯红色的滤光片遮盖一条缝,用一个纯蓝色的 滤光片遮盖另一条缝,则: 【D】 (A)干涉条纹的宽度将发生改变; (B)产生红光和蓝光的两套彩色干涉条纹; (C)干涉条纹的亮度将发生改变; (D)不产生干涉条纹。 说明:经过双缝后的两束光频率不同(红光、蓝光) ,此两束光不满足相干条件,不是相 干光,叠加后不能发生干涉。 11.2 用单色光进行双缝实验,若减小双缝间的距离,干涉条纹的间距将【B】 ;若将观 测屏向双缝方向平移一小段距离,干涉条纹的间距将【C】 。 (A)不变; (B)增大; (C)减小; (D)不能确定。 说明:条纹宽度公式为 ∆x =
λ1 = 1200nm , λ2 = 600nm , λ3 = 400nm , λ4 = 300nm
由于 4 × 10 m ≤ λ ≤ 7.6 × 10 m , 则: k=2 时,λ = 600nm ; k=3 时,λ = 400nm
−7 −7
的波长满足反射光加强。 (2) 空气 n1=1 < 膜 n2=1.5 < 玻璃 n3=1.6,透射光光程差含有半波损失项 透射光加强条件: δ 透 = 2n2 d + 足 λ = (2n2 d +

第11章习题分析与解答

第11章习题分析与解答

习 题 解 答11-1 在双缝干涉实验中,若单色光源S 到两缝21S S 、距离相等,则观察屏上中央明纹位于图中O 处。

现将光源S 向下移动到示意图中的S '位置,则( )(A )中央明条纹也向下移动,且条纹间距不变 (B )中央明条纹向上移动,且条纹间距不变 (C )中央明条纹向下移动,且条纹间距增大 (D )中央明条纹向上移动,且条纹间距增大解 由S 发出的光到达21S S 、的光成相等,它们传到屏上中央O 处,光程差0=∆,形成明纹,当光源由S 向下移动S '时,由S '到达21S S 、的两束光产生了光程差,为了保持原中央明纹处的光程差为0,它将上移到图中O '处,使得由S '沿21S S 、传到O '处的两束光的光程差仍为0.而屏上各级明纹位置只是向上平移,因此条纹间距不变。

故选B11-2 单色平行光垂直照射在薄膜上,经上下两表面反射的两束光发生干涉,如附图所示,若薄膜厚度为e , 且n 1<n 2,n 3<n 2, λ1为入射光在n 1中的波长,则两束反射光的光程为( ) (A )e n 22 (B )11222n e n λ-(C )22112λn e n - (D )22122λn e n -习题11-2图3n S SOO ’解 由于n 1〈n 2,n 3〈n 2,因此光在表面上的反射光有半波损失,下表面的反射光没有半波损失,所以他们的光程差222λ-=∆e n ,这里λ是光在真空中的波长,与1λ的关系是11λλn =。

故选C11-3 如图所示,两平面玻璃板构成一空气劈尖,一平面单色光垂直入射到劈尖上,当A 板与B 板的夹角θ增大时,干涉图样将发生( )变化 (A )干涉条纹间距增大,并向O 方向移动 (B )干涉条纹间距减小,并向B 方向移动 (C )干涉条纹间距减小,并向O 方向移动(D )干涉条纹间距增大,并向B 方向移动解 空气劈尖干涉条纹间距θλsin 2n l =∆,劈尖干涉又称为等厚干涉,即k相同的同一级条纹,无论是明纹还是暗纹,都出现在厚度相同的地方. 当A 板与B 板的夹角θ增大时,△l变小. 和原厚度相同的地方向顶角方向移动,所以干涉条纹向O 方向移动。

第十一章醛酮醌问题和习题解答

第十一章醛酮醌问题和习题解答

CH3CH=O HCl(g)
O O
5
15、以苯、甲苯、四个碳或四个碳以下的简单原料合成下列化合物:
(1) CH3CH2C(CH3)=CH2
Ph3P + CH3Cl
Ph3P+-CH3 Cl-
解:
PhLi
CH3CH2C(CH3)=O + Ph3P=CH2
CH3CH2C(CH3)=CH2
(2) CH3
O2N
CH2=CH2
BrCH2CH2Br
CH3CH2CH2-CH-CH2CH2CH2CH3
OH
Mg
CO2
H2O
TM
(CH3)2C=O + BrMgCH2CH2MgBr + (CH3)2C=O 解:
(CH3)2C(OH)CH2CH2C(OH)(CH3)2
OH
(5)
解:
CHO
OH CHO
PhMgBr
(6)
CHO
b. CH2=CHOCH=CH2 d. CH2=CHCH2CH2CH3
(2) a.
CHO b. HO
CHO c. HO
CHO
d.
解:B(321) > C(240) > D > A
CHO OH
1
4、 完成下列反应方程式:
(1) O
OCH3 OCH3
H2NN
(1) 推测A的结构; (2) 用反-1,2-环戊二醇进行同样的实验,却不发生反应,为什么? 解:二醇与酮在酸催化作用下容易发生缩酮化反应,除水有利于正反应方向的进行。A对碱稳定,遇稀 酸生成原料的特征正是缩酮的性质。反应式如下:
OH OH O
HCl(g)
O
A

C语言程序的设计习题集沈国荣-参考答案

C语言程序的设计习题集沈国荣-参考答案

《C语言程序设计》习题解答国荣隋雪莉闵芳目录第1章 C语言程序设计概述 (2)第2章数据类型及其运算 (3)第3章语句与输入输出 (4)第4章选择结构程序设计 (6)第5章循环结构程序设计 (9)第6章数组 (12)第7章函数 (15)第8章编译预处理 (18)第9章指针 (19)第10章结构体与共用体 (21)第11章位运算 (25)第12章文件操作 (26)第1章 C语言程序设计概述1. 函数、main()函数2. /*、*/3. .C、.OBJ、.EXE4. 顺序结构、选择结构、循环结构三、编程题1.【参考代码】#include<stdio.h>int main( ){printf( "(学校名称)\n" ) ;printf( "()\n" ) ;return 0 ;}2.【参考代码】#include<stdio.h>int main( ){printf( "(学校名称)\n()\n" ) ;return 0 ;}第2章数据类型及其运算注:第5题B选项为:'\'' '\017' '\t'二、填空题1. 字母、数字、下划线2. 1、4、4、83. -164. 3.55. 06. 97. 68. -609. y%2==110. 1、0、1三、程序阅读题1. b2. 03. 04. 10,25. 9,10,9,106. 3,1,0,07. 3,20,30,1第3章语句与输入输出1. 123.472. D3. 回车4. 10,2三、程序阅读题1. 2612. 203. 201,104. y=4630y=46305. *3.140000,3.142*6. c:dec=120,oct=170,hex=78,ASCII=x7. x=1 y=2 *sum*=310 squared is : 1008. 2 48 20.2 20.29. x+y+z=4810. 55, ,A四、编程题1.【参考代码】#include<stdio.h>int main( ){char ch;printf("请输入一个字符:\n");scanf("%c",&ch);printf("%c的ASCII码为:%d\n", ch,ch);return 0 ;}2.【参考代码】#include<stdio.h>#define PI 3.1416int main( ){double r, h;double cl,cs,cv;printf("请输入圆的半径:");scanf("%lf", &r);printf("请输入圆柱高:");scanf("%lf", &h);cl=2*PI*r;cs=PI*r*r;cv=PI*r*r*h;printf("圆的周长为:%.4lf\n", cl);printf("圆的面积为:%.4lf\n", cs);printf("圆柱的体积为:%.4lf\n", cv);return 0 ;}3.【参考代码】#include<stdio.h>int main( ){int splitInt,one,ten,hundred;printf("输入要处理的整数:");scanf("%d",&splitInt);hundred = splitInt/100;ten = splitInt%100/10;one = splitInt%10;printf("个位:%d,十位:%d,百位:%d\n",one,ten,hundred);return 0 ;}第4章选择结构程序设计1. 102. 2,2,23. 64. 97,b5. c=-16. 88887. 20,08. 2,19. 1,12,22,1-2,210. a=1,b=3三、程序完善题1. a>b、c>x四、编程题1.【参考代码】#include<stdio.h>int main( ){int a, b, c,d,min;printf("输入4个整数:");scanf("%d%d%d%d",&a,&b,&c,&d);if(a < b) min = a;else min = b;if(c < min) min=c;if(d<min) min=d;printf("%d\n",min);return 0 ;}2.【参考代码】#include<stdio.h>int main( ){int num,a,b,c,d;printf("请输入一个四位整数:");scanf("%d",&num);a=num/1000;b=num%1000/100;c=num%100/10;d=num%10;printf("各位数字之和为:%d\n",a+b+c+d);return 0 ;}3.【参考代码】#include<stdio.h>int main( ){int x;printf("请输入x:");scanf("%d",&x);printf("y的值为:");if(x<0)printf("%d\n",x);else if(x<50)printf("%d\n",3*x-2);else if(x<100)printf("%d\n",4*x+1);elseprintf("%d\n",5*x);return 0 ;}4.【参考代码】#include<stdio.h>int main( ){int dj;float zl,je,yfk;printf("请输入等级(1~4): ");scanf("%d",&dj);if (dj>4||dj<1){printf("无此等级的苹果!\n");return 0;}printf("请输入重量(公斤): ");scanf("%f",&zl);printf("\n");switch (dj){case 1 : je=5.5*zl; break;case 2 : je=4.3*zl; break;case 3 : je=3.0*zl; break;case 4 : je=2.5*zl; break;}printf("您选择苹果级别: %d 级\n",dj);printf("您购买苹果重量: %.2f公斤\n",zl);printf("您应付金额为: %.2f元\n",je);printf("\n");printf("顾客所付金额: ");scanf("%f",&yfk);if (yfk<je){printf("Data Error!\n");return 0;}printf("应找您: %.2f元\n",yfk-je);return 0 ;}第5章循环结构程序设计1. 1,2,02 . m=4,n=23. A2C4E64. 1325. 46. k=0,m=57. x=88. 1.69. 998988三、程序完善题1. ( ch > 'Z' && ch <= 'Z' + 4 ) ||(ch > 'z' ) ch - 262. k k/10 continue3. i + t * 10 s = s + t4. fabs( t ) >= 1e-6 f = -f5. i<10 j%3 !=0四、编程题1.【参考代码】#include<stdio.h>int main( ){int n , i , j , k ;printf( "Output:\n" ) ;for(n = 100 ; n < 1000 ; n++ ){i = n % 10 ; /* 个位 */j = ( n / 10 ) % 10 ; /* 十位 */k = n / 100 ; /* 百位 */if ( n == i * i * i + j * j * j + k * k * k )printf( "%d\n" , n ) ;}return 0 ;}2. 【参考代码】#include<stdio.h>int main ( ){int i , m , n , t , p , k ;printf( "Please input: " ) ;scanf ( "%d,%d" , &m , &n ) ;if( m < n ){t = n ;n = m ;m = t ;}p = m * n ;while ( n != 0 ) /* 余数不为0,继续相除,直到余数为0 */ {i = m % n ;m = n ;n = i ;}k = p / m ;printf( "%d,%d\n" , m , k );return 0 ;}3. 【参考代码】#include<stdio.h>int main( ){int i , n , t , sum ;t = 1 ;sum = 0 ;printf( "Please input: n = " ) ;scanf( "%d" , &n ) ;for( i = 1 ; i <= n ; i++ ){t = t * i ;sum = sum + t ;}printf( "1!+2!+…+%d!= %d\n" , n , sum ) ;return 0 ;}4. 【参考代码】#include<stdio.h>int main( ){int i , m ;double sum = 0 , k = 1 ;printf( "Please input : m=" ) ;scanf( "%d" , &m ) ;for( i = 1 ; i <= m ; i++ ){sum = sum + k / i ;k = -k ;}printf( "sum=%4.2f\n" , sum ) ;return 0 ;}第6章数组1 82 43 0,24 125 t*M6 mo7 fwo三、程序完善题1 k = i j = ia[k] = max a[j] = min2 sum += score[i] score[i]<avg3 s[i] = s[i] + a[i][j] printf( "\n" ) ;4 j = strlen( str ) – 1 str[j] = k5 ( c = getchar( ) ) != '#' num[c-'A'] += 1四、编程题1. 【参考代码】#include<stdio.h>#define N 5int main( ){int a[N] , i , j , r , temp ;printf( "Please input %d numbers\n" , N ) ;for( i = 0 ; i < N ; i++ )scanf( "%d" , &a[i] ) ;for( i = 0 ; i < N - 1 ; i++ ){r = i ;for( j = i + 1 ; j < N ; j++ )if( a[j] < a[r] )r = j ;if( r != i ){temp = a[r] ;a[r] = a[i] ;a[i] = temp ;}}printf( "The array after sort:\n" ) ;for( i = 0 ; i < N ; i++ )printf( "%5d" , a[i] ) ;printf( "\n" ) ;return 0 ;}2. 【参考代码】#include<stdio.h>int main( ){int a[10] = { 1 , 2 , 3 , 6 , 7 , 8 , 9 , 10 } ;int x , j , k = 0 ;printf( "Please input :x= " ) ;scanf( "%d" , &x) ;if( x > a[7] )a[8] = x ;else{for( j = 0 ; j < 8 ; j++ )if( x < a[j] )break ;for(k = 8 ; k > j ; k-- )a[k] = a[k - 1] ;a[j] = x ;}for( j = 0 ; j < 9 ; j++ )printf( "%5d" , a[j] ) ;printf( "\n" ) ;return 0 ;}3. 【参考代码】#include<stdio.h>int main( ){int a[5][5] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21, 22,23,24} ;int i , j ,sum = 0 ;for ( i = 0 ; i < 5 ; i++ ){for ( j = 0 ; j < 5 ; j++)printf( "%4d" , a[i][j] ) ;printf( "\n" ) ;}for( i =0 ;i < 5 ; i++ )sum += a[i][i] ;printf( " sum=%4d\n" , sum ) ;return 0 ;}4. 【参考代码】#include<stdio.h>int main( ){char s1[100] , s2[30] ;int i , j ;printf( "Please input s1:" ) ;gets( s1 ) ;printf( "Please input s2:" ) ;gets( s2 ) ;for( i = 0 ; s1[i] != '\0' ; i++ ) ;for( j = 0 ; s2[j] != '\0' ; j++ , i++ ) s1[i] = s2[j] ;s1[i] = '\0' ;printf( "Output\ns1:" ) ;puts( s1 ) ;return 0 ;}5. 【参考代码】#include<stdio.h>int main( ){char s1[100] ;int i ;printf( "Please input s1:" ) ;gets( s1 ) ;for( i = 0 ; s1[i] != '\0' ; i++ ) ;printf( "The length of s1 is %d\n" ,i ) ;return 0 ;}第7章函数1 max is 22 a=1,b=23 1 114 a=11,b=12,c=25 66 7 8 97 8 178 0 1 2 0 1 2三、程序完善题1 float area ( float r ) return s2 z = fun( x , y ) z = z * x3 count =fun( score ) count++四、编程题1. 【参考代码】#include<stdio.h>int main( ){void f(int n) ;int n ;printf( "Please input: n= " ) ;scanf( "%d" , &n ) ;if( n <= 0)printf( "Wrong number!\n" ) ;elsef( n ) ;return 0 ;}void f(int n){if( n % 2 == 1 )printf( "%d is a odd number.\n" , n ) ;elseprintf( "%d is a even number.\n" , n ) ; }2. 【参考代码】#include < stdio.h >#include < math.h >int main( ){void f( int m ) ;int m ;printf( "Please input: m= " ) ;scanf( "%d" , &m ) ;f( m ) ;return 0 ;}void f( int m ){int i , k ;k = sqrt( m );for(i = 2 ; i <= k ; i++ )if( m % i == 0 )break;if (i >= k + 1 )printf( "%d is a Prime Number.\n" , m ) ;elseprintf( "%d is not a Prime Number.\n" , m ) ; }3. 【参考代码】#include<stdio.h>int gys( int m , int n ){int r ;r = m % n ;while( r != 0 ){m = n ;n = r ;r = m % n ;}return n ;}int gbs( int m , int n , int r ){return m * n / r ;}int main( ){int m , n , t ;printf( "Please input(m,n):" ) ;scanf( "%d%d" , &m , &n ) ;if( m < n ){t = m ;m = n ;n = t ;}t = gys( m , n ) ;printf( "gys=%d\n" , t ) ;t = gbs( m , n , t ) ;printf( "gbs=%d\n" , t ) ;return 0 ;}4. 【参考代码】#include<stdio.h>int main( ){void mystrcat( char s1[100] , char s2[30] ) ;char s1[100] , s2[30] ;printf( "Please input s1:" ) ;gets( s1 ) ;printf( "Please input s2:" ) ;gets( s2 ) ;mystrcat( s1 , s2 ) ;printf( "Output\ns1:" ) ;puts( s1 ) ;return 0 ;}void mystrcat( char s1[100] , char s2[30] ){int i , j ;for( i = 0 ; s1[i] != '\0' ; i++ ) ;for( j = 0 ; s2[j] != '\0' ; j++ , i++ )s1[i] = s2[j] ;s1[i] = '\0' ;}第8章编译预处理1 6,182 153 5第9章指针二、填空题1. 地址, NULL(或0)2 . char a, *p; , scanf("%c", &a); , p=&a;3. *m4. for( k=0; k<10; k++ )5. *(p+i) , p[i] , *(x+i)6. str[i]或*( str + i ) , i三、程序阅读题1. gae2. bcdABCD3. 7, 8, 84. 8 45. 3 14 26. efgh7. w,one8. 7四、程序完善题1. a[i] 或 *( a + i )2. *p!='\0' *p-'0'3. p1 p2-x4. max(int a , int b ); p = max四、编程题1.【参考代码】#include<stdio.h>void sort( int *a , int *b , int *c );int main(){int m , n , t ;printf( "Please input(m n t):" ) ;scanf( "%d%d%d" , &m , &n , &t ) ;sort( &m , &n , &t ) ;printf( "The result is :%d\t%d\t%d\n" , m , n , t ) ;return 0 ;}void sort( int *a , int *b , int *c ){int temp ;if( *a > *b ) { temp = *a ; *a = *b ; *b = temp ; }if( *a > *c ) { temp = *a ; *a = *c ; *c = temp ; }if( *b > *c ) { temp = *b ; *b = *c ; *c = temp ; }}2.【参考代码】程序1:#include <stdio.h>int strcompare( char *str1 , char *str2 );int main( ){int m ;char s1[20] , s2[20] , *p1 , *p2 ;printf( "Please input(string1):" ) ;scanf( "%s" , s1 ) ;printf( "Please input(string2):" ) ;scanf( "%s" , s2 ) ;m = strcompare ( s1 , s2 ) ;printf( "The result of strcompare is: %d\n" , m ) ;return 0 ;}int strcompare( char *str1 , char *str2 ){int i = 0 ;while( ( *( str1 + i ) == *( str2 + i ) ) &&( *( str1 + i ) != '\0' ) ) i++ ;return( *( str1 + i ) - *( str2 + i ) ) ;}程序2:#include <stdio.h>int strcompare( char *str1 , char *str2 );int main( ){int m ;char s1[20] , s2[20] , *p1 , *p2 ;printf( "Please input(string1):" ) ;scanf( "%s" , s1 ) ;printf( "Please input(string2):" ) ;scanf( "%s" , s2 ) ;p1 = s1 ;p2 = s2 ;m = strcompare ( p1 , p2 ) ;printf( "The result of strcompare is: %d\n" , m ) ;return 0 ;}int strcompare( char *str1 , char *str2 ){int i = 0 ;while( ( *( str1 + i ) == *( str2 + i ) ) &&( *( str1 + i ) != '\0' ) ) i++ ;return( *( str1 + i ) - *( str2 + i ) ) ;}程序3:#include <stdio.h>int strcompare( char str1[] , char str2[] );int main( ){int m ;char s1[20] , s2[20] , *p1 , *p2 ;printf( "Please input(string1):" ) ;scanf( "%s" , s1 ) ;printf( "Please input(string2):" ) ;scanf( "%s" , s2 ) ;p1 = s1 ;p2 = s2 ;m = strcompare ( p1 , p2 ) ;printf( "The result of strcompare is: %d\n" , m ) ;return 0 ;}int strcompare( char *str1 , char *str2 ){int i = 0 ;while( ( str1[i] == str2[i] ) &&( str1[i] != '\0' ) )i++ ;return( str1[i]- str2[i] ) ;}第10章结构体与共用体1. 112 . p->next=head->next head->next=p3. p->next三、程序阅读题1. 51,60,212. 163. 1001,ChangRong,1098.0四、程序完善题1. sizeof( struct ps ) 或 sizeof( bt )2. p=p->next3. person[i].sex五、编程题1.【参考代码】#define N 3#include <stdio.h>struct student{char num[6] ;char name[8] ;int score[2] ;float ave ;} ;void input( struct student stu[N] ) ;void average( struct student stu[N] ) ;int max( struct student stu[N] ) ;int main( ){int i , j ;struct student stu[N] ;input( stu ) ;average( stu ) ;printf( "No\tName\tScore1\tScore2\tAverage\n" ) ;for( i = 0 ; i < N ; i++ ){printf( "%s\t%s\t" , stu[i].num , stu[i].name ) ;for( j = 0 ; j < 2 ; j++ )printf( "%d\t" , stu[i].score[j] ) ;printf( "%8.2f\n" , stu[i].ave ) ;}i = max( stu ) ;printf( "\nThe max is:\n" ) ;printf( "No\tName\tScore1\tScore2\tAverage\n" ) ;printf( "%s\t%s\t" , stu[i].num , stu[i].name ) ;for( j = 0 ; j < 2 ; j++ )printf( "%d\t" , stu[i].score[j] ) ;printf( "%5.2f\n" , stu[i].ave ) ;return 0;}void input( struct student stu[N]){int i , j ;for(i=0;i<N;i++){printf("\nPlease input No%d student:\n",i+1);printf("No:");scanf("%s",stu[i].num);printf("Name:");scanf("%s",stu[i].name);for(j=0;j<2;j++){printf("score %d:",j+1);scanf("%d",&stu[i].score[j]);}}}void average( struct student stu[N]){int i , j , sum ;for(i=0;i<N;i++){for(j=0 , stu[i].ave = 0 ;j<2;j++)stu[i].ave += stu[i].score[j];stu[i].ave = stu[i].ave / 2 ;}}int max( struct student stu[N]){int i , max , index;max = stu[0].ave ;index = 0 ;for( i = 1 ; i < N ; i++ ){if( max < stu[i].ave ){max = stu[i].ave ;index = i ;}}return index;}2.【参考代码】#include<stdio.h>#include<stdlib.h>struct node{short int data ;struct node *next ;} ;typedef struct node NODE ;struct node *CreatLink( ) ;void PrintLink( NODE *head ) ;int max( NODE *head );int main( ){NODE *head ;int max_value ;head = CreatLink( ) ;PrintLink( head ) ;max_value = max( head ) ;printf( "The max is:%d\n" , max_value ) ;return 0 ;}struct node *CreatLink( ){NODE *head , *p , *q ;short int num ;head = ( NODE * )malloc( sizeof( NODE ) ) ;head->next = NULL ;p = head ;printf( "Please input( end of -1)!:\n" ) ;scanf( "%d" , &num ) ;while( num != -1 ){q = ( NODE *)malloc( sizeof( NODE ) ) ;q->data = num ;p->next = q ;p = q ;scanf( "%d" , &num ) ;}p->next = NULL ;return head ;}void PrintLink( NODE *head ){NODE *p;p = head->next ;printf( "The data is:\n" ) ;while( p != NULL ){printf( "%4d" , p->data ) ;p = p->next ;}printf( "\n" ) ;}int max( NODE *head ){NODE *p;short int max = -32768;p = head->next ;while( p != NULL ){if( max < p->data )max = p->data ;p = p->next ;}return max ;}第11章位运算1. 0000 11112 . x | ff003. 4 3三、程序阅读题1. 02. 11 223. 0四、编程题1.【参考代码】#include<stdio.h>int main(){short int data , low ,high ;printf( "Please input( short int):" ) ;scanf( "%d" , &data ) ;low = data & 0x00ff ; /* 0x00ff表示低字节全1 */high = data & 0xff00 ; /* 0xff00表示高字节全1 */printf( "data:0x%x,the value of low byte is:0x%x\n" , data , high ) ;printf( "data:0x%x,the value of high byte is:0x%x\n" , data , low ) ;return 0 ;}2.【参考代码】#include <stdio.h>int main( ){short int data , result ;printf( "Please intput(short int):" ) ;scanf( "%d" , &data ) ;result = data ^ 0x000f ; /* 0x000f表示低4位全1,高12位全0 */printf( "The data is 0x%x \nThe result is :0x%x\n" , data,result ) ;return 0 ;}第12章文件操作二、填空题1. 二进制 ASCII(文本)2 . FILE *fp # include <stdio.h>3. n – 1 buf的首地址4. 15. 用以获得文件读写位置标记指针的位置,函数返回值为当前文件读写位置标记指针相对于文件开头的字节数6. 使文件读写位置标记指针重新返回文件的开头三、程序阅读题1. 1 22. end3. 34. hello,四、程序完善题1. ! feof (fp) fgetc (fp)2. fopen (“num.dat”,”r”) fp,”%d”,&temp z++3. ( ch=getchar() ) ch , fp五、编程题1.【参考代码】#include<stdio.h>#include<stdlib.h>#include<string.h>int main( ){FILE *fp ;char str[100] , filename[10] ;int i = 0 ;if( ( fp = fopen( "upper.txt" , "w+" ) ) == NULL ){printf( "Cannot open file!\n" ) ;exit( 0 ) ;}printf( "Please input(string):\n" ) ;gets( str ) ;while( str[i] != '!' ){if( str[i] >= 'a' && str[i] <= 'z' )str[i] = str[i] - 32 ;fputc( str[i] , fp ) ;i++ ;}rewind( fp ) ;fgets( str , strlen( str ) + 1 , fp ) ;printf( "\nThe result is :\n" ) ;printf( "%s\n" , str ) ;fclose( fp ) ;return 0 ;}2.【参考代码】#include<stdio.h>#include<stdlib.h>#define N 5struct student{char num[10] ;char name[8] ;int score[3] ;float ave ;} stu[N] ;int main( ){int i , j , sum ;FILE *fp ;for( i = 0 ; i < N ; i++ ){printf( "\nPlease input student information: \n" , i + 1 ) ;printf( "No:" ) ;scanf( "%s" , stu[i].num ) ;printf( "Name:" ) ;scanf( "%s" , stu[i].name ) ;sum = 0 ;for( j = 0 ; j < 3 ; j++ ){printf( "Score%d:" , j + 1 ) ;scanf( "%d" , &stu[i].score[j] ) ;sum += stu[i].score[j] ;}stu[i].ave = sum / 3.0 ;}if( ( fp = fopen( "stud.dat" , "w" ) ) == NULL ){printf( "cannot open stud for write!\n" ) ;exit( 0 ) ;}for( i = 0 ; i < N ; i++ ){fwrite( &stu[i] , sizeof( struct student ) , 1 , fp ) ;}fclose( fp ) ;if( ( fp = fopen( "stud.dat" , "r" ) ) == NULL ){printf( "cannot open stud for read!\n" ) ;exit( 0 ) ;}printf( "\nNo\tName\tScore1\tScore2\tAverage\n" ) ;for( i = 0 ; i < N ; i++ ){fread( &stu[i] , sizeof( struct student ) , 1 , fp ) ;printf( "\n%s\t%s\t%d\t%d\t%5.2f\n" , stu[i].num , stu[i].name , stu[i].score[0] , stu[i].score[1] , stu[i].score[2] ,stu[i].ave ) ;}fclose( fp ) ;return 0 ;}3.【参考代码】#include<stdio.h>#include<stdlib.h>#define N 5struct student{char num[10] ;char name[8] ;int score[3] ;float ave ;} stu[N] ;int main( ){int i , j , min , index ;FILE *fp ;struct student temp ;/*从stud.dat文件中读入数据,存放在stu数组中*/if( ( fp = fopen( "stud.dat" , "r" ) ) == NULL ){printf( "cannot open stud for read!\n" ) ;exit( 0 ) ;}printf( "\nThe data is :" ) ;printf( "\nNo\tName\tScore1\tScore2\tAverage\n" ) ;for( i = 0 ; i < N ; i++ ){fread( &stu[i] , sizeof(struct student ) , 1 , fp ) ;printf( "\n%s\t%s\t%d\t%d\t%5.2f\n" , stu[i].num , stu[i].name , stu[i].score[0] , stu[i].score[1] , stu[i].score[2] ,stu[i].ave ) ;}fclose( fp ) ;/*对stu数组中数组元素按其平均值数据域排序*/for( i = 0 ; i < N -1 ; i++ ){min = stu[i].ave ;index = i ;for( j = i + 1 ; j < N ; j++ ){if( min > stu[j].ave )index = j ;}if( index != i ){temp = stu[i] ;stu[i] = stu[index] ;stu[index] = temp ;}}/*将排序之后的stu数组存放在stu_sort文件中*/if( ( fp = fopen( "stu_sort.dat" , "w" ) ) == NULL ){printf( "cannot open stud for write!\n" ) ;exit( 0 ) ;}for( i = 0 ; i < N ; i++ ){fwrite( &stu[i] , sizeof(struct student) , 1 , fp ) ;}fclose( fp ) ;/*将stu_sort文件中的数据,读出存放在stu数组中*/. .页脚if( ( fp = fopen( "stu_sort.dat" , "r" ) ) == NULL ){printf( "cannot open stud for read!\n" ) ;exit( 0 ) ;}printf( "\nThe result is:" ) ;/*将stu数组中的数据输出*/printf( "\nNo\tName\tScore1\tScore2\tAverage\n" ) ;for( i = 0 ; i < N ; i++ ){fread( &stu[i] , sizeof(struct student) , 1 , fp ) ;printf( "\n%s\t%s\t%d\t%d\t%5.2f\n" , stu[i].num , stu[i].name ,stu[i].score[0] , stu[i].score[1] ,stu[i].score[2] , stu[i].ave ) ;}fclose( fp ) ;return 0 ;}。

第11章卤素和氧族元素习题解答

第11章卤素和氧族元素习题解答

第十一章卤素和氧族思考题解析1.解释下列现象:(1)在卤素化合物中,Cl、Br、I可呈现多种氧化数。

解:因为Cl、Br、I原子的价层电子排布为ns2np5,当参加反应时,未成对的电子可参与成键外,成对的电子也可拆开参与成键,故可呈现多种氧化数。

(2)KI溶液中通入氯气是,开始溶液呈现红棕色,继续通入氯气,颜色褪去。

解:开始I-被CI2氧化成I2,使溶液呈现红棕色;继续通入氯气,I2被Cl2氧化成无色的IO3-,反应式如下:2I-2 I2 + 2Cl-I2 + 5Cl2 + 6H2O 2IO3-+ 10Cl-+ 12H+2.在氯水中分别加入下列物质,对氯水的可逆反应有何影响?(1)稀硫酸(2)苛性钠(3)氯化钠解:氯水中存在如下平衡:Cl2 + H2(2)加入苛性钠,平衡向右移动,有利于Cl2的歧化反应;(3)加入氯化钠,平衡向左移动,不利于Cl2的歧化反应。

3.怎样除去工业溴中少量Cl2?解:蒸馏工业溴时,加入少量KBr,使其发生下列反应:Cl2+ 2KBr → Br2+ 2KCl4.将Cl2通入熟石灰中得到漂白粉,而向漂白粉中加入盐酸却产生Cl2,试解释之。

解:因为上述过程发生了如下相应反应:40℃以下··3Ca(OH)2 + 2Cl2 Ca(ClO)2 + CaCl2 Ca(OH)2 H2O + H2OCa(ClO)2 + 4HCl 2Cl2 + CaCl2 + 2H2O5.试用三种简便的方法鉴别NaCl、NaBr、NaI。

解:(1)AgNO3(A)Cl-+ Ag+→ AgCl ↓白色(B ) Br -+ Ag +→ AgBr ↓淡黄色(C ) I -+ Ag +→ AgI ↓黄色(2)Cl 2水+CCl 4(A ) 2NaBr + Cl 4 → 2NaCl + Br 2在CCl 4中呈桔黄色(B ) 2NaI + Cl 4 → 2NaCl + I 2在CCl 4中呈紫红色 (3)浓H 2SO 4(A ) NaCl + H 2SO 4 → NaHSO 4 + HCl ↑ (B ) NaBr + H 2SO 4 → NaHSO 4 + HBr ↑2 HBr + H 2SO 4 → Br 2 + 2H 2O + SO 2 ↑使品红试纸褪色(C ) NaI + H 2SO 4 → NaHSO 4 + HI ↑8HI + H 2SO 4 → 4I 2 + 4H 2O + H 2S ↑使Pb (OAc )2试纸变黑6.下列两个反应在酸性介质中均能发生,如何解释?(1) Br 2 + 2I -→ 2Br -+ I 2 (2) 2BrO 3-+ I 2 → 2IO 3-+ Br 2解:(1)E ¢(Br 2/ Br -)=1。

C++第11章习题解答

C++第11章习题解答

第十一章标准模板库(STL)习题一. 基本概念与基础知识自测题11.1填空题11.1.1 STL大量使用继承和虚函数是(1)(填对或错)。

因为(2)。

答案:(1)错(2)它使用的是模板技术,追求的是运行的效率,避免了虚函数的开销11.1.2 有两种STL容器:(1)和(2)。

STL不用new和delete,而用(3)实现各种控制内存分配和释放的方法。

答案:(1)第一类容器(2)近容器(3)分配子(allocator)11.1.3 五种主要迭代子类型为(1)、(2)、(3)、(4)和(5)。

STL算法用(6)间接操作容器元素。

sort算法要求用(7)迭代子。

答案:(1)输入(InputIterator)(2)输出(OutputIterator)(3)正向(ForwardIterator)(4)双向(BidirectionalIterator)(5)随机访问(RandomAccessIterator)(6)迭代子(7)随机访问(RandomAccessIterator)11.1.4 三种STL容器适配器是(1)、(2)和(3)。

答案:(1)stack(栈)(2)queue(队列)(3)priority_queue(优先级队列)11.1.5 成员函数end()得到容器(1)的位置,而rend得到容器(2)的位置。

算法通常返回(3)。

答案:(1)最后一个元素的后继位置(2)引用容器第一个元素的前导位置。

实际上这是该容器前后反转之后的end()(3)迭代子11.1.6 适配器是(1),它依附于一个(2)容器上,它没有自己的(3)函数和(4)函数,而借用其实现类的对应函数。

答案:(1)不独立的(2)顺序(3)构造函数(4)析构函数11.1.7 返回布尔值的函数对象称为(1),默认的是(2)操作符。

答案:(1)谓词(predicate)(2)小于比较操作符“<”11.1.8C++标准库中给出的泛型算法包括(1)种算法。

基础化学第十一章后习题解答

基础化学第十一章后习题解答

第十一章后习题解答1. 区别下列名词:(1) 内层与外层(2) 单齿配体与多齿配体(3) d2sp3杂化和sp3d2杂化(4) 内轨配合物和外轨配合物(5) 强场配体和弱场配体(6) 低自旋配合物和高自旋配合物解(1)配合物的内层是由中心原子提供杂化轨道,配体中配位原子提供孤对电子,通过配位键形成的配离子。

与配离子带相反电荷的离子称为配合物的外层。

(2)只含有一个配位原子的配体称为单齿配体,如NH3,H2O,OH-,F -等。

含有两个或两个以上配位原子的配体称为多齿配体,如:乙二胺,EDTA等。

(3)以2个(n-1)d轨道、1个n s轨道和3个n p轨道杂化形成6个杂化轨道,称为d2sp3杂化。

以1个n s轨道、3个n p轨道和2个n d轨道杂化形成6个杂化轨道,称为sp3d2杂化。

(4)中心原子全部用最外层轨道杂化所形成的配合物称为外轨配合物;用次外层(n-1)d轨道和最外层n s,n p轨道杂化所形成的配合物称为内轨配合物。

(5)依据配体使中心原子d轨道能级的分裂程度不同,配体有强场、弱场之分。

使d轨道能级分裂能力强的配体称为强场配体,如CN-,CO;使d轨道能级分裂能力弱的配体称为弱场配体,如H2O、F -、Cl-、Br-、I-。

(6)中心原子电子组态为d4~d7的配合物中,单电子数多的称为高自旋配合物,单电子数少的称为低自旋配合物。

强场配体形成低自旋配合物,弱场配体形成高自旋配合物。

2. 命名下列配离子和配合物,指出中心原子、配体、配位原子和配位数,写出K s的表达式(1) Na3[Ag(S2O3)2] (2) [Co(en)3]2(SO4)3(3) H[Al(OH)4] (4) Na2[SiF6](5) [PtCl5(NH3)]-(6) [Pt(NH3)4(NO2)Cl](7) [CoCl2(NH3)3H2O]Cl (8) NH4[Cr(NCS)4(NH3)2]解名称中心原子配体配位原子配位数K s表达式(1) 二(硫代硫酸根)合银(I)酸钠Ag+S2O32-S2O32-中的S2 32322223[Ag(S O)][Ag][S O]-+-(2) 硫酸三(乙二胺)合钴(Ⅲ)Co3+en en中的N6 333+3[Co(en)][Co][en]+(3) 四羟基合铝(Ⅲ)酸Al3+OH-OH-中的O4434[Al(OH)][Al][OH]-+-(4) 六氟合硅(Ⅳ)酸钠Si(Ⅳ) F-F-中的F 62646[SiF][Si][F]-+-(5) 五氯•氨合铂(Ⅳ)酸根Pt4+Cl-,NH3Cl,N 653453[Pt(Cl)(NH)][Pt][Cl][NH]-+-(6) 氯•硝基•四氨合铂(Ⅱ)Pt2+NO2-,Cl-,NH3N,Cl、N 6 2342423[PtCl(NO)(NH)][Pt][Cl][NO][NH]+--(7) 氯化二氯•三氨•水合钴(Ⅲ)Co3+Cl-,NH3,H2OCl,N,O 623323233[Co(Cl)(NH)(H O)][Co][Cl][NH]++-(8) 四(异硫氰酸根)•二氨合铬(Ⅲ)酸铵Cr3+NCS-,NH3N,N 64323423[Cr(NCS)(NH)][Cr][NCS][NH]-+-3. 什么是螯合物?螯合物有何特点?它的稳定性与什么因素有关?形成五员环和六员环的螯合物,要求配体应具备什么条件?解由中心原子与多齿配体形成有环状结构的配合物称为螯合物。

第11章思考题和习题解答

第11章思考题和习题解答

第11章供配电系统的运行和管理11-1.节约电能有何重要意义答:节约电能的意义主要表现为:1.缓解电力供需矛盾。

节约电能可以节约煤炭、水力、石油等一次能源,使整个能源资源得到合理使用,缓解电力供需矛盾,并能减轻能源部门和交通运输部门的紧张程度。

2.节约国家的基建投资。

节约电能可以节约国家用于发电、输配电及用电设备所需要的投资,给整个国民经济带来很大的利益,有利于国民经济的发展。

3.提高企业的经济效益。

节约电能可以减少企业的电费开支,降低生产成本,积累资金,提高企业的经济效益。

4.推动企业用电合理化。

节约电能可以推动企业采用新技术、新材料、新设备、新工艺,加速设备改造和工艺改革,从而提高企业的经营管理水平,使企业生产能力得到充分发挥,促进企业生产水平的不断发展和提高。

11-2.什么叫负荷调整有哪些主要调整措施答:根据供电系统的电能供应情况及各类用户不同的用电规律,合理地安排各类用户的用点时间,以降低负荷高峰,填补负荷的低谷(即所谓的“削峰填谷”),充分发挥发、变电设备的潜能,提高系统的供电能力。

负荷调整的主要措施:①同一地区各厂的厂休日错开;②同一厂内各车间的上下班时间错开,使各个车间的高峰负荷分散;③调整大容量用电设备的用点时间,使它避开高峰负荷时间用电,做到各时段负荷均衡,从而提高了变压器的负荷系数和功率因数,减少电能的损耗。

④实行“阶梯电价+分时电价”的综合电价模式。

“阶梯电价”全名为“阶梯式累进电价”,是指把户均用电量设置为若干个阶梯,随着户均消费电量的增长,电价逐级递增。

峰谷分时电价是指根据电网的负荷变化情况,将每天24小时划分为高峰、平段、低谷等时段,各时段电价不同,以鼓励用电客户合理安排用电时间,削峰填谷,提高电力资源的利用效率。

11-3.什么叫经济运行什么叫变压器的经济负荷答:经济运行是指整个电力系统的有功损耗最小,获得最佳经济效益的设备运行方式。

变压器的经济负荷,就是应满足变压器单位容量的综合有功损耗△P/S 为最小值的条件。

大学物理简明教程习题解答第11章_2010.9

大学物理简明教程习题解答第11章_2010.9

第11章 狭义相对论11-1 一根在参照系s 中平行于x 轴的细棒,沿此轴以0.63c 运动。

它的静长是1.70m ,求在s 系中测得的细棒长度。

解 已知细棒静长m 70.10=L ,相对S 系的运动速度c u 630.=。

在S 系中测得棒长发生收缩。

根据长度收缩公式,细棒长度为m 32.1/1220=-=c u L L11-2 一根米尺沿长度方向相对观察者作匀速运动,观察者测得其长度为75cm ,求米尺的运动速度。

解 已知米尺静长cm 1000=L ,米尺相对观察者作匀速直线运动。

观察者测得米尺长度 cm 75/1220=-=c u L L 故米尺的运动速度 82266.075.01)(1c c L L c u =-=-= 11-3 一根米尺沿着它的长度方向相对于观察者以0.6c 的速度运动,米尺通过观测者面前要花多长时间?解 已知米尺静长cm 1000=L ,米尺相对于观察者的运动速度c u 60.=。

根据长度收缩公式,观察者测得米尺长度 m 800.08.0/10220==-=L c u L L 米尺通过观察者面前需要的时间s 1044.4Δ9-⨯==uLt 11-4 一个立方体的(固有)体积为1000cm 3。

求沿与立方体的一边平行的方向以0.8c 的速度运动的观察者o '所测得的体积。

解 已知立方体的固有边长cm 10300==V L ,观察者o '相对立方体一边平行运动,c u 80.=。

测得与运动方向垂直的边长保持不变,但与运动方向平行的边长发生长度收缩。

根据长度收缩公式,有 cm 0.66.0/10220==-=L c u L L 观察者o '测得立方体体积320cm 600==L L V11-5 一个π介子在它自己的参照系中的平均寿命是2.6⨯10–8s 。

如果介子以0.95c 的速率运动,则在地面上的观察者测得它的平均寿命是多少?解 π介子在自己的参照系,即在相对静止的参照系中的寿命为原时,即s 106.2Δ80-⨯=t 。

第十一章习题解答

第十一章习题解答

第十一章习题解答Last revision on 21 December 2020第十一章 微分方程习题11-11.说出下列各微分方程的阶数:(1)20dy dy x y dx dx ⎛⎫+-= ⎪⎝⎭; (2)220d Q dQ Q L Rdt dt C -+=; (3)220xy y x y '''''++= ; (4)()d (76)0x y y x y dx ++-=; (5)2sin y y y x '''++= ; (6)2d sin .d ρρθθ+= 解:(1)一阶;(2)二阶;(3)三阶;(4)一阶;(5)二阶;(6)一阶. 2.指出下列各函数是否为所给微分方程的解: (1)22 , 5;xy y y x '==(2)0 , 3sin 4cos ;y y y x x ''+==-(3)221, ;y x y y x''=+=(4)21221 , sin cos .2x x d y y e y C x C x e dx +==++解:(1)∵ 10 y x '=,代入方程得 21025x x x ⋅=⋅∴25y x =是方程的解.(2)∵ 3cos 4sin ,3sin 4cos y x x y x x '''=+=-+,代入方程,得∴ 3sin 4cos y x x =-是方程的解. (3)∵ 2312,y y x x '''=-=,代入方程,得 23221x x x≠+ ∴1y x=是方程的解. (4)∵ 21212211cos sin ,sin cos 22x x dy d y C x C x e C x C x e dx dx =-+=--+,代入方程, 得 121sin cos 2x C x C x e ⎛⎫--++ ⎪⎝⎭121sin cos 2x x C x C x e e ⎛⎫++= ⎪⎝⎭∴121sin cos 2x y C x C x e =++是方程的解.3.在下列各题中,验证所给二元方程所确定的函数为所给微分方程的解: (1)()2222 , ;x y y x y x xy y C '-=--+= (2)()220 , ln().xy x y xy yy y y xy '''''-++-==解:(1)在二元方程22 x xy y C -+=的两边同时对x 求导,得 移项后即得 ()22 x y y x y '-=-故二元方程22x xy y C -+=所确定的函数是所给微分方程的解.(2)在 ln()y xy =两边对x 求导,得11 ()y y y xy xy x y '''=+=+, 即 yy xy x'=-()()()()()232223122 y xy x y y xy xy y yxy xy xyy xy x xy x xy x ''--+-'--+-+-''===---,代入微分方程,得故 ln()y xy =所确定的函数是所给微分方程的解.4.在下列各题中,确定函数关系式中所含的参数,使函数满足所给的初始条件: (1)2220 , |1;x x xy y C y =-+==(2)()1200 , |0 , |1;x x x y C C x e y y =='=+== (3)1200cos sin , | 1 , |.t t x C t C t x x ωωω=='=+== 解:(1)∵ 0 |1x y ==∴222 =0011C -+=即 221x xy y -+=(2)()122 x y C C x C e '=++,由00 |0 , |1x x y y =='==,得 11201C C C =⎧⎨+=⎩∴12 =0 , =1C C , x y xe =(3)12sin cos x C t C t ωωωω'=-+,由00| 1 , |t t x x ω=='==,得 121C C ωω=⎧⎨=⎩∴12 =1 , =1C C , cos sin x t t ωω=+5.写出由下列条件确定的曲线所满足的微分方程:(1)曲线在点(,)x y 处切线的斜率等于该点横坐标的平方;(2)曲线上点(,)P x y 处的法线与x 轴的交点为Q ,且线段PQ 被y 轴平分. 解:(1)设曲线的方程为()y y x =,则曲线上点(,)x y 处切线的斜率为y ',由条件知2y x '=,此即为所求曲线的微分方程.(2)设曲线的方程为()y y x =,则曲线上点(,)P x y 处法线的斜率为1y -',由条件知线段PQ 中点的横坐标为0,所以Q 的坐标为(,0)x -,则有 即所求曲线的微分方程为 20yy x '+=.习题11-21.求下列微分方程的通解:(1)ln 0;xy y y '-= (2)23550;x x y '+-= (3'= (4)2();y xy a y y '''-=+ (5)cos sin d sin cos d 0;x y x x y y += (6)2d (4)d 0.y x x x y +-= 解:(1)原方程可写为ln 0dyxy y dx-=,分离变量,得d 1,ln y dx y y x = 两端积分,得 11ln dy dx y y x=⎰⎰ 即 ln ln ln ln ln y x C Cx =+=,亦即ln y Cx = ,故通解为Cx y e = (2)原方程可写为235dy x x dx =+,两端分离变量并积分,得 23()5dy x x dx =+⎰⎰, 故通解为231125y x x C =++ .(3)原方程可写为dy dx =,两端分离变量并积分,得=,故通解为arcsin arcsin y x C =+.(4)原方程可写为21dy ay dx x a=--,两端分离变量并积分,得211ady dx y x a =--⎰⎰,故通解为1ln 1a x a C y=+-+. (5)分离变量,得cos cos d d sin sin y x y x y x =- ,两端积分,得 cos cos d d sin sin y xy x y x=-⎰⎰ , 1ln sin ln sin y x C =-+,1ln sin sin x y C ⋅=,故通解为sin sin x y C = ,其中1C C e =±为任意常数. (6)分离变量,得,24dx dyx x y=-积分,得 1144dy dx x x y ⎛⎫+= ⎪-⎝⎭⎰⎰, 即 4ln ln(4)ln ln x x C y --+=,故通解为4(4)x y Cx -=. 2.求下列微分方程满足所给初始条件的特解:(1)20,|0;x y x y e y -='== (2)0cos sin d cos sin d ,|;4x x y y y x x y π===(3)2sin ln ,|;x y x y y y e π='== (4)0cos d (1)sin d 0,|;4xx y x e y y y π-=++==(5)2d 2d 0,|1;x x y y x y =+== (6)220(+)d ()d 0,| 1.x xy x x x y y y y =+-==解:(1)分离变量并积分得, 2y x e dy e dx =⎰,即通解为 212y x e e C =+,由条件0|0x y ==,得112C =+, 12C =,故满足初始条件的特解 21(1)2y x e e =+ .(2)分离变量并积分得,sin sin d d cos cos y xy x y x=⎰⎰, 即 ln(cos )ln(cos )ln y x C -=--, 亦即通解为cos cos y C x =,由条件0|4x y π==,得 coscos 04C π=,C =,故满足初始条件的特解 cos 0x y -=. (3)分离变量并积分得,1csc ln dy xdx y y=⎰⎰, 即ln(ln )ln(tan )ln 2x y C =+,亦即通解为ln tan 2xy C =,由条件2|x y e π==,得ln tan 4e C π=,1C =,故满足初始条件的特解ln tan2xy =. (4)分离变量并积分得,tan 1x xe ydy dx e-=+⎰⎰,通解为(1)sec xe y C +=,由条件0|4x y π==,得C =(1)sec x e y +=.(5)分离变量并积分得,12dy dx y x=-⎰⎰,通解为2x y C =由条件2|1x y ==,得4C =,故满足初始条件的特解24x y =. (6)分离变量并积分得,2211y x dy dx y x=+-⎰⎰,通解为22(1)(1)x y C -+= 由条件0|1x y ==,得2C =,故满足初始条件的特解22(1)(1)2x y -+=. 3.求下列齐次方程的通解:(1)0;xy y '-= (2)d ln ;d y yxy x x= (3)22()d d 0;x y x xy y +-= (4)332()d 3d 0;x y x xy y +-=(5) ;y xyy e x '=+ (6)(12)d 21d 0.x xy y x e x e y y ⎛⎫++-= ⎪⎝⎭解:(1)原方程可写为dy y dx x =y u x =,则 ,y ux =d d ,d d y u u x x x =+代入原方程,得dd uu xu x +=+1dx x =,积分得 ln(ln ln u x C =+,即u Cx =,亦即y Cx x +=,原方程的通解2y Cx =.(2)原方程可写为d ln d y y y x x x =,令y u x =,则 ,y ux =d d ,d d y uu x x x=+ 代入原方程,得d ln d uu xu u x+=,分离变量积分得 ()11ln 1du dx u u x =-⎰⎰, 即 ln(ln 1)ln ln u x C -=+,亦即 ln 1y Cx x =+,原方程的通解ln 1yCx x=+. (3)原方程可写为d d y y x x x y =+,令y u x =,则 ,y ux =d d ,d d y uu x x x=+ 代入原方程,得d 1d u u xu x u +=+,分离变量积分得 1udu dx x=⎰⎰, 即 22ln u x C =+,,将yu x =代入上式得原方程的通解22(2ln )y x x C =+.(4)原方程可写为22d d 33y y x x x y =+,令y u x =,则 ,y ux =d d ,d d y uu x x x=+代入原方程,得2d 1d 33u u u x x u+=+,分离变量积分得 233112u du dx u x =-⎰⎰, 即 311ln(12)ln 2u x C --=+,亦即 3221C u x =-,其中1C C e =,将yu x =代入上式,得原方程的通解332x y Cx -=. (5)令y u x =,则 ,y ux =d d ,d d y u y u x x x '==+代入原方程,得d d u uu x e u x+=+,即 ln ueCx --=,将yu x=代入上式,得原方程的通解ln 0yx e Cx -+=.(6)原方程可写为12d d 12xy xyx ey x ye ⎛⎫- ⎪⎝⎭=+,令x u y =,则 ,x u y =d d ,d d x u u y y y =+ 代入原方程,得d 2(1)dy 12u uu e u u y e -+=+,分离变量积分得 1212u u e du dy u e y +=-+⎰⎰, 即 ln(2)ln ln u u e y C +=-+,亦即 (2)u y u e C +=,将yu x=代入上式,得原方程的通解2x yx ye C +=4.求下列线性微分方程的通解:(1)d ;d x yy e x-+= (2)232;xy y x x '+=++ (3)tan sin 2;y y x x '+= (4)d 32;d ρρθ+=(5)ln d (ln )d 0;y y x x y y +-= (6)2d (6)20.d yy x y x -+=解:(1)原方程是()1P x =,()x Q x e -=的一阶非齐次线性方程.由通解公式得原方程的通解为()()dx dxx x xx x y e e e dx C eee dx C e x C -----⎛⎫⎰⎰=⋅+=⋅+=+ ⎪⎝⎭⎰⎰.(2)原方程可化为123y y x x x '+=++,它是1()P x x =,2()3Q x x x=++的一阶非齐次线性方程.由通解公式得原方程的通解为()11221332dx dx x x y e x e dx C x x dx C x x -⎡⎤⎛⎫⎰⎰⎡⎤=++⋅+=+++⎢⎥ ⎪⎣⎦⎝⎭⎣⎦⎰⎰213232C x x x =+++; (3)原方程是()tan P x x =,()sin 2Q x x =的一阶非齐次线性方程.由通解公式得原方程的通解为tan tan 2sin 2sin 2cos cos 2cos cos xdx xdx x y e x e dx C x dx C C x x x -⎛⎫⎛⎫⎰⎰=⋅+=+=- ⎪ ⎪⎝⎭⎝⎭⎰⎰. (4)原方程是()3P θ=,()2Q θ=的一阶非齐次线性方程.由通解公式得333332223333d d C C Ce e d e e dx e θθθθθρθ---⎛⎫⎛⎫⎰⎰=⋅+=+=+ ⎪ ⎪⎝⎭⎝⎭⎰⎰ ,即原方程的通解为 332Ce θρ-=+. (5)原方程可化为1=ln dx x dy y y y +,它是1()ln P y y y =,1()Q y y=的一阶非齐次线性方程.由通解公式得112ln ln 11111ln ln 2ln 2ln 22dy dyy y y y C C C x e e dy ydy y y y y y -⎛⎫⎛⎫⎰⎰⎛⎫=⋅+=⋅+=+ ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭⎰⎰, 即原方程的通解为22ln ln x y y C =+.(6)原方程可化为3=2dx x y dy y --,它是3()P y y =-,()2yQ y =-的一阶非齐次线性方程.由通解公式得33323311222dy dy y y y y x e e dy C y dy C y Cy y -⎡⎤⎛⎫⎰⎰⎛⎫=-⋅+=-⋅+=+⎢⎥ ⎪ ⎪⎝⎭⎝⎭⎢⎥⎣⎦⎰⎰. 5.求下列微分方程满足所给初始条件的特解: (1)0d tan sec ,|0;d x y y x x y x =-== (2)21d 4,| 2 ;d x y yx y x x=+== (3)cos 2d cot 5,|4;d x x y y xe y x π=+==- (4)0d 38,| 2 d x yy y x =+==.解:(1)由公式可得一阶线性微分方程通解为()tan tan 11sec sec cos cos cos xdxxdx y e x e dx C x xdx C x C x x -⎡⎤⎰⎰⎡⎤=⋅+=⋅+=+⎢⎥⎣⎦⎣⎦⎰⎰由0|0x y ==得0C =,故特解为cos xy x=. (2)由公式可得一阶线性微分方程通解为由12x y==得1C =,故特解为31y x x=+. (3) 由公式可得一阶线性微分方程通解为 由24x yπ==得1C =,故特解为cos 151sin x y e x⎡⎤=-+⎣⎦,即 cos sin 51x y x e +=. (4)由公式可得一阶线性微分方程通解为由0| 2 x y ==得23C =-,故特解为32(4)3x y e -=-.6.求下列伯努利方程的通解:(1)2d (cos sin );d y y y x x x +=- (2)33d 22 .d yxy x y x+= 解:方程两边同除以2y ,得21d cos sin d yy y x x x --+=- 令1z y =,2d d y dz y x dx -=-,则原方程变为sin cos dzz x x dx-=-,故将1z y =代入上式,得原方程通解为1sin x Ce x y =-.1sin x x Ce y=-+; (2)方程两边同除以3y ,得323d 22d yy xy x x--+= 令21z y =,3d 1d 2y dz y x dx -=-,则原方程变为344dz xz x dx-=-,故 将21z y =代入上式,得原方程通解为222212x y Ce x -=++. 7.用适合的变量代换将下列方程化为可分离变量的方程,然后求出通解: (1)2d ();d yx y x=+ (2)d 11;d y x x y =+- (3)(ln ln );xy y y x y '+=+ (4)212x y y e +-'=-.解:(1)令u x y =+,则1dy du dx dx =-,从而原方程可化为21du u dx=+,分离变量积分得21dudx u=+⎰⎰,即arctan x u C =+. 将u x y =+代入,得原方程的通解为arctan()x x y C =++,即tan()y x x C =-++.(2)令u x y =-,则1dy du dx dx =-,从而原方程可化为1du dx u -=,分离变量积分得udu dx =-⎰⎰,即2112x u C +=. 将u x y =-代入,得原方程的通解为2()2x y x C -=-+ (其中12C C =).(3)令u xy =,则2,duxuu dydx y x dx x-==,从而原方程可化为21()ln du u u u x u x dx x x x -+=,分离变量积分得ln dx dux u u =⎰⎰,即 ln ln ln(ln )x C u +=,亦即C x u e =,将u xy =代入,得原方程的通解为1C x y e x=.(4)令21u x y =+-,则2dy du y dx dx '==-,从而原方程可化为u du e dx=,分离变量积分得udx e du -=⎰⎰,即u e C x -=-. 将21u x y =+-代入,得原方程的通解为12ln y x C x =---.8.判别下列方程中哪些是全微分方程,并求全微分方程的通解:(1)(cos cos )d (sin sin )d 0x y x y y y x x ++-=; (2)2()0x y dx xdy --=; (3)22()0x y dx xydy ++= ; (4)22(1)20e d e d θθρρθ++=. 解:(1)这里(,)sin sin , (,)cos cos P x y y y x Q x y x y x =-=+,cos sin P Q y x y x∂∂=-=∂∂,所以(1)是全微分方程.取000 , 0x y ==, 根据公式00(,)(,)(,)x yx y u x y P x y dx Q x y dy =+⎰⎰,有于是全微分方程的通解为sin cos x y y x C +=.. (2)这里2(,),(,)P x y x y Q x y x =-=-,于是有1P Qy x∂∂=-=∂∂,所以(2)是全微分方程.取000 , 0x y ==,根据公式00(,)(,)(,)xy x y u x y P x y dx Q x y dy =+⎰⎰,有于是全微分方程的通解为33x xy C =+.(3)这里22(,),(,),P x y x y Q x y xy =+=2P y y ∂=∂,Q y x∂=∂,显然P Q y x ∂∂≠∂∂,所以(3)不是全微分方程.(4)22(1)20e d e d θθρρθ++=.这里22(,)1,(,)2P e Q e θθρθρθρ=+=,显然22P Qe θθρ∂∂==∂∂,所以(4)是全微分方程,取000 , 0ρθ==,根据公式00(,)(,)(,)u P d Q d ρθρθρθρθρρθθ=+⎰⎰ ,有于是全微分方程的通解为2(1)e C θρ+=.9.求一曲线的方程,这曲线通过原点,并且它在点(,)x y 处的切线斜率等于2x y +.9. 2(1)x y e x =--.解:设曲线的方程为()y y x =,由题意知2y x y '=+,0|0x y ==,于是()()222122dx dx x x x x xy e x e dx C e xe dx C e x e C Ce x ---⎛⎫⎰⎰⎡⎤=⋅+=+=-++=-- ⎪⎣⎦⎝⎭⎰⎰由0|0x y ==,得2C =,于是所求曲线的方程为2(1)x y e x =--10.质量为lg (克)的质点受外力作用作直线运动,这外力和时间成正比,和质点运动的速度成反比.在10s t =时,速度等于50cm/s ,外力为24g cm/s ⋅,问从运动开始经过了一分钟后的速度是多少解 :已知t F k v =⋅,并且10t s =时50/v cm s =,4/F g cm s =⋅,故10450k =⋅,从而20k =,因此20t F v =⋅.又由牛顿定律F ma =,即201t dvv dt⋅=⋅,故20vdv tdt =,积分得221102v t C =+,即v ,再代入初始条件得2250C =,因此所求特解为v 60t s =时269.3(/)v cm s ==≈.11.镭的衰变有如下的规律:镭的衰变速度与它的现存量R 成正比.由经验材料得知,镭经过1600年后,只余原始量0R 的一半.试求镭的量R 与时间t 的函数关系. 解: 设比例系数0λ>,则由题意可得dR R dt λ=-⋅.分离变量积分可得dR dt Rλ=-⎰⎰,即1ln R t C λ=-+,从而1()C t R C e C e λ-=⋅=,因为0t =时0R R =,所以0R C =,即0t R R e λ-=⋅.又因为1600t =时02R R =,所以1600002R R e λ-=⋅,从而ln 21600λ=,因此镭的量R 与时间t 的函数关系为ln 20.000433160000t t R R eR e --==,.时间以年为单位.12.设有连结点(0,0)O 和(1,1)A 的一段向上凸的曲线弧OA ,对于OA 上任一点(,)P x y ,曲线弧OP 与直线段OP 所围图形的面积为2x ,求曲线弧OA 的方程.解: 曲线弧OA 的方程为()y y x =,由题意得 两边求导得11()()()222y x y x xy x x '--=,即4yy x'=-, 令y u x =,则 ,y ux =d d ,d d y u u x x x =+上式可化为4dux dx=-,分离变量积分得4ln u x C =-+.将yu x=代入,得 4ln y x x Cx =-+.由于(1,1)A 在曲线上,因此(1)1y =,代入得1C =,从而曲线弧OA 的方程为(14ln )y x x =-,01x <≤;当0x =时0y =.13.设有一质量为m 的质点作直线运动.从速度等于零的时刻起,有一个与运动方向一致、大小与时间成正比(比例系数为1k )的力作用于它,此外还受一与速度成正比(比例系数为2k )的阻力作用.求质点运动的速度与时间的函数关系. 解 由牛顿定律知12dv mk t k v dt =-,即21kk dv v t dt m m+=,因此 由0t =时0v =得122k m C k =,故22211122222kkkt t t m mm k k m k m v e te e k k k -⎛⎫=-+ ⎪⎝⎭,即质点运动的速度与时间的函数关系为211222(1)kt m k k mv t e k k -=--.习题11-31.求下列各微分方程的通解:(1)2290;4d y x dx -= (2);x y xe '''=(3)2(1)2;x y xy '''+= (4)220.1y y y'''-=- 解:(1)原方程变形,得2294d y x dx =,对所给方程接连积分两次,得2198y x C '=+, 31238y x C x C =++ ,这就是所求的通解.(2)对所给方程接连积分三次,得 2123(3)x y x e C x C x C =-+++. 这就是所求的通解.(3)令(),y p x y p ''''==,原方程可化为2(1)2x p xp '+=,即221dp xdx p x =+,积分得21ln ln(1)ln p x C =++,亦即21(1)p C x =+,21(1)y C x '=+,所以就是原方程的通解.(4)令()y p y '=,则dpy p dy ''=,原方程化为2201dp p p dy y -=-,即201dp p p dy y ⎡⎤-=⎢⎥-⎣⎦, 当0p =时,得原方程的一个解为y C =,它不是通解; 当0p ≠时,约去p ,分离变量积分,得2(1)p y C -=,即2(1)dy Cp dx y ==-,从而2(1)y dy Cdx -=,积分得312(1)y C x C -=+,其中13C C =,因此原方程的通解为312(1)y C x C -=+.2.求下列各微分方程满足所给初始条件的特解: (1)111, |||0 ;x x x x y e y y y ===''''''====(2)00| 1 , | 2 ;x x y y y =='''=== (3)2000 , ||0 ;y x x y e y y =='''-=== (4)31110 , | 1 , |0 x x y y y y =='''+===.解:(1)1+C x x y e dx e ''==⎰,由1|0 x y =''=得,1C e =-,即x y e e ''=-,2()+C x x y e e dx e ex '=-=-⎰,由1|0 x y ='=得,20C =,即x y e ex '=-,23()+C 2x x e y e ex dx e x =-=-⎰,由1|0 x y ==得,32eC =-,故222x e ey e x =-- 为 原方程的所求特解 .(2)令()y p y '=,那末 dp y pdy ''=,得dppdy=,即pdp =, 积分得3221122p y C =+,由00 | 1 , |2x x y y =='==得10C =,从而342y p y '==±,又y ''=,可知342y y '=,即342y dy dx -=,积分得14242y x C =+,由0 | 1 x y ==,得24C =,所以4112y x ⎛⎫=+ ⎪⎝⎭为所求特解.(3)令()y p y '=,那末dp y pdy ''=,得20y dpp e dy-=,即2y pdp e dy =,积分得2211122yp e C =+,由000x x y y=='==得112C =-,从而22()1,y y e y ''=-=dx =±y dx -=±,积分得2arcsin y e x C --=±+,由00x y==,得22C π=-,所以sin()cos 2y e x x π-=±+=,原方程特解为lnsec y x =. (4) 令y p '=,则dp y pdy ''=,原方程变为31dpy pdy=-,从而3pdp y dy -=-,积分得2121p C y =+,即2121()y C y'=+,由111,0x x y y =='==得11C =-,从而221()1y y'=-,即y '=dx =±,积分得2x C =±+,再由11x y ==得21C =,因此所求特解为(1)x =±-,即221(1)y x -=-亦即222x y x +=,或y =(舍去y =,因为11x y ==).3.试求y x ''=的经过点(0,1)M 且在此点与直线12xy =+相切的积分曲线. 解:由积分曲线经过点(0,1)M 知,01x y ==,又由积分曲线在点(0,1)M 与直线12x y =+相切知,012x y ='=. 对方程y x ''=积分得,2112y xdx x C '==+⎰,利用条件012x y ='=,从而112C =,即21122y x '=+,再积分得,3262x x y C =++,利用条件01x y==,从而21C =,于是3162x xy =++.4.下列函数组在其定义区间内哪些是线性无关的(1)2cos , ;x x (2)22,5 ;x x (3)22,3;x x e e (4)2sin ,1 ;x (5)cos 2,cos sin ;x x x (6)22,;x x e xe (7)ln ,2ln ;x x (8)1212,().x x e e λλλλ≠ 解:(1)、(4)、(5)、(6)、(8)线性无关.因为:对于定义在区间I 上的两个函数1()y x 与2()y x ,如果1()y x 与2()y x 在区间I 上线性相关,则存在两个不全为0的常数12 , k k ,使得对于∀x I ∈恒有1122()()0k y x k y x +=成立,即12()()y x y x 或21()()y x y x 恒为常数.因而如果12()()y x y x 或21()()y x y x 均不为常数,则称1()y x 与2()y x 在区间I 上一定线性无关.(1)、(4)、(5)、(6)、(8)中的两个函数之比均不为常数,所以这五组函数均线性无关.相反地(2)(3)(7)线性相关.5.验证21x y e -=及62x y e -=都是方程8120y y y '''++=的解,并写出该方程的通解. 解: 因为21x y e -=,22112,4x x y e y e --'''=-=,62x y e -=,66226,36x x y e y e --'''=-=,所以21x y e -=和 62x y e -=都是已知方程的解.由于24162xx x y e e y e--==不为常数,因此1y 与2y 线性无关,所给方程的通解为2612x x y C e C e --=+.6.验证1sin y x =及2cos y x =都是方程0y y ''+=的解,并写出该方程的通解. 解: 因为1sin y x =,11cos ,sin y x y x '''==-,2cos y x =,22sin ,cos y x y x '''=-=-,所以1sin y x =何2cos y x =都是已知方程的解.由于12tan y x y =不为常数,因此1y 与2y 线性无关,所给方程的通解为12sin cos y C x C x =+.7.求下列微分方程的通解:(1)3100;y y y '''--= (2)40;y y '''-= (3)20; y y ''+= (4)8160;y y y '''++=(5)22d d 690;d d x xx t t-+= (6)220y y y '''++=.解:(1)特征方程为23100r r --=,解得122,5r r =-=,故方程的通解2512x x y C e C e -=+.(2)特征方程为240r r -=,特征根为120,4r r ==,故方程的通解为412x y C C e =+.(3)特征方程为220r +=,解得1,2r =,故方程的通解12y C C =+.(4)特征方程为28160r r ++=,特征根为124r r ==-,故方程的通解为412()x y C C x e -=+.(5)特征方程为2690r r -+=,特征根为123r r ==,故方程的通解为312()t x C C t e =+.(6)特征方程为2220r r ++=,特征根为1,221i 21r -±==-±⨯,故方程的通解为12(cos sin )x y e C x C x -=+.8.求下列微分方程满足所给初始条件的特解: (1)00680,|1,|6;x x y y y y y ==''''-+=== (2)00440,|2,|0;x x y y y y y ==''''++=== (3)00340,|0,|5;x x y y y y y ==''''--===- (4)006130,|3,|1x x y y y y y ==''''++===-.解:(1)特征方程为2680r r -+=,特征根为122,4r r ==,故方程的通解为2412x x y C e C e =+代入初始条件00|1,|6x x y y =='==,得12121246C C C C +=⎧⎨+=⎩,解之得1212C C =-⎧⎨=⎩,从而所求特解为242x x y e e =-+.(2)特征方程为24410r r ++=,特征根为121,3r r ==,故方程的通解为312x x y C e C e =+代入初始条件002,0x x y y =='==,得12126310C C C C +=⎧⎨+=⎩,解之得1242C C =⎧⎨=⎩,从而所求特解为342x x y e e =+.(3) 特征方程为2340r r --=,特征根为121,4r r =-=,故方程的通解为412x x y C e C e -=+代入初始条件000,5x x y y =='==-,得1212045C C C C +=⎧⎨-+=-⎩,解之得1211C C =⎧⎨=-⎩, 从而所求特解为4x x y e e -=-(4)特征方程为26130r r ++=,特征根为1,232i r ==-±,故方程的通解为312(cos 2sin 2)x y e C x C x -=+代入初始条件00|3,|1x x y y =='==-,得1123321C C C =⎧⎨-+=-⎩,解之得1234C C =⎧⎨=⎩,从而所求特解为3(3cos 24sin 2)x y e x x -=+.9.写出下列各微分方程的待定特解的形式(不用解出): (1)355;x y y y e '''-+= (2)3;y y '''-=(3)2276(521);x y y y x x e '''-+=-- (4)369(1)x y y y x e '''-+=+.解(1)特征方程为2350r r -+=,解得1,2331i 2122r ±==±⨯. 又因为()5x f x e =,1λ=是特征根,故待定特解的形式为*x y ae =. (2)特征方程为20r r -=,特征根为120,1r r ==.又因为()3f x =,0λ=是特征根,故待定特解的形式为*y ax =. (3)特征方程为2760r r -+=,特征根为1216r r ==.又因为22()(521)x f x x x e =--, 2λ=不是特征根,故待定特解的形式为*22()x y ax bx c e =++.(4) 特征方程为2690r r -+=,特征根为123r r ==.又因为3()(1)x f x x e =+,3λ=是特征根,故待定特解的形式为*23()x y x ax b e =+. 10.求下列各微分方程满足已给初始条件的特解: (1)sin 20, |1, |1;x x y y x y y ππ=='''++=== (2)00325, |1, |2;x x y y y y y ==''''-+=== (3)004, |0, |1;x x x y y xe y y =='''-=== (4)0045, |1, |0x x y y y y ==''''-===.解:(1)特征方程为210r +=,解得1,2i r =±,对应齐次方程的通解为12cos sin y C x C x =+因()sin 2f x x =-,i 2i αβ±=±不是特征根,所以设原方程的特解为*cos 2sin 2y A x B x =+,*()2sin 22cos 2y A x B x '=-+,*()4cos 24sin 2y A x B x ''=--,代入原方程得3cos23sin 2sin 20A x B x x --+=,30 , 310A B -=-+=,即10,3A B ==, *1sin 23y x =.故原方程的通解为又122sin cos cos 23y C x C x x '=-++,代入初始条件1,1x x yy ππ=='==,得112211 1,2313C C C C =-⎧⎪⇒=-=-⎨=+⎪⎩,从而所求特解为11cos sin sin 233y x x x =--+.(2)特征方程为210r +=,解得121,2r r ==,对应齐次方程的通解为 因()5f x =,0λ=不是特征根,所以设原方程的特解为*y A =, 代入原方程 ,得 25A = 即 52A =,*52y =.故原方程的通解为 又2122x x y C e C e '=+,代入初始条件00 |1, |2x x y y =='==,得121212517 5,2222C C C C C C ⎧++=⎪⇒=-=⎨⎪+=⎩, 从而所求特解为275522x x y e e =-++.(3)特征方程为2320r r -+=,解得121,1r r ==-,对应齐次的通解为 而()4x f x xe =-,1λ=是特征方程的单根,故可设原方程的特解为 代入原方程整理得比较系数,得1,1A B ==-,所以*(1)x y x x e =-.故原方程的通解为 将条件00,1x x yy =='==代入,得12121211 , 111C C C C C C +=⎧⇒==-⎨--=-⎩, 从而所求特解为2()x x x y e e x x e -=-+-.(4)特征方程为240r r -=,解得120,4r r ==,对应齐次方程的通解为412x y C C e =+ 因()5f x =,0λ=是特征方程的单根,所以设原方程的特解为*y Ax =,代入原方程 ,得 45A -= 即 54A =-,*54y x =-.故原方程的通解为又42544x y C e '=-,代入初始条件00|1, |0x x y y =='==,得121221115 ,51616404C C C C C +=⎧⎪⇒==⎨-=⎪⎩, 从而所求特解为4115516164x y e x =+-. 11.设函数()x ϕ连续,且满足求()x ϕ.解: 方程两边同时对x 求导,得0()()xx x e t dt ϕϕ'=-⎰,()()x x e x ϕϕ''=-,(0) 1 , (0)1ϕϕ'== 从而 ()()x x x e ϕϕ''+=又该方程对应齐次方程的特征方程为210r +=,特征根为1,2i r =±,故齐次方程的通解为 通过观察易知*12x e ϕ=为方程()()x x x e ϕϕ''+=的一个特解,从而该方程的通解为 将初始条件(0)1,(0)1ϕϕ'==代入,得11221112 1212C C C C ⎧=+⎪⎪⇒==⎨⎪=+⎪⎩, 故总习题十一1.单项选择题:(1)下列微分方程中是线性方程的是( ).(A ) cos()y y e x '+= (B ) 22x xy y x y e '''+-=(C )()250y y '+= (D )sin 8y y x ''+=(2)下列方程中是一阶微分方程的是( ).(A ) 2()20x y yy x ''++= (B ) ()()245750y y y x '''+-+=(C )0xy y y '''++= (D )(4)5cos 0y y x '+-=(3)微分方程20ydy dx -=的通解是( ).(A ) 2y x C -= (B ) 2y x C +=(C )y x C =+ (D )y x C =-+(4)微分方程0y y ''+=满足初始条件001 , 1x x y y =='==的特解是( ).(A ) cos y x = (B ) sin y x =(C )cos sin y x x =+ (D )12cos sin y C x C x =+(5)下列函数是微分方程20y y y '''-+=的解是( ).(A ) 2x x e (B ) 2x x e -(C ) x xe - (D ) x xe解:(1)(B ) ; (2)(A ); (3)(A ); (4)(C ); (5)(D ).2.填空题:(1)以22()1x C y ++=(其中C 为任意常数)为通解的微分方程为22(1)1y y '+=. (2)以212x x y C e C e =+(其中1C 、2C 为任意常数)为通解的二阶常系数齐次线性微分方程为320y y y '''-+=.(3)微分方程x y y e -'=的通解为y x e e C =+.(4)方程cot 2sin y y x x x '-=的通解为2()sin y x C x =+.(5) 设方程()()()y p x y q x y f x '''++=的三个特解是2123 ,,x x y x y e y e ===,则此方程的通解为2212()()x x x y C x e C x e e =-+-+.3.求下列微分方程的通解:(1)2(12)(1)0y xdx x dy +++=; (2)x y y x +'=-; (3)d d 2(ln )y y x y x =- ; (4)5d d y y xy x-=; (5)20y y y '''+-=; (6)22x y y y e '''+-= ;(7)sin y y x ''+=; (8)25sin 2y y y x '''++=.解:(1)分离变量积分,得 21121x dy dx y x=-++⎰⎰, 即 ()2ln 12ln(1)ln y x C +=-++,亦即 2(1)(12)x y C ++=故原方程所求通解为 2(1)(12)x y C ++=.(2) 原方程变形为11y y x'+=-,这是一阶线性方程,其通解为 即原方程通解为22xy x C +=.(3)原方程变形为d 22ln d x y x y y y+=,这是一阶线性方程,其通解为 即原方程通解为21ln 2x Cy y -=+-. (4)这是5n =的伯努利方程. 方程两端同除以5y ,得54dy y y x dx ---=,令4z y -=,便有44dz z x dx+=-,此方程为一阶非齐次线性方程,其通解为 将4z y -=代入,得原方程的通解为4414x y Ce x --=-+. (5)特征方程为220r r +-=,解得122,1r r =-=,故方程的通解、212x x y C e C e -=+.(6)特征方程为2210r r +-=,解得1211,2r r =-=,对应齐次的通解为 而()2x f x e =,1λ=不是特征方程的根,故可设原方程的特解为代入原方程整理得 1A =,所以*x y e = 故原方程的通解为212x x x y C e C e e -=++.(7)特征方程为210r +=,解得1,2i r =±,对应齐次方程的通解为因()sin f x x =,i i αβ±=±是特征根,所以设原方程的特解为()*cos sin y x A x B x =+,又 ()*()sin cos cos sin y x A x B x A x B x '=-+++,()*()2(cos sin )cos sin y B x A x x A x B x ''=--+,代入原方程,得()()2(cos sin )cos sin cos sin sin B x A x x A x B x x A x B x x --+++=,21, 20A B -==, 即1,02A B =-=, *1cos 2y x x =-.故原方程的通解为 (8)25sin 2y y y x '''++=其特征方程为2250r r ++=,特征根为1,212r i =-±,从而其对应齐次方程的通解为12(cos 2sin 2)x y e C x C x -=+.又()sin 2f x x =,i 2i αβ±=±不是特征根,所以设原方程的特解为*cos 2sin 2y A x B x =+,*()2sin 22cos 2y A x B x '=-+,*()4cos 24sin 2y A x B x ''=--,代入原方程得()()4cos24sin 2sin 2A B x B A x x ++-=,4041 , 411717A B A B B A +=⎧⇒=-=⎨-=⎩,所以*41cos 2sin 21717y x x =-+. 故原方程的通解为1241(cos 2sin 2)cos 2sin 21717x y e C x C x x x -=+-+. 4.求下列微分方程满足所给初始条件的特解:(1)222(3+2)d (2)d 0 , 1x xy y x x xy y x -+-==时1y =;(2)2cos , 0y y y x x '''++==时30 , 2y y '==.解:(1)222(,)3+2 ,(,)2P x y x xy y Q x y x xy =-=-,于是有22P Q x y y x∂∂=-=∂∂,所以方程(1)是全微分方程.因为 所以方程(1)的通解为322x x y xy C +-=,又1x =时,1y =,从而1C =于是原方程的特解为3221x x y xy +-=.(2)特征方程为2210r r ++=,解得121r r ==-,对应齐次方程的通解为因()cos f x x =,i i αβ±=±不是特征根,所以设原方程的特解为*cos sin y A x B x =+,又 *()sin cos y A x B x '=-+,()*()cos sin y A x B x ''=-+,代入原方程,得()cos sin A x B x -+2sin 2cos A x B x -++cos sin cos A x B x x +=,20, 21A B -==, 即10,2A B ==, *1sin 2y x =.故原方程的通解为1sin 2x y xe x -=+ 由条件0x =时30 , 2y y '==,得210 1322C C =⎧⎪⇒⎨+=⎪⎩121,0C C == 所以原方程的特解为1sin 2x y xe x -=+. 5.已知某曲线经过点(1,1),它的切线在纵轴上的截距等于切点的横坐标,求它的方程.解:设曲线的方程为()y y x =,其上任一点(,)x y 处的切线方程为()Y y y X x '-=-,切线在纵轴上的截距为y xy '-,由题意有y xy x '-=,即1y y x'-=-,其通解为 又因为曲线过点(1,1) ,所以1C =,从而所求曲线方程为(1ln )y x x =-.6.设可导函数()x ϕ满足求()x ϕ.解:方程两边同时对x 求导得即()cos ()sin 1x x x x ϕϕ'+=,亦即()tan ()sec x x x x ϕϕ'+=,其通解为在0()cos 2()sin 1xx x t tdt x ϕϕ+=+⎰中,令0x =得(0)1ϕ=,故 因此()cos sin x x x ϕ=+.7.一链条挂在一钉子上,起动时一端离开钉子8m,另一端离开钉子12m ,分别在以下两种情况下求链条滑下来所需要的时间:(1)若不计钉子对链条产生的摩擦力;(2)若摩擦力为1m 长的链条的重量.解: (1) 设在时刻t 时,较长的一段链条垂下 m x ,且设链条的密度为ρ,则向下拉链条的作用力由牛顿第二定律可知202(10)x g x ρρ''=-,即 10g x x g ''-=- 该方程对应的齐次方程的特征方程为2010g r -=,特征根为1,2r =程的通解为通过观察知*10x =为非齐次方程10g x x g ''-=-的一个特解,因而原方程的通解为又12x e '=且(0)12,(0)0x x '==,可得1212122 10C C C C C C +=⎧⇒==⎨-+=⎩,因此10x e=++;当20x =,即链条全部滑下来,有10e =+,解得所需时间t =+(秒). (2) 此时向下拉链条的作用力变为(20)1(221)F x g x g g g x ρρρρ=---⋅=-.由牛顿第二定律可知20(221)x g x ρρ''=-,即 1.0510g x x g ''-=-.类似于(1)中解法可得此方程通解为 1210.5t t x C e C =++由初始条件得1234C C ==,因而所求特解为 3310.544x e =++当20x =时有39.54e ⎛⎫=+ ⎪ ⎪⎝⎭,解之得所需时间为193t +=(秒).。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第十一章标准模板库(STL)习题一. 基本概念与基础知识自测题11.1填空题11.1.1 STL大量使用继承和虚函数是(1)(填对或错)。

因为(2)。

答案:(1)错(2)它使用的是模板技术,追求的是运行的效率,避免了虚函数的开销11.1.2 有两种STL容器:(1)和(2)。

STL不用new和delete,而用(3)实现各种控制内存分配和释放的方法。

答案:(1)第一类容器(2)近容器(3)分配子(allocator)11.1.3 五种主要迭代子类型为(1)、(2)、(3)、(4)和(5)。

STL算法用(6)间接操作容器元素。

sort算法要求用(7)迭代子。

答案:(1)输入(InputIterator)(2)输出(OutputIterator)(3)正向(ForwardIterator)(4)双向(BidirectionalIterator)(5)随机访问(RandomAccessIterator)(6)迭代子(7)随机访问(RandomAccessIterator)11.1.4 三种STL容器适配器是(1)、(2)和(3)。

答案:(1)stack(栈)(2)queue(队列)(3)priority_queue(优先级队列)11.1.5 成员函数end()得到容器(1)的位置,而rend得到容器(2)的位置。

算法通常返回(3)。

答案:(1)最后一个元素的后继位置(2)引用容器第一个元素的前导位置。

实际上这是该容器前后反转之后的end()(3)迭代子11.1.6 适配器是(1),它依附于一个(2)容器上,它没有自己的(3)函数和(4)函数,而借用其实现类的对应函数。

答案:(1)不独立的(2)顺序(3)构造函数(4)析构函数11.1.7 返回布尔值的函数对象称为(1),默认的是(2)操作符。

答案:(1)谓词(predicate)(2)小于比较操作符“<”11.1.8C++标准库中给出的泛型算法包括(1)种算法。

主要包括以下几类:(2)、(3)、(4),每一类都有十种以上算法。

答案:(1)70余(2)查找算法(3)排序(sorting)和通用整序(ordering)算法(4)删除和代替算法11.2简答题11.2.1简述STL中迭代子与C++指针的关系与异同点。

答:迭代子包含内存地址的获得,是面向对象版本的指针。

迭代子与指针有许多相同之处,但迭代子保存所操作的特定容器需要的状态信息,从而实现与每种容器类型相适应的迭代子。

而且有些迭代子操作在所有容器中是一致的,这带来了很大的方便。

如++运算符总是返回容器下一个元素的迭代子,就像数组指针++后指向下一个元素;间接引用符“*”,总是表示迭代子指向的容器元素,就像数组指针加*号后代表指针所指的元素。

迭代子在STL中起粘结剂的作用,用来将STL的各部分结合在一起。

从本质上说,STL 提供的所有算法都是模板,我们可以通过使用自己指定的迭代子来对这些模板实例化。

迭代子可以包括指针,但迭代子又不仅是一个指针。

11.2.2顺序容器包括哪三种?它们各以什么数据结构为基础?各有哪些特点?答:C++标准模板库提供三种顺序容器:vector,list和deque。

vector类和deque 类是以数组为基础的,list类是以双向链表为基础的。

矢量(vector)类提供了具有连续内存地址的数据结构。

它和C/C++的数组一样通过下标运算符[ ]直接有效地访问矢量的任何元素。

与数组不同,vector的内存用尽时,vector自动分配更大的连续内存区,将原先的元素复制到新的内存区,并释放旧的内存区。

内存分配由分配子(allocator)完成。

矢量可以用来实现队列、堆栈、列表和其他更复杂的结构。

vector支持随机访问迭代子,具有最强的功能。

vector的迭代子通常实现为vector元素的指针。

列表(list)是由双向链表(doubly linked list)组成的。

支持的迭代子类型为双向迭代子。

双端队列(deque)(double-ended queue)类。

双端队列允许在队列的两端进行操作。

它是以顺序表为基础的,所以它能利用下标提供有效的索引访问,它支持随机访问迭代子。

它放松了访问的限制,对象既可从队首进队,也可以从队尾进队,同样也可从任一端出队。

而且除了可从队首和队尾移走对象外,也支持通过使用下标操作符“[ ]”进行访问。

当要增加双端队列的存储空间时,可以在内存块中对deque两端分别进行分配。

并且新分配的存储空间保存为指向这些块的指针数组,这样双端队列可以利用不连续内存空间。

因此它的迭代子比vector的迭代子更加智能化。

为双端队列分配的存储块,往往要等删除双端队列时才释放,它比重复分配(再分配和释放)更有效,但也更浪费内存。

使用双端队列容器类来实现矢量容器类所能实现的各种数据结构要更灵活,方便。

11.2.3关联容器有哪四种?简单介绍它们是怎样组成的?各有什么特点?答:四个关联容器为:集合(set),多重集合(multiset),映射(map)和多重映射(multimap)。

集合和多重集合类提供了控制数值集合的操作,其中数值是关键字,即不必另有一组值与每个关键字相关联。

集合与多重集合类的主要差别在于多重集合允许重复的关键字(key),而集合不允许重复的关键字。

集合和多重集合通常实现为红黑二叉排序树。

元素的顺序由比较器函数对象(comparator function object)确定。

如对整型multiset,只要用比较器函数对象less<int>排序关键字,元素即可按升序排列。

映射和多重映射类提供了操作与关键字相关联的映射值(mapped value)的方法。

映射和多重映射的主要差别在于多重映射允许存放与映射值相关联的重复关键字,而映射只允许存放与映射值一一对应的单一关键字。

多重集合关联容器用于快速存储和读取关键字。

多重映射和映射关联容器类用于快速存储和读取关键字与相关值(关键字/数值对,key/value pair)。

11.2.4什么是函数对象?它通常用在什么地方?答:函数对象是一个类,它重载了函数调用操作符(operator())。

该操作符封装了应该被实现为一个函数的操作。

典型情况下,函数对象被作为实参传递给泛型算法,以完全解决类型依赖性的问题。

和“引用”一样,“函数对象”很少独立使用。

函数对象与函数指针相比较有三个优点:第一,函数指针是间接引用,不能作为内联函数,而函数对象可以,这样速度更快;第二,类有数据域,函数对象可以拥有任意数量的额外数据,用这些数据可以用来缓冲当前数据和结果,提高运行质量;第三,编译时对函数对象作类型检查。

11.2.5泛型算法函数名加有后缀_if是什么意思?而加有后缀_copy又代表什么意思?答:_if 表示函数采用的操作是在元素上(满足给定谓词),而不是对元素的值本身进行操作。

如find_if算法表示:在容器指定范围中查找一些特征满足函数指定条件的(满足给定谓词)元素,也就是使某一函数对象返回值第一次为真的元素。

例如;小于特定值的第一个元素。

而find查找含特定值的第一个元素。

_copy 表示算法不仅操作元素的值,而且还把修改的值复制到一个目标范围中。

如reverser 算法颠倒范围中元素的排列顺序,而reverse_copy算法同时把结果复制到目标范围中。

二.编程题与综合练习题11.3编程测试顺序容器矢量(vector)的主要功能和使用方法。

(参考附录C,下同)解:#include<algorithm>#include<vector>#include<iostream>#include<functional>using namespace std;int main(){ostream_iterator<int>output(cout," ");//用输出迭代子output来输出,其中第二参数" "表示用空格分隔各个整数。

int ia[18]={47,29,5,37,13,23,11,61,7,31,41,2,59,19,17,53,43,3};vector<int> vec(ia,ia+9); //数据填入vector;vector共有7个构造函数,常用3个//vector(),用以声明空的vector;vector(n),用以声明有n个元素的vector;//vector(first,last),用以声明一个vector,//其元素的初值是从区间[first,last)所指定的序列中的元素复制而来的;vector<int> vec2(18);if(vec.empty()) cout<<"vector空"<<endl;else{cout<<"vector不空,"<<"vector中的元素:"<<endl;unique_copy(vec.begin(),vec.end(),output);cout<<endl;}cout<<"当前分配元素空间数量:"<<vec.capacity()<<endl;vec.reserve(12);cout<<"当前为vector保留的最小分配元素空间数量:"<<vec.capacity()<<endl; vec.erase(vec.begin(),vec.end());cout<<"当前分配元素空间数量:"<<vec.capacity()<<endl;vec.resize(10);cout<<"当前重新分配元素空间数量为10,实际分配元素空间数量:"<<vec.capacity()<<endl;vec.assign(ia+10,ia+16);cout<<"vector存放序列容许最大长度:"<<vec.max_size()<<endl;cout<<"vector中的元素:"<<endl;unique_copy(vec.begin(),vec.end(),output);cout<<endl;vec.assign(ia,ia+18);cout<<"vector中的元素:"<<endl;unique_copy(vec.begin(),vec.end(),output);cout<<endl;sort(vec.begin(),vec.end(),greater<int>());//降序排列cout<<"vector中的元素:"<<endl;unique_copy(vec.begin(),vec.end(),output);cout<<endl;cout<<"用反转迭代子输出vector中的元素:"<<endl;unique_copy(vec.rbegin(),vec.rend(),output);cout<<endl;cout<<"第1个元素:"<<vec.front()<<endl;cout<<"最后1个元素:"<<vec.back()<<endl;cout<<"第8个元素:"<<vec[6]<<endl;cout<<"原vector2中的元素:"<<endl;unique_copy(vec2.begin(),vec2.end(),output);cout<<endl;vec2.swap(vec);cout<<"交换后vector2中的元素:"<<endl;unique_copy(vec2.begin(),vec2.end(),output);cout<<endl;return 0;}11.4编程测试顺序容器列表(list)的主要功能和使用方法。

相关文档
最新文档