简单程序设计2-5

更新时间:2023-03-17 11:49:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

简单程序设计

2.1 知识要点

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

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

2.掌握整型数据和实型数据、字符型数据和字符串型数据的概念和区别。 3.掌握各种类型的变量说明及其初始化。

4.掌握算术运算、关系运算、逻辑运算、赋值运算、逗号运算、条件运算等概念。 5.掌握运算符的优先级、左结合和右结合规则。 6.掌握表达式求值时的自动转换和强制类型转换。 7.掌握自加、自减运算的规则。 8.掌握常用数学函数的功能。

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.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

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

例题6:已知i=5,j=0,下列各式中运算结果为j=6的表达式是( )。 A.j=i+(++j) B.j=j+i++ C.j=++i+j D.j=j+++i 答案:C(A、D也对)j+++i相当于(j++)+i

分析:自增++、自减运算符在变量的前面或后面,其运算结果是不同的。若++或—在变量前,则先将变量的值加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. 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. 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.3 教材习题分析与解答

1. 1. C++语言中有哪些数据类型?分别说明它们的类型关键字、取值范围、类型长度。 答:C++语言中的数据类型有:整型(短整型,整型,长整型);字符型;逻辑型;枚举型;实型(单精度,双精度,长双精度);引用型(指针,引用);复合型(结构,联合);空类型。

2. 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‘;

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

y?exy 答案 答案 (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()@ 某一个随机整数 (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++语言提供了三种逻辑运算符:!,&&,||,其中!逻辑非的优先级最高,&&逻辑与次之,||逻辑或最低。!逻辑非是右结合性,&&逻辑与和||逻辑或是左结合性。

本文来源:https://www.bwwdw.com/article/ubaf.html

Top