基本数据类型与数值表达式
- 格式:doc
- 大小:62.00 KB
- 文档页数:13
基本数据类型与数值表达式 一、知识要点 计算机的基本功能是进行数据处理。在C++语言中,数据处理的基本对象是常量和变量。运算是对各种形式的数据进行处理。数据在内存中存放的情况由数据类型所决定。数据的操作要通过运算符实现,而数据和运算符共同组成了表达式。本章是对C++语言中的数据类型、运算符、表达式等内容的全面介绍,要正确理解其特点,并灵活运用,主要掌握以下的知识要点:
1.掌握常量和变量的概念。 2.掌握整型数据和实型数据、字符型数据和字符串型数据的概念和区别。 3.掌握各种类型的变量说明及其初始化。 4.掌握算术运算、关系运算、逻辑运算、赋值运算、逗号运算、条件运算等概念。 5.掌握运算符的优先级、左结合和右结合规则。 6.掌握表达式求值时的自动转换和强制类型转换。 7.掌握自加、自减运算的规则。 8.掌握常用数学函数的功能。 二、例题分析与解答 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:aA.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 void main() { double r, h, area, volume; cout<<”请输入半径:”; cin>>r; cout<<”请输入高:”; cin>>h; area=3.14*r*r; volume=area*h; cout<<”底面积是: ” 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’; 试求出下列每个表达式的值(假定各表达式互不影响)。~