C++第5章习题解答

合集下载

第5章 相平衡习题解答

第5章 相平衡习题解答
解:(1)由表中的数据,绘制水(A) -醋酸(B)系统的温度-组成图如下:
⑵ 图中,组成为 xB=0.800 的液相的泡点: t 110.2 C ; ⑶ 图中,组成为 yB =0.800 的气相的露点: t 112.8 C ; ⑷ 求 105℃时气-液平衡两相的组成: xB 0.417 , yB 0.544 ;
xB
1
xA
0.541
p pA pB 54.22 0.459 136.12 0.541 98.53kPa
yA
pA pA pB
54.22 0.541
0.2526
54.22 0.459 136.12 0.541
yB
pB pA pB
136.12 0.459
0.7474
54.22 0.459 136.12 0.541
答: ⑴ p=98.54kPa,yB=0.7476;⑵ p=80.40kPa,xB=0.3197; ⑶ yB=0.6825,xB=0.4613,nB(l)=1.709mol,nB(g)=3.022mol 5-7 在 101.325kPa 下,水(A) -醋酸(B)系统的气-液平衡数据如下:
t/℃
100
100 92 0.45
2.415
mB (2.415 100 / 92) 18 23.91kg
第五章 相平衡习题解答
5-1 指出下列平衡系统中的物种数 S、组分数 C、相数 P 和自由度数 f。 ⑴ C2H5OH 与水的溶液; ⑵ I2(s)与 I2(g)成平衡; ⑶ NH4HS(s)与任意量的 H2S(g)及 NH3(g)达到平衡; ⑷ NH4HS(s)放入抽空的容器中分解达平衡; ⑸ CaCO3(s)与其分解产物 CaO(s)和 CO2(g)成平衡; ⑹ CHCl3 溶于水中、水溶于 CHCl3 中的部分互溶系统及其蒸气达到相平衡。 解:(1)物种数 S=2,组分数 C=2、相数 P=1,自由度数 f=C-P+2=3;

C语言1-5章复习题及参考答案

C语言1-5章复习题及参考答案

一.选择题1、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是()。

A .-3 B.9 C.-12 D.62、若有定义:int a=8, b=5, c; 执行语句 c=a/b+0.4; 后,c的值为()。

A .1.4 B.1 C.2.0 D.23、有如下程序:void main(){int i,sum;for(i=1;i<=3;sum++)sum+=i;printf("%d\n",sum);}该程序的执行结果是()。

A .6 B.3 C.死循环 D.04、下列关于表达式的描述中,错误的是()。

A . 常量和变量都是表达式。

B. 运算符类型对应表达式的类型。

C. 每一个表达式都有自己的值。

D. 表达式必须以分号结尾。

5、C语言中,合法的长整型常数是()。

A . '\t' B.” A” C.65 D.a6、若已定义 x 和 y为double 类型,则表达式 x=1;y=(x+3)/2 的值是()。

A .1 B.2 C.2.00000 D.2.500007、表达式:10!=9的值是()。

A . true B. 非零值 C.0 D.18、以下程序的输出结果是()。

#include<stdio.h>void main(){printf("%d\n", NULL);}A . 不确定的 B.0 C.-1 D.19、请选出合法的C语言赋值语句。

()A . a=b=58 B.i++; C. a=58,b=58 D. k=int(a+b);10、假设 int b=2; 表达式(b>>2)/(b>>1)的值是()。

A .0 B.2 C.4 D.811、关于语句printf(“hello world\n”);,下列描述中错误的是()。

A . printf()是格式化输出函数,用于输出信息。

B. printf()括号中的内容为函数的参数。

第5章习题解答

第5章习题解答

第5章汇编语言程序设计习题参考答案1.(1) BUFF DB 240 DUP(?)(2) xx DB “BYTE”,”WORD”2.:0000H,则内存分配如下:V AR1V AR2V AR3V AR4V AR53.(1) 段的类型:段的类型有4种,分别是代码段、数据段、堆栈段和附加段。

(2) 段的定义:定义段使用伪指令SEGMENT/ENDS来定义的。

即:段名SEGMENT [定位类型] [组合类型] […类别‟]……段名ENDS(3) 选项的作用和含义:定位类型:告诉汇编程序如何确定逻辑段的边界在存储器的位置,共有4种。

①BYTE:表示逻辑段从字节的边界开始,即本段的起始地址紧接前一段。

②WORD:表示逻辑段从字的边界开始,即本段的起始地址必须是偶数。

③PARA:表示逻辑段从节的边界开始,即本段的起始地址后4位为0。

④PAGE:表示逻辑段从节的边界开始,即本段的起始地址后8位为0。

组合类型:告诉汇编程序当装入存储器时各个逻辑段如何进行组合,共有6种。

①不组合:如果缺省,则不组合。

② PUBLIC:对于不同逻辑段只要有相同段名就把他们集中成一段装入内存。

③ STACK:同PUBLIC相同,但仅限于堆栈段。

④ COMMON:对于不同逻辑段若有相同的段名,则都从同一地址装入。

⑤ MENORY:表示在几个逻辑段连接时,本段定位在地址最高的地方。

⑥ AT 表达式:表示以表达式的值来定位段地址。

‘类别’:在连接时决定各逻辑段的装入顺序。

4. 假设程序中有4个不同类型的段,则名为initprogram宏指令的宏定义如下:initprogram MACRO csname,dsname,esname,ssnameASSUME CS:csname,DS:dsname,ES:esname,SS:ssnameSTART: MOV AX,dsnameMOV DS,AXMOV AX,esnameMOV ES,AXMOV AX,ssnameMOV SS,AXENDM5.假设需传送的数据块为字节数据块,则名为Datastranaction宏指令的宏定义如下:Datastranaction MACRO buffer1,buffer2,lengthLEA SI,buffer1LEA DI,buffer2MOV CX,lengthCLDREP MOVSBENDM6.有效地指令为:(2)、(5)、(9)无效的指令为:(1) 数据类型不一致(3) 两个操作数不能同时为存储器操作数(4) CS不能作为目的操作数(6) 不能用两个变址寄存器作有效地址分量(7) 一个操作数不能是两个变量名的表达式(8) 基址和变址只能相加不能相减(10) 目的操作数不能是立即数(11) 在有效地址中不能减基址或变址严格地说:(9)也不对,因为没有指出存储器的数据类型,即操作数类型不明确。

第5章思考题和习题解答

第5章思考题和习题解答

第五章 电气设备的选择5-1 电气设备选择的一般原则是什么?答:电气设备的选择应遵循以下3项原则:(1) 按工作环境及正常工作条件选择电气设备a 根据电气装置所处的位置,使用环境和工作条件,选择电气设备型号;b 按工作电压选择电气设备的额定电压;c 按最大负荷电流选择电气设备和额定电流。

(2) 按短路条件校验电气设备的动稳定和热稳定 (3) 开关电器断流能力校验5-2 高压断路器如何选择? 答:(1)根据使用环境和安装条件来选择设备的型号。

(2)在正常条件下,按电气设备的额定电压应不低于其所在线路的额定电压选择额定电压,电气设备的额定电流应不小于实际通过它的最大负荷电流选择额定电流。

(3)动稳定校验(3)max shi i ≥ 式中,(3)sh i 为冲击电流有效值,max i 为电气设备的额定峰值电流。

(4)热稳定校验2(3)2th th ima I t I t ∞≥式中,th I 为电气设备在th t 内允许通过的短时耐热电流有效值;th t 为电气设备的短时耐热时间。

(5)开关电器流能力校验对具有分断能力的高压开关设备需校验其分断能力。

设备的额定短路分断电流不小于安装地点最大三相短路电流,即(3).max cs K I I ≥5-3跌落式熔断器如何校验其断流能力?答:跌落式熔断器需校验分断能力上下限值,应使被保护线路的三相短路的冲击电流小于其上限值,而两相短路电流大于其下限值。

5-4电压互感器为什么不校验动稳定,而电流互感器却要校验?答:电压互感器的一、二次侧均有熔断器保护,所以不需要校验短路动稳定和热稳定。

而电流互感器没有。

5-5 电流互感器按哪些条件选择?变比又如何选择?二次绕组的负荷怎样计算? 答:(1)电流互感器按型号、额定电压、变比、准确度选择。

( 2)电流互感器一次侧额定电流有20,30,40,50,75,100,150,200,400,600,800,1000,1200,1500,2000(A )等多种规格,二次侧额定电流均为5A ,一般情况下,计量用的电流互感器变比的选择应使其一次额定电流不小于线路中的计算电流。

第5章 相平衡习题解答

第5章 相平衡习题解答
T 5216 357.1, t T 273.15 83.94C 14.61
5-5 根据下面给出的 I2 的数据,绘制相图。(已知: s l )
三相点
临界点
熔点
t/℃
113
512
114
p/kPa
12.159
11754
101.325
解:碘的相图如下:
答:t=84℃
沸点 184 101.325
解:(1)由表中的数据,绘制水(A) -醋酸(B)系统的温度-组成图如下:
⑵ 图中,组成为 xB=0.800 的液相的泡点: t 110.2 C ; ⑶ 图中,组成为 yB =0.800 的气相的露点: t 112.8 C ; ⑷ 求 105℃时气-液平衡两相的组成: xB 0.417 , yB 0.544 ;
答:⑴ S=2,C=2,P=1,f=2; ⑵ S=1,C=1,P=2,f=1; ⑶ S=3,C=3,P=2,f=2; ⑷ S=3,C=1,P=2,f=1; ⑸ S=3,C=2,P=2,f=2; ⑹ S=2,C=2,P=3,f=1
5-2 试求下列平衡系统的组分数 C 和自由度数 f 各是多少? ⑴ 过量的 MgCO3(s)在密闭抽空容器中,温度一定时,分解为 MgO(s)和 CO2(g); ⑵ H2O(g)分解为 H2(g) 和 O2(g); ⑶ 将 SO3(g)加热到部分分解; ⑷ 将 SO3(g)和 O2(g)的混合气体加热到部分 SO3(g)分解。 解:(1)物种数 S=3,组分数 C=2、相数 P=3,自由度数 f*=C-P+1=0;
所以,压力降到 98.53kPa 时,开始产生气相,此气相的组成 yB=0.7474;
(2)当气相组成: yB 0.541时,
yB

编译原理 第5章习题解答

编译原理 第5章习题解答

第五章习题解答5.1 设一NDPDA识别由下述CFG定义的语言,试给出这个NDPDA的完整形式描述。

S→SASCS→εA→AaA→bC→DcDD→d5.2 消除下列文法的左递归:① G[A]:A→BX∣CZ∣WB→Ab∣BcC→Ax∣By∣Cp② G[E]:E→ET+∣ET–∣TT→TF*∣TF/FF→(E)∣i③ G[X]:X→Ya∣Zb∣cY→ Zd∣Xe∣fZ→X e∣Yf∣a④ G[A]:A→Ba|Aa|cB→Bb|Ab|d5.3 设文法G[<语句>]:<语句>→<变量>: = <表达式>|if<表达式>then<语句>|if<表达式>then<语句>else<语句> <变量>→i<表达式>→<项>|<表达式>+<项><项>→<因子>|<项>*<因子><因子>→<变量>|′(′<表达式>′)′试构造该文法的递归下降子程序。

5.4 设文法G[E]:E→ TE'E'→ + E∣εT→ FT'T'→ T∣εF→ PF'F'→ *F∣εP→ (E)∣ a∣^①构造该文法的递归下降分析程序;②求该文法的每一个非终结符的FIRST集合和FOLLOW集合;③构造该文法的LL(1)分析表,并判断此文法是否为LL(1)文法。

5.5 设文法G[S]:S→ SbA∣aAB→ SbA→ Bc①将此文法改写为LL(1)文法;②求文法的每一个非终结符的FIRST集合和FOLLOW集合;③构造相应的LL(1)分析表。

5.6 设文法G[S]:S→ aABbcd∣εA→ ASd∣εB→ SAh∣eC∣εC→ Sf∣Cg∣εD→ aBD∣ε①求每一个非终结符的FOLLOW集合;②对每一个非终结符的产生式选择,构造FIRST集合;③该文法是LL(1)文法。

电工技术习题答案第5、6章 习题

电工技术习题答案第5、6章 习题

第5章 习题解答5.1 在图5.1所示电路中,12100V,1,99,10F E R R C μ==Ω=Ω=,试求:(1)S 闭合瞬间,各支路电流及各元件端电压的值;(2)S 闭合后到达稳定状态时中各电流和电压的值;(3)当用电感元件L =1H 替换电容元件后再求(1),(2)两种情况下各支路的电流及各元件端电压的值。

解:(1)S 闭合瞬间,由于电容C 的电荷0)0(,0C 0==-u q ,所以0)0()0(C C ==-+u u ,即C 可视为短路,2R 被短接,20i =。

此时(2)S 闭合后,电路达到稳定状态时,由于E 为直流电动势,所以C 视为开路,则10i =1R 11A 11V u iR ==⨯Ω=2C R 21A 9999V u u iR ===⨯Ω=(3)当用电感元件替换电容元件后,S 闭合瞬间,由于S 闭合前电感中电流为零,即L (0)0i -=,且电感元件中电流不能跃变,所以L L 1(0)(0)0i i i +-===电感在S 闭合瞬间L 视为开路,所以此时212100V1A 199E i i R R ====+Ω+Ω1R 11A 11V u iR ==⨯Ω=2R 21A 9999V u iR ==⨯Ω=11100V100A 1E i i R ====Ω2R C (0)0u u +==212100V1A199E i i R R ====+Ω+Ω1R 1100A 1100Vu iR ==⨯Ω=22L R 99V u u ==S 闭合后,且电路达到稳定状态时,在直流电动势E 作用下,电感元件L 视为短路,则2R 被短路。

所以,11100V 100A 1E i i R ====Ω 20i = 2L R 0u u ==1R 1100A 1100V u iR ==⨯Ω=5.2 在图5.2所示电路中,已知126V,6A ,3E I R R ====Ω。

当电路稳定后,在t =0时将两个开关同时闭合。

第5章 循环结构程序设计习题解答

第5章 循环结构程序设计习题解答

第5章循环结构程序设计习题解答1.输入n个整数,求这n个数之中的偶数平均值,并输出。

#include<stdio.h>void main(){int n,i,x,k=0,s=0;printf("Input a number(n):");scanf("%d",&n);printf("Input %d numbers:",n);for(i=0;i<n;i++){scanf("%d",&x);if(x%2==0){s+=x;k++;}}s/=k;printf("average=%d\n",s);}2.输入一串字符,直到输入一个星号*为止,统计(输出)其中字母个数和数字字符个数。

#include<stdio.h>void main(){int n=0,m=0;char c;printf("Input a string character:");do{scanf("%c",&c);if(c>='0'&&c<='9')n++;else if(c>='A'&&c<='Z'||c>='a'&&c<='z')m++;}while(c!='*');printf("number_char=%d\n",n);printf("letter_char=%d\n",m);}3.从键盘输入一正整数n,计算该数各位数字之和并输出。

例如,输入数是5246,则计算5+2+4+6=17并输出。

#include<stdio.h>void main(){int n,r,m=0,s=0;printf("Input a number(int):");scanf("%d",&n);do{r=n%10;s=s+r;n/=10;if(m==0)printf("%d",r);//加式中的第1项不带“+”elseprintf("+%d",r);m++;}while(n>0);printf("=%d\n",s);}4.输入一个字符串,将其中的大写字母改为小写字母,小写字母改为大写字母,然后输出。

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

(3)较低各维 (4)最高维 5.1.5 指针变量保存了另一变量的 (1)值,不可以任意给指针变量赋一 个地址值,只能赋给它 (2) 和 (3) 的地址。使用变量名来访问 变量,是按 (4) 来直接存取变量称为 (5) 方式;而借助指针变 量取得另一变量的地址,访问该变量称为 (6) 方式。 答案:(1)地址 (2)NULL (3)已经分配了内存的变量的地址 (4)按变量的地址 (5)直接访问 (6)间接访问 5.1.6 固定指向一个对象的指针,称为 (1) ,即 (2) ,定义时const放 在 (3) 。而指向“常量”的指针称为 (4) ,指针本身可以指向别 的对象,但 (5) ,定义时const放在 (6) 。 答案:(1)指针常量 (2)指针本身是常量 (3)const放在类型说明之后,变量名之前 (4)常量指针 (5)不能通过该指针修改对象 (6)const放在类型说明之前 5.1.7 数组名在表达式中被自动转换为指向 (1) 的指针常量,数组名是 地址,但数组名中放的地址是 (2) ,所以数组名 (3) 。这样数 组名可以由 (4) 来代替,C++这样做使用时十分方便,但丢失了 数组的另一要素 (5) ,数组名是指向数组 (6) 的指针,而不是 指向数组 (7)的。编译器按数组定义的大小分配内存,但运行时 对 (8) 不加检测,这会带来无法预知的严重错误。 答案:(1)数组第一个元素 (2)不可改变的 (3)称指针常量 (4)指针 (5)数组元素的数量 (6)元素 (7)整体
return 0; } 5.4 将[例5.5]改用一维数组,附加行、列参数,实现通用算法。 解:用一维数组,附加行、列参数,实现通用算法难度大。 #include <iostream> #include <iomanip> using namespace std; void inverse(int [], int [],int,int);//注意数组最高维可缺省,例5.5因初学未 省 void multi(int [], int [], int [],int,int,int); void output(int [],int,int); int main(){ int middle[6*3], result[6*4];//注意写作6*3等可清楚看出矩阵的行列 int matrix1[3*6]={8,10,12,23,1,3,5,7,9,2,4,6,34,45,56,2,4,6}; int matrix2[3*4]={3,2,1,0,-1,-2,9,8,7,6,5,4}; output(matrix1,3,6); inverse(matrix1,middle,3,6); output(middle,6,3); output(matrix2,3,4); multi(middle,matrix2,result,6,3,4); output(result,6,4); return 0; } void inverse(int matrix1_1[],int middle_1[],int a,int b){ int i,j; for (i=0;i<a;i++) for (j=0;j<b;j++) middle_1[i+j*a]=matrix1_1[i*b+j]; return; } void multi(int middle_1[],int matrix2_1[],int result_1[],int a,int b,int c){ int i,j,k; for (i=0;i<a;i++){ for (j=0;j<c;j++){ result_1[i*c+j] = 0; for (k=0;k<b;k++)
答:最佳方法是用函数模板,多维数组用模板类型参数传递,各维的大 小作为参数传递。也可以用一维数组加各维的大小都作为参数传递。 5.2.5 解释运算符“*”和“&”的作用,运算符“.”和“->”的作用。 答:在应用指针变量时,“*”是间接引用(dereference)运算符,作用于 一个指针类型的变量,访问该指针所指向的内存数据。因结果是内存中 可寻址的数据。“&”是取地址运算符,作用于内存中一个可寻址的数据 (如:变量,对象和数组元素等等),操作的结果是获得该数据的地 址。 运算符“.”和“->”是成员访问运算符(Member Access Oprator)。在对 象或结构外部去访问公有的数据成员或函数成员时,是在对象名后 加“.”(点操作符),再加成员函数名或函数名就可以了。但是这些成员 必须是公有的成员,只有公有成员才能在对象的外面对它进行访问。当 用指向对象和结构变量的指针访问其公有成员时,则只要在指针变量名 后加 “->” (箭头操作符),再加公有成员名就可以了。 5.2.6 什么是this指针?简述它的作用。 答:当我们在对象的外部访问该对象的公有成员时,必须指明是哪一个 对象。但是当我们用对象的成员函数来访问本对象的成员时,在成员函 数中只要给出成员名就可以实现对该对象成员的访问。但同一个类创建 的多个对象共用同一份成员函数的拷贝。既然是同一份拷贝,那么成员 函数又怎么知道是取哪一个对象的成员数据呢?其实每一个对象有一个 隐藏的this指针,它始终指向该对象,并将该指针作为一个参数自动传 递给该成员函数。这就是说,成员操作符总是要使用的,只不过在对象 内是隐式的,即在对象内省略了this指针。 5.2.7 指针变量与整型量的加减运算代表什么意义? 答:指针变量与整型量的加减表示移动指针,以指向当前目标前面或后 面的若干个位置的目标。指针与整型量i的加减等于指针值(地址)与 i*sizeof(目标类型)积的加减,得出新的地址。 5.2.8 设a为数组名,那么a++是否合法?为什么? 答:非法。因为a是指针常量。 5.2.9 指针作为函数的参数时,它传递的是什么?实参要用什么?而使 用引用时实参要用什么?何时只能用指针而不能用引用? 答:是地址,是指针所指向的变量或对象的内存首地址,在物理上讲我
二、编程与综合练习题
5.3 打印杨辉三角形(10行)。使用二维数组并利用每个系数等于其肩 上两系数之和。 解:好的算法无特例,二维数组共用11列,第1列全0,方便计算 #include<iostream> using namespace std; int main(){ int a[10][11]={0,1},i,j; //初始化时写好第1行,其余各行全0 for(i=1;i<10;i++) //为了全部算法无特例,共用11列,第1列全 0,方便计算 for(j=1;j<=i+1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i<10;i++){ for(j=1;j<=i+1;j++) cout<<a[i][j]<<'\t'; cout<<endl; }
第五章 数组与指针习题
一、.基本概念与基础知识自测题
5.1 填充题 5.1.1 数组定义时有三个要素:数组名,数组元素的 (1) 和数组元素的 (2) 。按元素在数组中的位置进行访问,是通过 (3) 进行的, 称为 (4) 或 (5) 访问。为了使数组声明中数组的大小修改更为 方便,总是将 (6) 用于声明数组长度。 答案:(1)类型 (2)数量 (3)下标运算符 (4)下标 (5)索引 (6)常变量 5.1.2 C/C++中的多维数组用的是一个 (1) 的定义,即多维数组的基本 定义是 (2) 构成的数组,三维数组的元素是 (3) 。 答案:(1)嵌套 (2)以数组作为元素 (3)二维数组 5.1.3 计算机内存是一维编址的,多维数组在内存中的存储 (1) , C/C++多维在内存中的排列是 (2) 方式,即越 (3) 的下标变化 (4) 。设数组a有m行n列,每个元素占内存u个字节,则a[i][j]的 首地址为 (5) + (6) 。 答案:(1)必须要转化为一维方式, (2)按行方式 (3)右 (4)越快 (5)a数组的首地址 (6)(i*n+j)*u 5.1.4 对于多维数组, (1) 的大小是确定的,所谓“不检查数组边界”只 是不检查 (2) 的边界,而 (3) 的边界是在控制之中的,所 以多维数组名作为函数的参数只可以 (4) 缺省。 答案:(1)较低各维的 (2)最高维(第一维)
result_1[i*c+j]+=middle_1[i*b+k]*matrix2_1[k*c+j]; } } return; } void output(int max_1[],int a,int b){ for (int i=0;i<a;i++){ for (int j=0;j<b;j++) cout <<setw(4)<<max_1[i*b+j]<<" "; cout<<'\n'; } cout<<endl; return; } 5.5 编写函数int atoi(char s[ ]),将字符串s转化为整型数返回。注意负数 处理方法。 解:用指针处理字符串非常方便。使用符号位来处理负数。 #include<iostream> using namespace std; int atoi(char s[]){ int temp=0,f=1,i=0; while(s[i]!='\0'&&s[i]!='-'&&(s[i]<'0'||s[i]>'9')) i++;//去除串前部无效字 符 if(s[i]=='-'){//读负号 f=-1; i++; } if(s[i]<'0'||s[i]>'9') cout<<"error!"<<endl;//串非法时,输出提示,返回0 while(s[i]>='0'&&s[i]<='9'){//转换数字串 temp=temp*10+s[i]-48; i++; } return f*temp; } int main(){ char num[20];
相关文档
最新文档