}
三、习题分析与解答
1.C++语言中有哪些数据类型?
分别说明它们的类型关键字、取值范围、类型长度。
答:
C++语言中的数据类型有:
整型(短整型,整型,长整型);字符型;逻辑型;枚举型;实型(单精度,双精度,长双精度);引用型(指针,引用);复合型(结构,联合);空类型。
2.字符常量与字符串常量的区别是什么?
答:
字符常量与字符串常量的主要区别在于:
(1)定界符不同。
字符常量使用单引号,而字符串常量使用双引号。
(2)长度不同。
字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数。
(3)存储要求不同。
字符常量存储的是字符的ASCII码值,而字符串常量除了要存储有效的字符外,还要存储一个结束标志’\0’。
3.说明下面的每个数据各属于哪一种(数值常量、字符常量、字符串、标识符、保留字、运算符、标点、非法数据)?
2518-3.6712.8“4”‘4’
x1“x2”“1949.10” cinK_name
3ab“floatx,y “;if+
“\n” ?
; “sy1.cpp”‘\32’ \’
答:
数值常量有:
25,18,-3.67,12.8
字符常量有:
‘4’,\’,‘\32’
字符串有:
“4”,“x2”,“1949.10”,“sy1.cpp”,“\n”
保留字:
cin,int,endl,if
运算符:
+
标点:
?
非法数据:
“floatx,y “; ,3ab
变量:
x1,K_name
4.选择题
(1)下列数据类型不是C++语言基本数据类型的是()。
A.字符型B.整型C.实型D.数组
答案:
D
(2)在C++语言中,080是()。
A.八进制数 B.十进制数C.十六进制数D.非法数
答案:
B
(3)下列字符列中,可作为C++语言程序自定义标识符是()。
A.switch B. D.do
答案:
B
(4)运算符 +、<=、=、%中,优先级最低的运算符是( )。
A. +B.<= C.=D.%
答案:
C
(5) 下列字符列中,可以作为“字符串常量”的是( )。
A.ABCB.″xyz″C.′uvw′D.′a′
答案:
B
(6)设变量m,n,a,b,c,d均为0,执行(m=a==b)||(n=c==d)后,m,n的值是( )。
A.0,0B.0,1 C. 1,0D.1,1
答案:
C
(7)字符串”vm\x43\\\np\102q”的长度是( )。
A.8B.10 C.17D.16
答案:
A
(8)在C++语言中,自定义的标识符()。
A.能使用关键字并且不区分大小写B.不能使用关键字并且不区分大小写
C.能使用关键字并且区分大小写D.不能使用关键字并且区分大小写
答案:
D
(9)设有代码“inta=5;”,则执行了语句“a +=a-=a*a;”后,变量a的值是( )。
A.3 B.0 C. -40 D.–12
答案:
C
(10)设a为5,执行下列代码后,b的值不为2的是( )。
A.b=a/2B.b=6-(--a)
C. b = a%2D. b=a< 3?
3:
2
答案:
C
(11)下面的( )均是C语言的整型常量。
A.0xffff和611B.01b和0xa1 C.986.012和0667 D.2e4和0x
答案:
A
(12)数学公式
写成C表达式,下面的()是正确的。
A.sqrt (abs(pow(x,y)+exp(y))) B.sqrt(abs(pow(y, x)+exp(y)))
C.sqrt(fabs(pow(x,y)+ exp(y))) D.sqrt(fabs(pow(y,x) + exp(y)))
答案:
D
5.x为int类型,y为double类型,指出下列各表达式值的类型。
(1)1/3int
(2)48Llong
(3)5%3int(4)x*3/ydouble
(5) ‘x’+20int(6)(int)yint
(7)y!
=10 bool(8) x<1 ||x>10bool
(9)x>10?
x:
sqrt(x)int或float(10)x&&ybool
(11)truebool(12)(char) (x+10)char
(13) 1.0/3 float(14) sizeof(float) int
(15)x,y,x+y,double
说明:
(9)题,如果x>10成立,表达式值的类型为int,如果x>10不成立,表达式值的类型为float。
(15)题,为逗号表达式,x+y的值即为整个表达式的值,因而值的类型为double。
bool型在C++用int代替,true值为1,false值为0。
6.写出下列算术表达式的值:
(1) x+a%3*(int)(x+y)%2/4x=2.5,a=7,y=4.7
答:
上述表达式=2.5+1*(int)7.2%2/4 =2.5+1*7%2/4= 2.5
(2) (float)(a+b)/2+(int)x%(int)ya=2,b=3,x=3.5,y=2.5
答:
上述表达式=(float)5/2+3%2 =2.5+1= 3.5
7.设程序中有说明语句
inta=20;doublex=4.7;charr=’a’;
试求出下列每个表达式的值(假定各表达式互不影响)。
~
答案答案
(1)a++20ﻩ
(2)++r98
(3) 1+a/3%43ﻩ(4)10*sizeof( int)40
(5)char(a+20)(ﻩ(6)a==r||a==floor(x) 0
(7)a/9.0 2.222222(8)x=pow(3,5)273.000000
(9)x=(a++,r++)97.000000ﻩ(10)ceil(x-0.5)5.000000
(11) a=abs(a)%8-10-6(12)x=fabs(-27.2)+6 33.200000
(13)floor(x+0.5)5.000000ﻩ(14) ceil((x-=0.5)-0.5) 4.000000
(15)floor(x*1000+0.5)/10004.700000ﻩ(16)floor(x+0.5)5.000000
(17)floor(x*1000)/1000 4.700000(18)a+rand()%40某一个随机整数
(19) a%=n %=2),n=5 5ﻩ
此题运行时要给n赋初值, n必须是整型奇数,n为整型偶数出错。
(20) a+=a-=a*=a0
说明:
函数ceil(x),返回大于等于x的最小整数;floor(x),返回小于等于x的最大整数;rand(),返回0~32767之间的整数。
8.设程序中有说明语句
intx=20;floaty=4.7;charch = ’k’;
试求出下列每个表达式的值(假定各表达式互不影响)
答案答案
(1)x==00ﻩ
(2)x!
=y1
(3)x++>210ﻩ(4)‘a’==‘A’0
(5) ch!
=01ﻩ(6)x>0 &&y>0 1
(7)x>0 && 11ﻩ(8) y>0&&00
(9) !
(x||y)==!
x&&!
y0(10)x++ !
=20 ||y1
(11)!
!
ch==ch0ﻩ(12) !
(x&&y)==!
x||!
y1
说明:
C++语言提供了三种逻辑运算符:
!
,&&,||,其中!
逻辑非的优先级最高,&&逻辑与次之,||逻辑或最低。
!
逻辑非是右结合性,&&逻辑与和||逻辑或是左结合性。
四、习题
1.选择题
(1)C++语言中的标识符只能右字母、数字和下划线三种字符组成,且第一个字符( )。
A.必须为字母B.必须为下划线
C.必须为字母或下划线D.可以是字母、数字和下划线中任一中字符
(2)下面正确的字符常量是()。
A.“C”B.‘\\’’C.‘W’ D.‘’
(3)如果说明语句:
char c=‘\72’;则变量c()。
A.包含1个字符B.包含2个字符
C.包含3个字符D.说明不合法,c 的值不确定
(4)表达式18/4*sqrt(4.0)/8值的数据类型为()。
A.int B.floatC.doubleD.不确定
(5)关于逻辑运算符的说法正确的是()。
A.它们都是双目运算符,优先级相同
B.语句“int a=0,c=1,b;b=a&&c++;”执行后,c的值为2
C.语句“int a=0,c=1,b;b=a||c++;”执行后,c 的值为2
D.语句“int a=1,c=1,b;b=a&&c++;”执行后,c的值为2
(6)设 intm=7,n=12;则表达式为3的是()。
A.n%=(m%=5)B.n%=(m-m%5)
C.n%=m-m%5D.(n%=m)-(m%=5)
(7)数学公式yx+lny,正确的C++语言的表达式是()。
A.sqrt(fabs(pow(y,x)+log(y)))B.sqrt(fabs(pow(x,y)+log(y)))
C.sqrt(abs(pow(y,x)+log(y)))D.sqrt(abs(pow(x,y)+log(y)))
(8)有如下程序段:
inta=14,b=15,x;
charc=’A’;
x=(a&&b)&&(c<’B’);
执行该程序后,x的值为()。
A.ture B.flaseC.0D.1
(9)下面四个选项中,均是不合法的标识符的是()。
A.B B.forC.cin D.if
B_11a0 a_b temp
cout_a10 int b-a
(10)设变量a是整型,b是实型,c是双精度型,则表达式10+‘a’+c*b值的数据类型为()。
A.intB.float C.doubleD.不确定
(11)以下叙述中不正确的是()。
A.在C++程序中,name和NAME是两个不同的变量
B.在C++程序中,逗号运算符的优先级最低
C.若变量m,n为int型,则m=n后,n中的值不变
D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能诸如实型数值。
(12)sizeof(float)是()。
A.一个双精度型表达式B.一个整型表达式
C.一种函数调用D.一个不合法的表达式
(13)下面不正确的字符串常量是()。
A.‘rst’ B.“14‘14” C.“0” D.“ ”
(14)对代数式5ae/bc,下面不正确的C++语言表达式是()。
A.a/b/c*e*5B.5*a*e/b/c C.5*a*e/b*cD.a*e/c/b*5
(15)下列运算符中优先级最高的是()。
A.?
:
B.&& C.+D.!
=
(16)设a是整型变量,则表达式(a=4*5,a*2),a+6的值是()。
A.20B.26 C.40D.46
(17)设有:
inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c<d)后n的值为()。
A.1B.2C.3D.4
(18)用C++的语言表达式表示|x3+log10x|的正确是()。
A.fabs(x*3+log(x)) B.abs(pow(x,3)+log(x))
C.fabs(pow(x,3.0)+log(x))D.abs(pow(x,3.0)+log(x))
(19)设intk=7,x=12;则能使值为3的表达式是_____。
A.x%=(k%=5)B.x%=(k-k%5)
C.x%=k-k%5 D.(x%=k)-(k%=5)
(20)设有语句:
inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()。
A.2.500000 B.2.750000C.3.500000D.0.000000
(21)设有语句intx=3,y=4,z=5;则下面表达式中值为0的是()。
A.’x’&&’y’B.x<=y
C.x||y+z&&y-zD.!
((xz | |1)
(22)表达式18/4*sqrt(4.0)/8值的数据类型为()。
A.int B.float C.double D.不确定
(23)判断char型变量n是否为小写字母的正确表达式为( )。
A.’a’<= n <=’z’B.(n>=a)&&(n<=z)
C.(’a’>=n)||(’z’<=n) D.(n>=’a’)&&(n<=’z’)
2. 填空题
(1) “A”与‘A’的区别是:
前者表示的是__________,占用______个内存空间,后者表示的是_________,占用_______个内存空间。
(2)表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))值的数据类型为_________。
(3)已知c的ASCII码为十进制数99,设k为字符型变量,则表达式k=‘c’+‘9’-‘8’的值为________。
(4)设有说明语句inta=6;,则运算表达式a+=a-=a*a后,a的值为_______。
(5)C++表达式表达:
y=ax2+bx+c_________________,5x3+9xy/5-xy______________。
(6)设a、b、c都是int型变量,则运算表达式a=(b=4)+(c=2)后,a值为_____,b值为______,c值为______。
(7)C++语言中的标识符只能由三种字符组成,它们是________,_______和_______。
(8)有语句:
char k=‘\010’;则变量k中包含的字符个数是_____。
(9)在C++语言中,表示逻辑“真”值用_____________。
(10)表达式pow(2.8,sqrt(double(x)))值的数据类型为_________。
(11)设m是一个三位数,从左到右用a、b、c表示各位是数字,则从左到右各个数字是cba的三位数的表达式是_________________________。
(12)设有语句int a=3,b=4,c=5;则表达式:
!
(a+b)+c-1&&b+c/2的值为______,表达式a|| b+c&&b= =c的值为______。
(13)请写出判断整型变量x为偶数且不小于100的表达式:
______________________。
3.编程题
(1)用C++语言写出下列要求的表达式:
①判断char型变量ch是否为大写字母。
②设y为int变量,判断y是否为奇数。
③设x、y、z都为int型变量,描述“x或y中有一个小于z”。
④设x、y、z都为int型变量,描述“x、y和z中有两个为负数”。
(2)编写一个程序,从键盘输入两个整型的数,在屏幕上分别输出这两个数的和、差和积。
(3)编写一个程序,从键盘输入两个数,分别求出这两个数的平方和和立方和,在屏幕上予以输出。
(4)编写程序,从键盘输入某一字母的ASCII码,如:
97(字母a),98(字母b),65(字母A)等,在屏幕上输出给字母。