级程序设计基础习题参考解答教师用.docx
《级程序设计基础习题参考解答教师用.docx》由会员分享,可在线阅读,更多相关《级程序设计基础习题参考解答教师用.docx(61页珍藏版)》请在冰豆网上搜索。
级程序设计基础习题参考解答教师用
计算机程序设计基础__基础知识
(一)
一、选择题
1、C++源程序文件的默认扩展名为()。
(A)cpp(B)exe
(C)obj(D)lik
解:
选A
2、由C++源程序文件编译而成的目标文件的默认扩展名为()。
(A)cpp(B)exe
(C)obj(D)lik
解:
选C
3、由C++目标文件连接而成的可执行文件的默认扩展名为()。
(A)cpp(B)exe
(C)obj(D)lik
解:
选B
4、编写C++程序一般需经过的几个步骤依次是()。
(A)编译、编辑、连接、调试(B)编辑、编译、连接、调试
(C)编译、调试、编辑、连接(D)编辑、调试、编译、连接
解:
选B
5、程序中主函数的名字为()。
(A)main(B)MAIN
(C)Main(D)任意标识符
解:
选A
6、下面四个选项中,均是不合法的用户标识符的选项的是()。
(A)Ap_odo(B)floatlao_A
(C)b-agotoint(D)_123tempINT
解:
选C。
因为b-a中用到减号,goto,int是C++保留的关键字。
在A选项中,A,p_o是合法的用户标识符;在B选项中,lao与_A是合法的用户标识符;在D选项,_123与temp也是合法的用户标识符。
7、下列变量名中合法的是()。
(A)B)C)Tom(B)3a66
(C)_6a7b(D)$ABC
解:
选C。
因为它由字母、数字与下划线组成的字符序列,且以下划线开头。
在A选项中,变量名用到了)号;在B选项中,以数字3开头;在D选项中,以美元符号$开头。
8、存储以下数据,占用存储字节最多的是()。
(A)0(B)‘0’
(C)“0”(D)0.0
解:
选D。
该数据至少是浮点型或双精度型,它占用存储字节数分别为4字节或8字节。
在A选项中,整数0占用4字节;在B选项中,字符0占用1字节;在C选项中,它是字符数组的赋值,应占用2字节。
9、在C++语言中,字符型数据在内存中的存储形式是()。
(A)补码(B)反码
(C)原码(D)ASCII码
解:
选D。
字符型数据在内存中所存储的值其实是一个正整数值,该值是其ASCII码值。
所以在C++中,字符型数据可与整型数据进行运算。
10、若有说明语句:
charc=’\072’;则变量c()。
(A)包含1个字符(B)包含2个字符
(C)包含3个字符(D)说明不合法,变量的值不确定
解:
选A。
因为、\072是转义字符,表示;号。
二、填空题
1、C++头文件和源程序文件的扩展名分别为和。
解:
填h和cpp。
2、C++语言规定,标识符只能由、、三种字符组成,而且第一个字符必须是或。
解:
填字母、数字、下划线(无顺序之分),填字母、下划线(无顺序之分)。
3、一条表达式语句必须以作为结束符。
解:
填;(即分号)。
4、用于从键盘上为变量输入值的标准输入流对象是;用于输出表达式值的标准输出流对象是。
解:
填cin,cout。
5、在一个C++程序文件中,若要包含另外一个头文件或程序文件,则应使用以标识符开始的预处理命令。
解:
填include。
计算机程序设计基础__基础知识
(二)
一、单选题
1、下列哪一个是C++语言中合法的变量()。
(A)8ZSe(B)±A0
(C)X0_2(D)’x0’
解:
选C。
因为A选项,数字8打头,B选项中,±打头,C选项中,‘打头,这都是C++变量命名所不允许的。
2、已知ch是字符型变量,下面不正确的赋值语句是()。
(A)ch='a+b'(B)ch='\0'
(C)ch='7'+'9'(D)ch=5+9
解:
选A。
3、下列浮点数的表示中不正确的是()。
(A)223.(B)719E22
(C)e23(D)12e2
解:
选C。
因为e或E的两边必须带上一位数字。
4、下列不正确的转义字符是()。
(A)'\\'(B)‘\"’
(C)'074'(D)'\0'
解:
选C。
074取字符时,仅取了4。
5、在C语言中,合法的字符常量是()。
(A)'\084'(B)'\x43'
(C)'ab'(D)"\0"
解:
选A。
A选项表示4,而C选项仅取了b,D选项是字符串,B似乎也行。
6、下列变量定义中合法的是()。
(A)double_a=1.le-1;(B)doubleb=1+5e2.5;
(C)doubledo=2e3(D)double2_and=1-e-3;
解:
选A。
B选项错在:
变量初始化不能用算术表达式。
C选项错在:
do关键词不能作变量名。
D选项错在:
变量名应字母与下划线打头。
7、已知ch是字符变量,正确的赋值语句是()。
(A)ch=‘123’(B)ch=’\xff’
(C)ch=’\08’(D)ch=”\”
解:
选C。
A选项只能将3赋给ch,并不能将123赋给ch。
B选项中的\xff并非转义字符。
D选项是为字符串变量赋值。
8、若x、i、j和k都是int型变量,则计算表达式x=(i=4,j=15,k=32)后,x的值为()。
(A)4(B)16
(C)32(D)52
解:
选C。
先算括号,它是逗号表达式,值取最后的一个,即k=32。
然后将k的值32赋给x,从而x的值为32。
9、单精度数x=3.0,y=4.0,下列表达式中y的值为9.0的是()。
(A)y/=x*27/4(B)y+=x+2.0
(C)y-=x+8.0(D)y*=x-3.0
解:
选B。
选做x+2.0=3.0+2.0=5.0,再作y=y+5.0=4.0+5.0=9.0。
A选项的值为0.197531,C选项的值为-7,D选项的值为0。
10、有整型变量x,单精度变量y=5.5,表达式:
x=(float)(y*3+((int)y%4))执行后,x的值为()。
(A)17(B)17.5
(C)16.5(D)16
解:
选A。
求解过程如下:
(int)y=5(int)y%4=5%4=1,y*3=5.5*3=16.5,16.5+1=17.5,(float)17.5=17.5,由于x是整型变量,故只能将17赋给了x。
二、填空题
1、一个C语言程序一般由若干个函数构成的,程序中至少应包含一个。
解:
填main。
2、在C语言中,八进制整常量以开头、十六进制整常量以开头。
解:
填数字0开头,填ox或OX
3、‘x’在内存中占字节,”x”在内存中占字节,”/101”在内存中占。
解:
填1,再填2,最后填1。
4、若a是int型变量,且a的初值为6,则计算表达式a+=a-=a*a后a的值为。
解:
填-60,计算过程如下:
注意到赋值运算符结合次序是从右至左,有:
a*a=36,再执行a-=36,则a=6-36=-30,再执行a+=-30,即a=-30-30=-60。
5、设inta=2,b=3;floatx=3.5,y=2.5;表达式(float)(a+b)/2+(int)x%(int)y的值是。
解:
填3.5,计算过程如下:
(float)(a+b)=5.0,(int)x=3,(int)y=2
5.0/2+3%2=2.5+1=3.5
6、设intx=1,y=1;表达式(!
x||y--)的值是。
解:
填1,计算过程如下:
!
x=0,y—仍使y=1,再做0||1=1之后,y=0。
7、定义:
inta=10,b=9,c=8;顺序执行语句:
c=(a-=(b-5));c=(a%11)+(b=3);后变量c的值是;变量b的值是。
解:
填9,填3,计算过程如下:
b-5=9-5=4,a-=4=10-4=6,c=6
a%11=6%11=6,b=3,c=6+3=9
故最后c=9,b=3。
8、设有intx=11;则表达式(x++*1/3)的值是。
解:
填3,计算过程如下:
x++仍使x=11,11/3=3,并使x=12。
计算机程序设计基础__基础知识(三)
一、单选题
1、下列优先级最低的算符是()。
(A)&&(B)+(C)||(D)=
解:
选D。
&&与||为8级运算符,+为4级运算符,而=为10级运算符。
2、以下符合C++语言语法的赋值表达式是()。
(A)d=9+e+f=d+9(B)d=9+e,f=d+9
(C)d=(9+e,e++,d+9)(D)d=9+e++=d+7
解:
选C。
A选项错在:
赋值运算的左值应为单变量,不能是表达式。
B选项错在:
它是逗号表达式,不是赋值表达式。
D选项错在:
e++是运算表达式,而非变量,不能进行赋值运算。
3、已知字母A的ASCII码为十进制数65,且c2为字符型,执行语句c2=‘A’+’6’-‘3’;后c2的十进制ASCII码值为()。
(A)67(B)68(C)69(D)不确定的值
解:
选B,其计算过程是:
65+3=68
4、设有说明:
charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为()。
(A)float(B)char(C)int(D)double
解:
选D。
类型转换遵循由低向高。
char->int,float->double.
5、假设在程序中a、b、c均被定义成整型,所赋的值都大于1,则下列能正确表示代数式
的表达式是()。
(A)1.0/a*b*c(B)1/(a*b*c)
(C)1/a/b/(float)c(D)1.0/a/b/c
解:
选B。
A,C,D都改为了浮点数相除,B是整数相除。
6、已知inti,a;执行语句“i=(a=2*3,a*5),a+6;”后,变量i的值是()。
(A)6(B)12(C)30(D)36
解:
选C。
逗号表达式的执行次序是从左至右,于是
i=(a=6,6*5)=30,再执行a+6=6+6=12
执行完后,i=30,但该表达式的值为12。
7、C++语言中,要求运算数必须是整型的运算符是()。
(A)%(B)/(C)<(D)!
解:
选A。
8、以下正确地定义整型变量a,b和c并为它们都赋初值5的语句是()。
(A)inta=b=c=5;(B)inta,b,c=5;
(C)inta=5,b=5,c=5;(D)a=b=c=5;
解:
选C。
A选项与D选项应改为:
inta,b,c;a=b=c=5;而B选项仅为c赋了初值5,a,b均未赋初值。
9、以下变量均为int类型,则值不等于7的表达式是()。
(A)(x=y=6,x+y,x+1)(B)(x=y=6,x+y,y+1)
(C)(x=6,x+1,y=6,x+y)(D)(y=6,y+1,x=y,x+1)
解:
选C。
它的运算过程如下:
x=6,x+1=6+1=7,y=6,x+y=6+6=12,其表达式最后的值为12。
A、B和D选项的值均为7。
10、设有inta=1,b=2,c=3,d=4,m=2,n=2;执行语句:
(m=a>b)&&(n=d>c);后n的值为()。
(A)1(B)2(C)3(D)0
解:
选B,其运算过程为:
先执行括号,由左至右次序,于是
a>b为1>2,值为0,故m=0
本应执行第二个括号,即d>c为4>3,值为1,故n=1。
但实际上,由于0与任何值作与运算&&,其结果均为0,于是第二个括号内的运算可以不必进行。
因此,n=2而不是n=1。
二、填空题
1、当inta=1,b=2,c=3;时,则表达式a+b>0&&b==c的值是。
解:
填0,其计算过程如下:
由于关系运算的优先级高于逻辑运算,故上式等价于(a+b>0)&&(b==c)
a+b>0,即1+2=3>0,故值为1。
b==c,即2==3,故值为0。
1&&0=0
2、若x是int类型变量,则执行下列语句:
x=7;x+=x-=x+x;后x的值是。
解:
填-14,其计算过程如下:
赋值运算符的次序是由右至左,x+x=14,x-=14,再执行x=x-14=7-14=-7,最后执行x+=-7,即x=x+(-7)=-7-7=-14.
3、若变量a,b和c是int类型,以下语句借助int类型中间变量t把a,b,c交换,如交换前:
a=10,b=20,c=30,交换后:
a=20,b=30,c=10,则交换语句为;a=b;b=c;;
解:
填t=a,再填c=t。
这是一种非标准的变量交换。
标准的交换是两两交换,即先作a与b的交换,然后作b与c的交换,其语名为:
t=a;a=b;b=t;
t=b;b=c;c=t;
4、设inta=2,b=4,c=1,x=0,y=0;执行语句a||(x=b)&&(y=c);后x的值为,y的值为。
解:
填0,再填0,其计算过程与理由如下:
2||(x=b)&&(y=c),由于2非零,它与后面表达式作||或运算,其值自然是非零,后面的表达式不需要进行运算,因此,x,y的值仍为0。
5、判断字符型变量c为大写字母的正确表达式是。
解:
填c>=65&&c<=90,或填c>=’A’&&c<=’Z’。
A至Z的ASCII码的值为:
65-90;a至z的ASCII码的值为:
97-122。
可见,大写字母换小写字母,应将码值加32。
而小写字母换大写字母,应将码值减32。
计算机程序设计基础__控制结构
(一)
一、单选题
1、下列程序的输出结果是()。
#include
voidmain()
{doubled=3.2;intx,y;
x=1.2;y=(x+3.8)/5.0;
cout<}
(A)3(B)3.2(C)0(D)3.07
解:
选C。
其计算过程如下:
由于x为整型变量,x=1.2,使x=1,y=(1+3.8)/5.0=4.8/5.0=0.98,由于y也是整型变量,y=0,从而d*y=3.2*0.0=0,输出0。
2.下列程序执行后的输出结果是()。
#include
voidmain()
{doubled;floatf;
longl;inti;
i=f=l=d=20/3;
cout<
cout<}
(A)6,6,6,6(B)6,6,6.7,6.7
(C)6,6,6,6.7(D)6,6,6.7,6
解:
选A。
其计算过程如下:
20/3=6,故d=6.0,l=6,f=6.0,i=6,故输出结果为6,6,6,6。
3、下面程序的输出是()。
#include
voidmain()
{
inta=-1,b=4,k;
k=(a++<=0)&&(!
(b--<=0));
cout<}
(A)003(B)012
(C)103(D)112
解:
选C。
其计算过程如下:
(1)a++<0,即-1<0,值为1且a=0
(2)!
(b--<=0),即!
(4<=0)=1且b=3
(3)k=1&&1=1
(4)输出103
4、设intx=1,y=3,则语句x+=y;y=x-y;x-=y;的功能是()。
(A)把x和y按从大到小排列(B)把x和y按从小到大排列
(C)无确定结果(D)交换x和y中的值
解:
输出D。
其计算过程如下:
x=x+y使x存储x+y的值,而y=x-y=(x+y)-y=x,使y中存储x值,而x=x-y=(x+y)-x=y,即使y中存储了y的值。
故该语句的功能是实现交换x和y中的值。
5、以下程序的输出结果是()。
#include
voidmain()
{inta,b,c=246;
a=c/100%9;b=(-1)&&(-1);
cout<}
(A)2,1(B)3,2
(C)4,3(D)2,-1
解:
选A。
其计算过程如下:
a=246/100%9=2%9=2
b=(-1)&&(-1)=1
输出2,1
二、分析程序,写出运行结果
1、#include
voidmain()
{inti,j,m,n;
i=8;j=10;
m=++i;
n=j++;
cout<
}
程序的运行结果是
解:
填911910。
其运行过程如下:
m=++i=9(该语句执行之前,已使i=9),n=j++=10(但执行完后,j=11)
故i=9,j=11,m=9,n=10。
由于输出时未空格,故输出结果为911910。
2、#include
voidmain()
{
inty=3,x=3,z=1;
cout<<(++x,y++)<}
程序的运行结果是
解:
填33。
其运行过程如下:
执行++x,其值为4且x=4。
执行y++,其值为3但y=4
(4,3)=3z+2=3因此,输出结果为33。
计算机程序设计基础__控制结构
(二)
一、单选题
1、若从键盘上输入5,则程序的输出结果是()。
#include
voidmain()
{
intx;
cin>>x;
if(x++>5)cout<elsecout<}
(A)7(B)6(C)5(D)4
解:
选B。
其程序运行过程如下:
判断x++>5,即5>5,其值为0,当该判断结束后,x=6
执行cout<2、下列程序的输出结果是()。
#include
voidmain()
{intx=1,a=0,b=0;
switch(x)
{
case0:
b++;
case1:
a++;
case2:
a++;b++;
}
cout<<”a=”<}
(A)a=2,b=1(B)a=1,b=1
(C)a=1,b=0(D)a=2,b=2
解:
选A。
其程序运行过程如下:
由于switch
(1),执行case1:
使a=1,由于没有break,继续执行case2:
使得a=2,b=1.
结束switch,输出a=2,b=1。
3、下列程序的输出结果是()。
#include
voidmain()
{doublex=2.0,y;
if(x<0.0)y=0.0;
elseif(x<10.0)y=1.0/x;
elsey=1.0;
cout<}
(A)0(B)0.25(C)0.5(D)1
解:
选C。
其程序执行过程如下:
2.0<0.0为假,继续判定2.0<10.0,其值为真,执行y=1.0/2.0=0.5,再输出0.5。
4、若从键盘上输入3和4,则程序的输出结果是()。
#include
voidmain()
{inta,b,s;
cin>>a>>b;
s=a;if(a
cout<
}
(A)14(B)16(C)18(D)20
解:
选B。
其程序执行过程如下:
执行输入语句,使得a=3,b=4。
s=a=3
由于3<4为真,使得s=4
执行s=s*s=4*4=16
输出16。
5、下面的程序()。
#include
voidmain()
{
intx=3,y=0,z=0;
if(x=y+z)cout<<"****\n";
elsecout<<"####\n";
}
(A)有语法错误不能通过编译(B)输出****
(C)可以通过编译,但是不能通过连接,因而不能运行(D)输出####
解:
选D。
其程序执行过程如下:
条件表达式if(x=y+z)的意义是:
x=0+0=0,if(0),故程序转向执行输出####,并换行。
6、为避免在嵌套的条件语句if-else中产生二义性,C语言规定:
else子句总是与()配对。
(A)同一行上的if(B)其之后最近的if
(C)其之前最近的且没有else的if(D)缩排位置相同的if
解:
选C。
二、填空题
1、计算机总是按照语句或者语句块位置的先后关系执行。
解:
填顺序。
2、所有程序都可以用、、三种控制结构实现。
解:
填顺序、选择、循环。
3、switch结构中的表达式必须是。
解:
填整型或字符型或枚举型数据。
4、case语句中的表达式必须是。
解:
填常量表达式。
计算机程序设计基础__控制结构(三)
一、分析程序,写出运行结果
1、#include
voidmain()
{
intx=100,a=10,b=20,ok1=5,ok2=5;
if(a
if(b!
=15)
if(!
ok1)
x=1;
else
if(ok2)
x=10;
cout<}
程序的运行结果是
解:
填10。
本程序主要考查对if与else就究配对原则的理解,以及if嵌套后的层次关系的理解。
该程序可适当添加括号与缩进,使程序层次更明晰,理解更方便一些。
#include
voidmain()
{
intx=100,a=10,b=20,ok1=5,ok2=5;
if(a
{
if(b!
=15)
{
if(!
ok1)
x=1;
else
{
if(ok2)
x=10;
}
}
}
cout<}
其执行过程如下:
10<20为真,考察20!
=15,也为真,再考察!
5为0,再转而考察if(5),其值为真,x=10,最后输出10。
2、#include
voidmain()
{floatx,y;charch;doubler;
cin>>x>>y>>ch;
switch(ch)
{
case‘+’:
r=x+y;break;
case‘-’:
r=x-y;break;
case‘*’:
r=x*y;break;
case‘/’:
r=x/y;break;
}
cout<