第2章 C++语言基础.docx

上传人:b****8 文档编号:12861357 上传时间:2023-06-08 格式:DOCX 页数:66 大小:66.90KB
下载 相关 举报
第2章 C++语言基础.docx_第1页
第1页 / 共66页
第2章 C++语言基础.docx_第2页
第2页 / 共66页
第2章 C++语言基础.docx_第3页
第3页 / 共66页
第2章 C++语言基础.docx_第4页
第4页 / 共66页
第2章 C++语言基础.docx_第5页
第5页 / 共66页
第2章 C++语言基础.docx_第6页
第6页 / 共66页
第2章 C++语言基础.docx_第7页
第7页 / 共66页
第2章 C++语言基础.docx_第8页
第8页 / 共66页
第2章 C++语言基础.docx_第9页
第9页 / 共66页
第2章 C++语言基础.docx_第10页
第10页 / 共66页
第2章 C++语言基础.docx_第11页
第11页 / 共66页
第2章 C++语言基础.docx_第12页
第12页 / 共66页
第2章 C++语言基础.docx_第13页
第13页 / 共66页
第2章 C++语言基础.docx_第14页
第14页 / 共66页
第2章 C++语言基础.docx_第15页
第15页 / 共66页
第2章 C++语言基础.docx_第16页
第16页 / 共66页
第2章 C++语言基础.docx_第17页
第17页 / 共66页
第2章 C++语言基础.docx_第18页
第18页 / 共66页
第2章 C++语言基础.docx_第19页
第19页 / 共66页
第2章 C++语言基础.docx_第20页
第20页 / 共66页
亲,该文档总共66页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第2章 C++语言基础.docx

《第2章 C++语言基础.docx》由会员分享,可在线阅读,更多相关《第2章 C++语言基础.docx(66页珍藏版)》请在冰点文库上搜索。

第2章 C++语言基础.docx

第2章C++语言基础

第2章C++语言基础

2.1知识要点

1.掌握常量和变量的概念。

2.掌握整型数据和实型数据、字符型数据和字符串型数据的概念和区别。

3.掌握各种类型的变量说明及其初始化。

4.掌握算术运算、关系运算、逻辑运算、赋值运算、逗号运算、条件运算等概念。

5.掌握运算符的优先级、左结合和右结合规则。

6.掌握表达式求值时的自动转换和强制类型转换。

7.掌握自加、自减运算的规则。

8.掌握常用数学函数的功能。

9.掌握一维和二维数组的定义、初始化方法以及数组元素的引用方法,了解其存储结构。

10.掌握有关一维和二维数组的基本算法。

11.掌握字符数组的定义、元素的引用方法和字符数组的初始化方法。

12.掌握C++提供的对字符串进行处理的基本函数。

13.掌握指针、地址、指针类型、空指针(NULL)等概念;

 14.掌握指针变量的定义和初始化、指针的间接访问、指针的加减运算、指针变量比较运算和指针表达式;

 15.掌握指针与数组、函数、字符串等的联系;

16.掌握动态空间操作(new,delete);

 17.掌握引用参数的使用。

2.2数据类型与表达式部分习题分析与解答

1.1. 选择题

例题1:

运算符+、=、*、>=中,优先级最高的运算符是()。

A.+B.=C.*D.>=

答案:

C

分析:

根据C++语言对运算符优先级的规则,以上运算符优先级从低到高的次序为=、>=、+、*。

 

例题2:

下列说法正确的是()。

A.cout<<”\n”是一个语句,它能在屏幕上显示”\n”

B.\68代表的是字符D。

C.1E+5的写法正确,它表示余割整型常量。

D.0x10相当于020。

答案:

D

分析:

分号是语句的已部分,且\n是转义字符;\68代表了八进制的6、8,而八进制中没有数字8;1E+5是实型常量;十六进制的10相当于十进制的16,相当于八进制的20。

 

例题3:

下列不合法的变量名为()。

A.intB.int1C.name_1D.name0

答案:

A

 

分析:

根据变量名命名要求,变量名只能由大小写字母、数字、下划线组成,且系统关键字不能作为变量名。

 

例题4:

下面正确的为()。

A.4.1/2B.3.2%3

C.3/2==1结果为1D.7/2结果为3.5

答案:

A

分析:

%运算符要求式整型;关系运算值为0;两个整数相除,商为为相除后的整数部分。

 

例题5:

已知a=4,b=6,c=8,d=9,则“(a++,b>a++&&c>d)?

++d:

a

A.9B.6C.8D.0

答案:

D

分析:

此题是考察“++”运算符、逗号运算符、条件运算符及它们运算优先级的综合题,根据这些运算符的运算规则,得出表达式的运算结果。

 

例题6:

已知i=5,j=0,下列各式中运算结果为j=6的表达式是()。

A.j=i+(++j)B.j=j+i++C.j=++i+jD.j=j+++i

答案:

C

分析:

自增++、自减运算符在变量的前面或后面,其运算结果是不同的。

若++或—在变量前,则先将变量的值加1(或减1)后,再将变量的值参与运算;反之则先将变量的值参加运算,再将变量的值加1(或减1)。

自增++、自减运算符优先级高于算术运算符。

 

例题7:

已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<’B’&&!

y)的值是()。

A.0B.语法错C.1D.“假”

分析:

根据C++语言中运算符优先级的高低,“!

”运算符最高,关系运算符高于逻辑运算符。

则上面的表达式转换为:

1&&1&&1,结果为1。

答案:

C。

 

2.2. 填空题

例题8:

如果s是int型变量,且s=6,则下面s%2+(s+1)%2表达式的值为____。

答案:

1

分析:

%运算符是求余运算,得到的结果是相除后的余数。

表达式转换为6%2+(6+1)%2=0+7%2=1。

 

例题9:

如果定义inta=2,b=3;floatx=5.5,y=3.5;则表达式(float)(a+b)/2+(int)x%(int)y的值为_____。

答案:

4.5

分析:

不同类型的数据混合运算时,可以使用强制类型转换符,强制将一种数据类型转换为另一种数据类型后再进行运算。

对表达式,先求表达式的值,再转换值的类型,本题的运算结果为4.5。

 

例题10:

设所有变量均为整型,则表达式(e=2,f=5,e++,f++,e+f)的值为____。

答案:

9

分析:

逗号运算符是是将两个或多个表达式组合成一个表达式的运算符。

求解时从左至右依次计算每个表达式的值,整个表达式的值就是最右边的表达式的值。

本题的答案为9。

 

例题11:

已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=’a’+’8’-‘4’的值为____。

答案:

e

分析:

C++语言中,对字符数据进行算术运算,实际上就是对字符的ASCII码进行运算。

以字符形式输出时,再将ASCII码转换为相应的字符输出。

本题表达式为ch=97+8-4=101,101相应的ASCII为字符e。

 

3.3. 编程题

例题12:

编写一个程序,从键盘输入半径和高,输出圆柱体的底面积和体积。

解:

程序如下:

#include

voidmain()

{

doubler,h,area,volume;

cout<<”请输入半径:

”;

cin>>r;

cout<<”请输入高:

”;

cin>>h;

area=3.14*r*r;

volume=area*h;

cout<<”底面积是:

”<

cout<<”体积是:

”<

}

2.3数据类型与表达式部分教材习题分析与解答

1.1.    C++语言中有哪些数据类型?

分别说明它们的类型关键字、取值范围、类型长度。

答:

C++语言中的数据类型有:

整型(短整型,整型,长整型);字符型;逻辑型;枚举型;实型(单精度,双精度,长双精度);引用型(指针,引用);复合型(结构,联合);空类型。

2.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.switchB.fileC.breakD.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,1C.1,0D.1,1

答案:

C

 

(7)字符串”vm\x43\\\np\102q”的长度是()。

A.8B.10C.17D.16

答案:

A

(8)在C++语言中,自定义的标识符()。

A.能使用关键字并且不区分大小写B.不能使用关键字并且不区分大小写

C.能使用关键字并且区分大小写D.不能使用关键字并且区分大小写

答案:

D

 

(9)设有代码“inta=5;”,则执行了语句“a+=a-=a*a;”后,变量a的值是()。

A.3B.0C.-40D.–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和0xa1C.986.012和0667D.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!

=10bool(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/3float(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.02.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)+633.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)/10004.700000(18)a+rand()%40某一个随机整数

(19)a%=n%=2),n=55

此题运行时要给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>01

(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++语言提供了三种逻辑运算符:

,&&,||,其中!

逻辑非的优先级最高,&&逻辑与次之,||逻辑或最低。

逻辑非是右结合性,&&逻辑与和||逻辑或是左结合性。

2.4数据类型与表达式部分补充习题

1.1.      选择题

(1)C++语言中的标识符只能右字母、数字和下划线三种字符组成,且第一个字符()。

A.必须为字母B.必须为下划线

C.必须为字母或下划线D.可以是字母、数字和下划线中任一中字符

 

(2)下面正确的字符常量是()。

A.“C”B.‘\\’’C.‘W’D.‘’

 

(3)如果说明语句:

charc=‘\72’;则变量c()。

A.包含1个字符B.包含2个字符

C.包含3个字符D.说明不合法,c的值不确定

 

(4)表达式18/4*sqrt(4.0)/8值的数据类型为()。

A.intB.floatC.doubleD.不确定

 

(5)关于逻辑运算符的说法正确的是()。

A.它们都是双目运算符,优先级相同

B.语句“inta=0,c=1,b;b=a&&c++;”执行后,c的值为2

C.语句“inta=0,c=1,b;b=a||c++;”执行后,c的值为2

D.语句“inta=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.tureB.flaseC.0D.1

 

(9)下面四个选项中,均是不合法的标识符的是()。

A.BB.forC.cinD.if

B_11a0a_btemp

cout_a10intb-a

 

(10)设变量a是整型,b是实型,c是双精度型,则表达式10+‘a’+c*b值的数据类型为()。

A.intB.floatC.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/cC.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.26C.40D.46

 

(17)设有:

inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c

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%5D.(x%=k)-(k%=5)

 

(20)设有语句:

inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()。

A.2.500000B.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.!

((x

z||1)

 

(22)表达式18/4*sqrt(4.0)/8值的数据类型为()。

A.intB.floatC.doubleD.不确定

 

(23)判断char型变量n是否为小写字母的正确表达式为()。

A.’a’<=n<=’z’B.(n>=a)&&(n<=z)

C.(’a’>=n)||(’z’<=n)D.(n>=’a’)&&(n<=’z’)

 

2.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)有语句:

chark=‘\010’;则变量k中包含的字符个数是_____。

(9)在C++语言中,表示逻辑“真”值用_____________。

(10)表达式pow(2.8,sqrt(double(x)))值的数据类型为_________。

(11)设m是一个三位数,从左到右用a、b、c表示各位是数字,则从左到右各个数字是cba的三位数的表达式是_________________________。

(12)设有语句inta=3,b=4,c=5;则表达式:

!

(a+b)+c-1&&b+c/2的值为______,表达式a||b+c&&b==c的值为______。

(13)请写出判断整型变量x为偶数且不小于100的表达式:

______________________。

 

3.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)等,在屏幕上输出给字母。

2.5函数部分典型例题分析与解答

例题1:

关于函数的调用下面不正确的是()。

A.A. 由于程序总是从主函数开始,所以函数的调用总是在主函数和其他函数之间进行

B.B. 函数的调用可以在任意函数之间进行,只要有需要

C.C. 一个函数可以自己调用自己

D.D. 函数返回时可以不必带返回值,这时函数在定义时其类型应用void表示

答案:

A

分析:

因为在C++中程序从主函数开始是正确的,但并未规定函数的调用只能发生在主函数和其他函数之间。

 

例题2:

关于函数的声明和定义正确的是()。

A.A. 函数的声明是必须的,只有这样才能保证编译系统对调用表达式和函数之间的参数进行检测,以确保参数的传递正确

B.B. 函数的定义和声明可以合二为一,可以只有函数定义即可

C.C. 函数在声明时,其参数标识符可省略,但参数的类型、个数与顺序不能省略

D.D. 函数的存储类型为外部型,所以可以在其他函数中被调用,它在定义时象其他外部变量一样,可以在其他函数内定义

答案:

C

分析:

函数的声明并非必须,可以只要函数定义而不要声明,但要注意符合一定条件,函数不可嵌套定义。

 

例题3:

在函数的返回值类型与返回值表达式的类型的描述中,错误的是()。

A.A. 函数返回值的类型是在定义函数时确定,在函数调用时是不能改变的

B.B. 函数返回值的类型就是返回值表达式的类型

C.C. 函数返回值表达式类型与返回值类型不

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2