C++程序设计基础第4版习题解答.pdf
《C++程序设计基础第4版习题解答.pdf》由会员分享,可在线阅读,更多相关《C++程序设计基础第4版习题解答.pdf(140页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 C+程序设计基础(第 4 版)(上)习题与解答第 1 章 基本数据与表达式1.1选择题1 4.关于下列语句,叙述错误的是(A )01.一个最简单的C+程序,可以只有一个(C(A)库函数(B)自定义函数(C)ma in函数(D)空函数2.用C+语言编写的源程序要成为目标程序必须要经过(D )o(A)解释(B)汇编(C)编辑(3.C+程序中的简单语句必须以(B)结束。(A)冒号(B)分号(C)空格(14.假设有说明int a=O;d ou b le x=5.1 6;,则在以下语句中,(C)属于编译错误。(A)x=a/x;(B)x=x/a;(C)a=a%x;(D)x=x*a;5.执行C+程序时出现
2、的“溢出”错误属于(C)错误。(A)编译(B)连接(C)运行(D)逻辑6.在下列选项中,全部都是C+关键字的选项为(C)。(A)while I F S t a t ic (B)b re a k c ha r go(C)s ize of c a s e e xt e rn(D)s wit c h floa t i i it e ge r7.按C+标识符的语法规定,合法的标识符是(A )o(A)_ a b c (B)ne w(C)n(D)a gcM8.在C二语句中,两个标识符之间(A )不能作为C+的分隔符。(A)数字(B);(C):(D)+9.下列正确的八进制整型常量表示是(B)o(A)O a
3、O (B)0 1 5 (C)0 8 0(D)0 x1 01 0.下列错误的十六进制整型常量表示是(C)。(A)0 x1 1 (B)O xa f(C)O xg(D)O xlf1 1.在下列选项中,全部都合法的浮点型数据的选项为(B)0(A)-le 3.5 1 5.2 e-4(B)1 2.34-le+50.1 E-1 2(C)0.2 e-2 -1 2 345.e-5 (D)5.0 e (1+4)0.1 8 e+21 2.在下列选项中,正确的字符常量为(D )o(A)V (B),na me (C)a(D)M O I11 3.在下列选项中,(D )不能交换变量a和b的值。(A)t=b;b=a;a=t;
4、(B)a=a+b;b=a-b;(C)t=a;a=b;b=t;(D)a=b;b=a;a=a-b;编译花括号int i=1 0 *p=&i;(A)p 的值为1 0 (B)p 指向整型变量i(C)*p表示变量i的值(D)p 的值是变量i的地址1 5.有以下变量说明,下面不亚砚的赋值语句是(Bint a=5,b=1 0,c;int *pl=&a,*p2 =&b;(A)*p2 =b;(B)pl=a;(C)p2 =pl;(D)c =*pl*(*p2);1 6.有以下变量说明,下面正确的语句是(B),int a=1 0,b;int&pa=a,&pb=b;(A)&pb =a;(B)pb =pa;(C)pb =
5、&pa;(D)*pb =*pa;1 7.执行下面语句序列后,a 和 b的值分别为(B)oint a=5,b=3,t;int&ra=a;int&rb=b;t=ra;ra=rb;rb=t;(A)3 和 3(B)3 和 5 (C)5 和 3(D)5 和 51 8.在下列运算符中,(D )优先级最高。(A)=(B)*=(C)+(D)*1 9.在下列运算符中,(D )优先级最低。(A)!(B)&(C)!=(D)?:2 0.已知int i=l,j=2;,则表达式i+j的值为(C)。(A)1 (B)2 (C)3(D)42 1.已知int i=l,j=2;,则表达式 H i+j的值为(D )o(A)1 (B)
6、2 (C)3(D)42 2.在下列表达式选项中,(C)是正确。(A)+(a+)(B)a+b (C)a”H-+b (D)a+b2 3.已知int i=0,j=l,k=2;,则逻辑表达式+i|j&+k的值为(B)。(A)0 (B)1 (C)2(D)32 4.执行下列语句后,x 的值是(D ),y 的值是()oint x,y;X=y=l;-H-x|+y;(A)不确定(B)0 (C)1(D)22 5.设 x 为整型变量,不用正确表达数学关系lx V5的C+逻辑表达式是(A)o(A)l x 5 (B)x=2|x=3|x=4(C)l x&x 5 (D)!(x=5)2 6.己 知 int x=5;,执行下列
7、语句后,x 的值为(C)。x+=x-=x*x;(A)2 5 (B)40 (C)-40(D)2 02 7.设 int a=l,b=2,c=3,d=4;,则以下条件表达式的值为(Aa b?a:c d?c:d(A)1 (B)2 (C)3(D)42 8.以下逗号表达式的值为(D(x=4*5,x*5),x+2 5(A)2 5 (B)2 0 (C)1 0 0(D)451.2 根据下列数学表达式写出C+算术表达式I.!x+y2.x xx(ax+b)+c+e4.l+|cos480I _/5.cot-r 6.lg(a2+ab+b2)(1+门【解答】1.1/(1+1/(1+l/(x+y)2.x*(x*(x*(a*
8、x +b)+c)+d)+e3.Iog(1 +pow(fabs(a+b)/(a-b),10)4.sqrt(1 +3.14159/2*cos(48*3.14159/180)5.l/tan(1 -x*x)/(1 +x*x)或者 cos(1 -x*x)/(1 +x*x)/sin(1 -x*x)/(1 +x*x)6.log 10(a*a+a*b +b*b)1.3 用逻辑表达式表示下列条件1.i被j整除 2.是小于正整数人的偶数3.lx10 4.人y其中有一个小于z5.-100,-10,并且 yw 10,1006.坐 标 点(x,y)落在以(10,2 0)为圆心,以35为半径的圆内7.三条边m 和c构成三
9、角形8.年份Year能被4整除,但不能被100整除,或者能被400整除【解答】1.i%j=0 2.(nk)&(n%2=0)3.l=x&x10 4.xz|y=-100&y=10&y=100)6.sqrt(pow(x-10),2)+pow(y-20),2)c&b+ca&c+ab8.(year%4=0)&(year%100!=0)|(year%400=0)1.4 阅读下列程序,写出运行结果1.#include using namespace std;int main()int a=1,b=2;bool x,y;cout(a-H-)+(-H-b)endl;cout a%b endl;x=!ab;y=a
10、-&b;cout x endl;cout y endl;)【解答】42012.#include using namespace std;int main()int x,y,z,x=y=z=1;f=-x|y-&z-H-;cout x=M x cndl;cout y=M y endl;cout z=M z endl;cout Hf=H f endl;【解答】x=0y=0z=2fM3.#include#includeusing namespace std;int main()int a=123;int&ra=a;int*pa=&a;coutsctw(5)decasct w(5)octraset w(
11、5)hcx*pacndl;【解答】123 173 7b1.5思考题1.什么是数据类型?变量的类型定义有什么作用?【解答】数据“类型”是对数据的抽象。类型相同的数据有相同的表示形式、存储格式以及相关的操作。定义一个变量时,计算机根据变量的类型分配存储空间,并以该类型解释存放的数据。2.普通数据类型变量和指针类型变量的定义、存储和使用方式有何区别?请编写一个程序验证之。【解答】变量类型定义存储使用方式数据类型标识符数据值通过名访问即直接访问对变量内容操作指针类 型*标识符地址值通过指针变量的地址值间址访问对象验证程序:#includeusing namespace std;int main()in
12、t a,b,c;coutMa,b,c=;cin a b c;对普通数据类型变量赋值int*pa=&a,*pb=&b,*pc=&c;用变量地址值初始化指针变量couta,b,c=a ,b ,cendl;/名访问,输出a,b,c的值coutpa,pb,pc=pa,pb,pcendl;输出指针变量的地址值 间 址访问,输出pa,pb,pc指向的变量的赋值cout*pa,*pb,*pc=*pa,*pb,*pcendl;)3.什么是数据对象的引用?对象的引用和对象的指针有什么区别?请用一个验证程序说明之。【解答】引用是为数据对象定义别名。引用与指针有以下几点区别:(1)引用名不是内存变量,而指针变量要开
13、辟内存空间。(2)引用名需要在变量定义与变量名绑定,并且不能重定义;指针变量可以在程序中赋给不同的地址值,改变指向。(3)程序中用变量名和引用名访问对象的形式和效果一样;指针变量通过间址访问对象。验证程序:#includeusing namespace std;int main()int a;coutMa-;cina;int ra=a;int*pa=&a;coutna 的值:Maendl;coutMa 的地址:n&aendl;coutMra 的值:Mraendl;coutMra 的地址:&raendl;coutMpa所指向的变量的值:*paendl;coutMpa 的地址:vvpavvendl
14、;)4.数据对象在C+中有儿种不同的访问方式?请 编 写 个程序验证之。【解答】数据对象在C+中的访问方式有:验证程序:#includeusing namespace std;int main()int a;couta=;cina;a=a+5;cout&aendl;cout*(&a)endl;int*pa=&a;cout*paendl;int&ra=a;coutraendl;名访问,引 用(别名)访问,间址访问。名访问/输出变量地址地址访问,输出变量值说明指针变量,指向变量a间址访问,输出变量值 ra是a的引用 引用访问,输出变量a的值5.为了约束对数据对象的值进行只读操作,C什采用什么方式?
15、请进行简要归纳。【解答】约束数据对象只读形式如下:约束对象说明形式标识常量const类型常量标识符=常量表达式;指针常量类型*const m;指向常量的指针const类 型*指针;或者 类 型 const 指针;指向常量的指针常量const类 型 const指针;或者 类 型 const*const指针;常引用const类 型&引用名=对象名;6.什么是表达式?表达式值的类型由什么因素决定?使用不同运算符连接以下3个变量,请 写 出5个以上获得值为true的表达式。int a=l,b=2;double x=0.5;【解答】表达式是由数据和运算符,按求值规则,表达个值的式子。表达式值的类型的决定
16、因素为操作数的类型。(1)如果运算符左右操作数类型相同,运算结果也是相同类型。(2)如果运算符左右操作数类型不同,首先把类型较低(存储要求,示数能力较低)的数据转换成类型较高的数据,然后运算。(3)赋值表达式的类型由被赋值变量的类型决定。当把一个表达式的值赋给一个变量时,系统首先强制把运算值转换成变量的类型,然后执行写操作。6个值等于true的表达式:(1)ba&ax(2)(a+b)!=x(3)a|(b+x)(4)a=(b*x)(5)a-bx(6)(a/x=b)7.阅读以下程序,分析下面语句序列中每个字符“*”和 的 含 义,并写出输出结果#include using namespace st
17、d;int main()(inta=10,b=20;int*p=&a,*q=&b;*p=*p*q;int&ra=a;ra=a;int*&rt=q;*rt=30;couta=,a ,nb=b,n*p=*p,n*q=,*q,nra=,r a Mn*rt=,*rtendl;)【解答】字符”和的意义见程序中添加的注释。#include using namespace std;int main()(int a=10,b=20;int*p=&a,*q=&b;*”是指针类型说明符,是取址运算符*p=*p*q;第1、2、4个“*”是间址访问符,第3个“”算术乘运算符int&ra=a;/&”是引用说明符ra=a
18、;int*&rt=q;/*”是指针类型说明符,是引用说明符*rt=30;/“*”是间址访问符输出语句中的是间址访问符cout,a=,a,nb=,b,n*p=,*pn*q=,*q,nra=M r a,n*rt=M*rtendl;程序输出结果为:a=200b=30*p=200*q=30ra=200*rt=301.6 编程题1 .输入一个3位整数,将它反向输出。【解答】#include using namespace std;int main()int x,ij,k;cout please input x:*;cin x;i=x/IOO;j=x/10%10;k=x%10;cout k j i end
19、l;2.输入平面上某点横坐标x和纵坐标y,若该点位于图1.11所示的方块区域内,则输出1;否则,输出O o【解答】#include using namespace std;int main()double x,y,b;cout ”please input x,y:M;cin x y;b=(-2=x)&(x=2)&(-2=y)&(y=2);cout b endl;3.输入3个整数,求出其中最小数(要求使用条件表达式)。【解答】/include using namespace std;int main()int a,b,c,temp,min;cout please input a,b,c:;cin
20、 a b c;temp=(ab)?a:b;min=(temp=0)if(x =O)y =O;e l s e y=-1;(C)if(x =0)if l;x O)y =-l;e l s e y=0;3.e l s e y=1;假设i=2,执行下列语句后i的值为(B)if(x=y)i+;(D)if(!x )i+;x 0)y=1;e l s e y=0(D)y=-l;if f x =0)i f(x 0)y =-l;e l s e y=0;(B )os w it c h(i)c as e 1:i +;c as e 2:i ;c as e 3 :-H-i;b r e ak;c as e 4 :i;d e
21、f au l t:i -H-;)(A)1(B)2(C)3 (D)4D)o4.J知imi=0,x=0;,在下面w hil e语句执行时循环次数为w hil e(!x&i 3 )x+;i+;(A)4 (B)3 (C)2(D)15 .已知int i=3;,在下面d o_w hil e语句执行时的循环次数为(Bd o i;c ou t i e nd l;(w hil e (i!=1);(A)1 (B)2(C)3 (D)无限6.下 面f b r语句执行时的循环次数为(Bint i,j;f b r(i=0,j=5;i=j;)c ou t ij nd l;i+;j-;(A)0(B)5 (C)10(D)无限7
22、 .以下程序段形成死循环的是(B )。(A)int x;f b r(x=0;x=0);(C)int a=5;w hil c(a)a;(D)int i=3;for(;i;i-);2.2 阅读下列程序,写出运行结果#includeusing namespace std;int main()(int a,b,c,d,x;a=c=0;b=1;d=20;iRa)d=d-10;elseifl:!b).!c)x=15;else x=25;cout d endl;)【解答】20L#includeusing namespace std;int main()(int a=0,b=1;switch(a)(case
23、0:switch(b)(case 0:coutMa=,a n b=Mbendl;break;case 1 :couta=,a n b=bendl;break;case 1:a-H-;b+;coutvva=va b=Mbendl;)【解答】a=0 b=1a=1 b=23.#includeusing namespace std;int main()(inti=1;while(i=10)(ifl:+i%3!=1 )continue;elsecout i endl;)【解答】47104.#includeusing namespace std;int main()int i=0,j=5;do(i+;j-
24、;if(i3)break;while(j0);cout i=n i cndl j=n j cndl;【解答】i=4 j=l5.#includcusing namespace std;int main()int ij;for(i=l,j=5;ivj;i+)j-;coutifjendl;【解答】3 36.#includeusing namespace std;int main()int i,s =0;f or(i=0;i5;i+)s w it c h(i)(c as e 0:s +=i;b r e ak;c as e 1:s 2 i;b r e ak;c as e 2:s +=i;b r e ak
25、;d e f au l t:s +=2;)c o u t ns=,sen dl;【解答】s=77.#inc l u d e u s ing name s p ac e s t d;int main()int i,j,x =0;f or(i=0;i=3;i+)(X+;f b r(j=0;j=90,B-(90,80,C-(80,70,D-(70,60E-60#includeusing namespace std;int main()char g d;coutMEnter the g rade:H;cing d;直到输入有效等级,否则程序不继续运行while(!(g d=Af&g d=,a&g d=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 基础 习题 解答
限制150内