我是靠谱客的博主 动听星星,这篇文章主要介绍C++基础(二) 基本数据类型与数值表达式,现在分享给大家,希望可以做个参考。

第2章 基本数据类型与数值表达式

2.1 知识要点

计算机的基本功能是进行数据处理。在C++语言中,数据处理的基本对象是常量和变量。运算是对各种形式的数据进行处理。数据在内存中存放的情况由数据类型所决定。数据的操作要通过运算符实现,而数据和运算符共同组成了表达式。本章是对C++语言中的数据类型、运算符、表达式等内容的全面介绍,要正确理解其特点,并灵活运用,主要掌握以下的知识要点:

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

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

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

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

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

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

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

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

2.2 典型例题分析与解答

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.int         B.int1       C.name_1         D.name0

答案:A

 

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

 

例题4:下面正确的为(    )。

A.4.1/2                     B.3.2%3

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

答案:A

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

 

例题5:已知a=4,b=6,c=8,d=9,则“(a++,b>a++&&c>d)?++d:a<b” 值为(    )。

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

答案:D

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

 

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

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

答案:C

分析:自增++、自减运算符在变量的前面或后面,其运算结果是不同的。若++或—在变量前,则先将变量的值加1(或减1)后,再将变量的值参与运算;反之则先将变量的值参加运算,再将变量的值加1(或减1)。自增++、自减运算符优先级高于算术运算符。

 

例题7:已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<’B’&&!y)的值是(    )。

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

分析:根据C++语言中运算符优先级的高低,“!”运算符最高,关系运算符高于逻辑运算符。则上面的表达式转换为:1&&1&&1,结果为1。

答案:C。

 

2.  填空题

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

答案:1

分析:%运算符是求余运算,得到的结果是相除后的余数。表达式转换为6%2+(6+1)%2=0+7%2=1。

 

例题9:如果定义int a=2,b=3;float x=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.  编程题

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

解:程序如下:

#include<iostrean.h>

void main()

{

  double r, h, area, volume;

  cout<<”请输入半径:”;

  cin>>r;

  cout<<”请输入高:”;

  cin>>h;

  area=3.14*r*r;

  volume=area*h;

  cout<<”底面积是: ”<<area<<endl;

  cout<<”体积是: ”<<volume<<endl;

}

2.3 教材习题分析与解答

1.     C++语言中有哪些数据类型?分别说明它们的类型关键字、取值范围、类型长度。

答:C++语言中的数据类型有:整型(短整型,整型,长整型);字符型;逻辑型;枚举型;实型(单精度,双精度,长双精度);引用型(指针,引用);复合型(结构,联合);空类型。

2.     字符常量与字符串常量的区别是什么?

答:字符常量与字符串常量的主要区别在于:(1)定界符不同。字符常量使用单引号,而字符串常量使用双引号。(2)长度不同。字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数。(3)存储要求不同。字符常量存储的是字符的ASCII码值,而字符串常量除了要存储有效的字符外,还要存储一个结束标志’/0’。

 

3.说明下面的每个数据各属于哪一种(数值常量、字符常量、字符串、标识符、保留字、运算符、标点、非法数据)?

      25       18        -3.67         12.8         “4”        ‘4’

      x1       “x2”       “1949.10”     cin                  K_name

      3ab      “float  x ,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

运算符:+

标点:?

非法数据:“float  x ,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.file        C.break           D.do 

答案:B

 

 (4)  运算符 +、<=、=、% 中,优先级最低的运算符是(   )。

A. +          B.<=         C.=              D.%

答案:C

 

 (5) 下列字符列中,可以作为“字符串常量”的是( )。

 A. ABC       B.″xyz″     C.′uvw′          D. ′a′

答案:B

 

 (6)  设变量m,n,a,b,c,d均为0,执行(m = a==b)||(n=c==d)后,m,n的值是(  )。

 A.0,0        B. 0,1        C. 1,0         D. 1,1

答案:C

 

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

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

答案:A

 

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

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

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

答案:D

 

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

A.3             B. 0          C. -40         D. –12

答案:C

 

(10)设a为5,执行下列代码后,b的值不为2的是(   )。

A. b = a/2                    B. b = 6-(--a)

C. b = a%2                   D. b = a < 3 ? 3: 2

答案:C

 

(11)下面的( )均是C语言的整型常量。

A.0xffff 和 611    B.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/3        int                (2) 48L           long

(3) 5 % 3     int                (4) x*3/y         double

(5) ‘x’+20    int                (6) (int )y          int

(7) y != 10    bool               (8)  x<1 || x>10   bool

(9) x>10 ? x : sqrt (x)  int或float   (10) x && y       bool

(11) true     bool                (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/4   x=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)y   a=2,b=3,x=3.5,y=2.5

答:上述表达式=(float)5/2+3%2 = 2.5+1 = 3.5

 

7.设程序中有说明语句

int a=20;     double x=4.7;    char r= ’a’;

试求出下列每个表达式的值(假定各表达式互不影响)。~

                   答案                                  答案

      (1)a++            20                     (2) ++r                  98

(3) 1+a/3%4          3                      (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)/1000  4.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 * = a       0

说明:函数ceil(x),返回大于等于x的最小整数;floor(x),返回小于等于x的最大整数;rand(),返回0~32767之间的整数。

 

8.设程序中有说明语句

int x=20;     float y=4.7;    char ch = ’k’;

试求出下列每个表达式的值(假定各表达式互不影响)

                 答案                                   答案

(1) x==0              0               (2) x!=y                1

(3) x++ >21           0               (4) ‘a’ == ‘A’           0

(5) ch != 0           1               (6) x>0 && y>0          1

(7) x>0 && 1          1               (8) y>0 && 0            0

(9) !(x||y)==!x&&!y   0               (10) x++ !=20 || y      1

(11) !! ch==ch        0               (12) !(x&&y)==!x||!y    1

说明:C++语言提供了三种逻辑运算符:!,&&,||,其中!逻辑非的优先级最高,&&逻辑与次之,||逻辑或最低。!逻辑非是右结合性,&&逻辑与和||逻辑或是左结合性。

2.4 补充习题

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.float         C.double         D.不确定

 

(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)设 int m=7,n=12;则表达式为3的是(    )。

  A.n%=(m%=5)             B.n%=(m-m%5)

C.n%=m-m%5             D.(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)有如下程序段:

   int a=14,b=15,x;

   char c=’A’;

   x=(a&&b)&&(c<’B’);

  执行该程序后,x的值为(    )。

  A.ture        B.flase        C.0          D.1

 

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

  A.B         B.for          C.cin        D.if

B_1          1a0              a_b          temp

cout          _a10             int           b-a

 

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

  A.int         B.float         C.double         D.不确定

 

(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*5       B.5*a*e/b/c       C.5*a*e/b*c       D.a*e/c/b*5

 

(15)下列运算符中优先级最高的是(    )。

  A.?:         B.&&           C.+            D.!=

 

(16)设a是整型变量,则表达式(a=4*5,a*2),a+6的值是(    )。

  A.20           B.26            C.40           D.46

 

(17)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c<d)后n的值为(    )。

  A.1            B.2             C.3            D.4

(18)用C++的语言表达式表示 |x3+log10x|的正确是(    )。

  A.fabs(x*3+log(x))                 B.abs(pow(x,3)+log(x))

C.f abs(pow(x,3.0)+log(x))       D.abs(pow(x,3.0)+log(x))

 

(19)设int k=7,x=12;则能使值为3的表达式是_____。

  A.x%=(k%=5)               B.x%=(k-k%5)

C.x%=k-k%5                   D.(x%=k)-(k%=5)

 

(20)设有语句:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是(    )。

  A.2.500000        B.2.750000        C.3.500000        D.0.000000

 

(21)设有语句int x=3,y=4,z=5;则下面表达式中值为0的是(    )。

  A.’x’&&’y’                  B.x<=y

  C.x||y+z&&y-z               D.!((x<y)&& !z | | 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)设有说明语句 int a=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)等,在屏幕上输出给字母。

最后

以上就是动听星星最近收集整理的关于C++基础(二) 基本数据类型与数值表达式的全部内容,更多相关C++基础(二)内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(238)

评论列表共有 0 条评论

立即
投稿
返回
顶部