由机器语言到高级语言程序编写和编译练习题答案解析文档格式.docx
《由机器语言到高级语言程序编写和编译练习题答案解析文档格式.docx》由会员分享,可在线阅读,更多相关《由机器语言到高级语言程序编写和编译练习题答案解析文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
(C)标识符可以是常量、变量名,也可以是函数名;
保留字可以是赋值符号如“=”、语句结束符号如“;
”、基本运算符号如“+”“-”“*”“/”、程序段落符号如“{}”等,保留字还可以是其他语句模式的标志性符号。
(D)上述有不正确的。
D
本题考核从语言编译角度理解计算机语言。
(A)(B)(C)的叙述都是正确的,所以选择(D)。
5、关于普通计算机语言(或者说程序)的基本构成要素,下列说法最完整的是_____。
(A)常量与变量和表达式;
(B)常量与变量、表达式和语句;
(C)常量与变量、表达式、语句和函数;
(D)都不完整。
C
本题考核程序的基本构成要素。
程序的基本构成要素包括常量与变量、表达式、语句和函数,所以(C)正确,(A)和(B)叙述不完整。
具体内容请参考第六章视频之“计算机语言(程序)的基本构成要素(I)”以及第六章课件。
6、关于表达式,下列说法不正确的是_____。
(A)由常量、变量及各种算术运算符构造的表达式,被称为算术表达式,其结果为一数值;
(B)由常量、变量和各种比较运算符构造的表达式,被称为比较表达式,其结果只能为逻辑“真”或“假”;
(C)由常量、变量和各种逻辑运算符构造的表达式,被称为逻辑表达式,其结果只能为逻辑“真”或“假”;
(D)比较表达式中不能含有算术表达式,逻辑表达式中可以含算术表达式。
本题考核对“表达式”的理解。
比较表达式和逻辑表达式中都可以含算术表达式,所以(D)错误;
(A)(B)和(C)的叙述都是正确的。
7、已知A=40;
B=30;
C=100;
D=50,逻辑“与”运算符为and,“或”运算符为or,“非”运算符为not。
围绕这些已知条件回答问题:
(1)计算表达式 (A+(C–B)*3)/D 的值,结果为_____。
(A)5;
(B)-5;
(C)10;
(D)4;
(2)计算表达式 (A*A-B*B)+D 的值,结果为_____。
(A)70;
(B)150;
(C)570;
(D)750;
(3)计算表达式 (A>
B)and(B<
C)的值,结果为_____。
(A)100;
(B)30;
(C)真;
(D)假;
(4)计算表达式 (A>
B+20)or(B+60<
(5)计算表达式C>
A+B+D的值,结果为_____。
(A)120;
(B)100;
(6)计算表达式A+A*5的值,结果为_____。
(A)400;
(B)240;
B
(7)计算表达式A<
A*5的值,结果为_____。
(A)40;
(B)200;
(C)160;
(D)真;
(E)假;
(8)计算表达式(X>
Y)and(X<
=Y)的值,结果为_____。
(A)真;
(B)假;
本题考核表达式的计算。
(1)(A+(C–B)*3)/D=(40+(100-30)*3)/50=5,(A)选项正确;
(2)(A*A-B*B)+D=(40*40–30*30)+50=750,(D)选项正确;
(3)(A>
B)=(40>
30)为真,(B<
C)=(30<
100)为真,所以(A>
C)为真,(C)选项正确;
(4)(A>
B+20)=(40>
30+20)=(40>
50)为假,(B+60<
C)=(30+60<
100)=(90<
100)为真,所以(A>
C)为真,(C)选项正确;
(5)A+B+D=40+30+50=120,C>
A+B+D为100>
120为假,(D)选项正确;
(6)A+A*5=40+40*5=240,(B)选项正确;
(7)A*5=40*5=200,A<
A*5为40<
200为真,(D)选项正确;
(8)X>
Y与X<
=Y不能同时成立,而要是“and”为真时,必须左右两边同时成立,所以(X>
=Y)为假,(B)选项正确;
8.已知X=21,Y=15,Z=22,围绕这些已知条件回答问题:
(1)计算表达式((X>
Y)or(Y>
Z))and((X<
Y)or(Y<
Z))的值,
结果为_____。
(2)计算表达式((X>
Y)AND(Y>
Z))OR((X<
Y)AND(Y<
(3)计算表达式((X>
Z)AND(Y<
(4)假设不知道X、Y的值,计算表达式(X>
(1)(X>
Y)=(21>
15)为真,(Y>
Z)=(15>
22)为假,因此((X>
Z))为真,(X<
Y)=(21<
15)为假,(Y<
Z)=(15<
22)为真,因此((X<
Z))为真,所以((X>
Z))为真,(A)选项正确;
(2)(X>
Y)and(Y>
Z))为假,(X<
Y)and(Y<
Z))为假,所以((X>
Z))为假,(B)选项正确;
(3)(X>
Z)=(21<
22)为真,(Y<
(4)X>
9.读程序,并回答问题:
N=101;
IfN/2==0Then
N=N/2;
Else
N=N*3+1;
EndIf
该程序执行完成后,N的值为_____。
(A)101;
(B)55.5;
(C)304;
(D)167.5;
本题考核分支结构。
已知N=101,则N/2=50不等于0,不符合If语句的条件,所以进入Else语句,N=N*3+1=101*3+1=304,所以(C)正确。
10.已知程序如下,回答下列问题:
X=Z+Y;
IfY<
Z {
X=X–Y;
}
Else{
X=X–Z;
X=X–Y;
IfX<
Z{X=Y+20;
}
X=X–Z;
IfX>
Y
{X=X–Y;
(1)已知X=10,Y=20,Z=30该程序执行完成后,X的值为_____。
(A)10;
(B)20;
(C)30;
(D)40;
(E)上述都不对。
(2)已知X=10,Y=50,Z=30该程序执行完成后,X的值为_____。
(3)已知X=30,Y=30,Z=30该程序执行完成后,X的值为_____。
(A)10;
(1)程序开始执行,X=Z+Y=30+20=50,Y<
Z=20<
30为真,所以执行X=X–Y=50–20=30,接着X=X–Y=30–20=10,X<
Z=10<
30为真,所以执行X=Y+20=20+20=40,接着X=X–Z=40–30=10,X>
Y=10>
20为假,所以程序结束,最终X=10,(A)正确。
(2)程序开始执行,X=Z+Y=30+50=80,Y<
Z=50<
30为假,所以执行X=X–Z=80–30=50,接着X=X–Y=50–50=0,X<
Z=0<
30为真,所以执行X=Y+20=50+20=70,接着X=X–Z=70–30=40,X>
Y=40>
50为假,所以程序结束,最终X=40,(D)正确。
(3)程序开始执行,X=Z+Y=30+30=60,Y<
Z=30<
30为假,所以执行X=X–Z=60–30=30,接着X=X–Y=30–30=0,X<
30为真,所以执行X=Y+20=30+20=50,接着X=X–Z=50–30=20,X>
Y=20>
30为假,所以程序结束,最终X=20,(B)正确。
11.读程序,并回答问题:
X=1;
Y=2;
Sum=0;
Do{ Sum=X+Y;
X=X+1;
Y=Y+1;
}While(Sum<
=20)
(1)该程序执行完成后,Sum的值为_____。
(A)20;
(B)21;
(C)19;
(D)18;
(2)该程序执行完成后,X的值为_____。
(A)8;
(B)9;
(D)11;
本题考核循环结构。
Do-While结构先执行一遍Do部分,然后判断是否符合条件,若符合条件则接着执行Do部分直至条件为假,此时程序结束。
(1)程序开始执行,Sum=X+Y=1+2=3,X=X+1=1+2=3,Y=Y+1=2+1=3,此时Sum=3<
=20,所以接着执行Do部分,直到Sum=X+Y=10+11=21时,此时X=10,Y=11,接着执行X=X+1=10+1=11,Y=Y+1=11+1=12,此时Sum=21>
20,条件为假,程序结束。
所以该程序执行完成后,Sum的值为21,(B)正确。
(2)由
(1)题知,该程序执行完成后,X的值为11,(D)正确。
12.读程序,并回答问题:
(10)N=6;
(20)X=0;
(30)Y=1;
(40)ForI=1ToN-1Step1
(50)Z=X+Y;
(60)X=Y;
(70)Y=Z;
(80)NextI
(1)该程序执行完成后,Z的值为_____。
(A)3;
(B)5;
(C)8;
(D)13;
(2)程序行(60)执行了多少次?
次数为_____。
(A)4;
(C)6;
(D)7;
For循环条件是I从1到N-1,即从1到5,I=1时,Z=X+Y=0+1=1,X=Y=1,Y=Z=1;
I=2时,Z=X+Y=1+1=2,X=Y=1,Y=Z=2;
I=3时,Z=X+Y=1+2=3,X=Y=2,Y=Z=3;
I=4时,Z=X+Y=2+3=5,X=Y=3,Y=Z=5;
I=5时,Z=X+Y=3+5=8,X=Y=5,Y=Z=8;
程序结束。
所以该程序执行完成后,Z的值为8,(C)正确;
For循环从I=1到5共执行了5次,程序行(60)是For循环中的一部分,所以也执行了5次,(B)正确。
13.读程序,并回答问题:
(10)K=0;
(20)I=2;
(30)While(I<
=8)
(40){K=K+I;
(50)I=I+2;
}
(1)该程序执行完成后,K的值为_____。
(A)35;
(C)36;
(D)12;
(2)程序行(40)执行了多少次?
(A)2;
(B)4;
(D)8;
(1)程序开始执行,I=2<
=8,条件为真,执行K=K+I=0+2=2,I=I+2=2+2=4;
I=4<
=8,条件为真,执行K=K+I=2+4=6,I=I+2=4+2=6;
I=6<
=8,条件为真,执行K=K+I=6+6=12,I=I+2=6+2=8;
I=8<
=8,条件为真,执行K=K+I=12+8=20,I=I+2=8+2=10;
I=10>
8,条件为假,程序结束。
所以该程序执行完成后,K的值为20,(B)正确。
(2)由
(1)知,程序行(40)执行了4次,(B)正确。
14.已知函数Fact的程序如下,回答下列问题:
LongIntFact(intn)
{LongIntx;
If(n>
1)
{x=Fact(n-1);
returnn*x;
elsereturn1;
(1)Fact(4)的值为_____。
(B)24;
(C)120;
(D)15;
(2)在执行Fact(5)的过程中,Fact函数被调用的次数为_____。
(C)5;
(D)6;
本题考核对函数的理解和运用。
(1)该程序是计算阶乘,即Fact(n)=n!
,该程序的流程图如图(a)所示,所以Fact(4)=4!
=24,(B)正确,具体过程如图(b)所示。
(2)由题
(1)中图(b)知,在执行Fact(4)的过程中,Fact函数被调用了4次,所以在执行Fact(5)时,Fact函数会被调用5次,(C)正确。
具体内容请参考第六章视频之“计算机语言(程序)的基本构成要素(II)”以及第六章课件。
15.已知函数Fact的程序如下,回答下列问题:
return(n+x)*2;
(A)14;
(C)44;
(D)64;
本题考核算法的循环结构
由程序分析可知,调用函数4次,因此Fact(4)的值为44。
具体内容请参考第六章视频之“计算机语言(程序)的基本构成要素”以及第六章课件。
(2)在执行Fact(4)的过程中,Fact函数被调用的次数为_____。
16.已知程序如下,回答下列问题:
main()
{
inti,n;
longsum=0,p=1;
...//输入n值的语句,略
for(i=1;
i<
=n;
i++)
p=p*i;
sum=sum+p;
}
...//输出sum值的语句,略
该程序实现的功能为_____。
(A)sum=1*2*3*...*n;
(B)sum=1!
+2!
+...+n!
;
(C)sum=1+2+3+...+n;
(D)sum=1*2+2*3+(n-1)*n;
(E)上述都不正确。
本题考核算法的分析及循环结构的分析
很明显是1到n的阶乘,选B。
17.已知程序如下,回答下列问题:
(10)main()
(20){intcounter;
(30)...//输入N值的语句,略
(40)longproduct=1;
(50)forcounter=1toNstep2
(60){product=product*counter;
(70)returnproduct;
(80)}
(1)该程序实现的功能为_____。
(A)product=1*2*3*...*(N-1);
(B)product=1+2+3+...+(N-1);
(C)product=1*3*5*...*(N-1);
(D)product=1+3+5+...+(N-1);
本题考核算法与结构分析
由程序可知,为求1*3*5*...*(N-1)的值。
(2)当程序行(60)执行了3次以后,Product和Counter的值分别为_____。
(A)105,5;
(B)15,7;
(C)15,5;
(D)105,7;
在程序执行3次时,Product