C++程序设计基础(第4版)(上)习题解答.pdf
《C++程序设计基础(第4版)(上)习题解答.pdf》由会员分享,可在线阅读,更多相关《C++程序设计基础(第4版)(上)习题解答.pdf(139页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 C+程序设计基础(第 4 版)(上)习题与解答第1章基本数据与表达式i.i选择题I .一个最简单的C+程序,可以只有一个(C)。(A)库函数(B)自定义函数(C)m ai n函数(D)空函数2 .用C+语言编写的源程序要成为目标程序必须要经过(D)。(A)解释(B)汇编(C)编辑(D)编译3 .C+程序中的简单语句必须以(B)结束。(A)冒号(B)分号(C)空格(D)花括号4 .假设有说明in t a=0;do u bl e 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)w hil e I F S tatic(B)breakcharg。(C)sizeo f case ex tern(D)sw itchfl o atin teger7.按C+标识符的语法规定,合法的标识符是(A)。(A)_abc(B)n ew(C)71(D)age8.在Cz语句中,两个标识符之间(A)不熊作为C+的分隔符。(A)数字(B);(C)(D)4-9.下列正确的八进制整型常量表示是(B)。(A)O aO (B)0 1 5(C)0 8 0(D)0 x 1 01 0.下列错误的十六
3、进制整型常量表示是(C)o(A)0 x 1 1 (B)O x af(C)O x g(D)O x l f1 1 .在下列选项中,全部都合法的浮点型数据的选项为(B)。(A)-l e3.5 1 5.2 e-4(B)1 2.34-l e+5 0.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)。(A)匕”(B),n am e (C)a(D)M OP1 3.在下列选项中,(D)不熊交换变量a和b的值。(A)t=b;b=a;a=t;(B)a=a+b;b=a-b;a=a-b;(C)t=a;a=b;b=t;
4、(D)a=b;b=a;1 4.关于下列语句,叙述错误的是(A)。int i=10*p=&i;(A)p 的值为10(C)*p表示变量i 的值15.有以下变量说明,下面不正确的赋值语句是(B)p 指向整型变量i(D)p 的值是变量i 的地址(B)oint a=5,b=10,c;int*pl=&a,*p2=&b;(A)*p2=b;(B)pl=a;(C)p2=pl;(D)c=*pl*(*p2);16.有以下变量说明,下面正确的语句是(B)。int a=10,b;int&pa=a,&pb=b;(A)&pb=a;(B)pb=pa;(C)pb=&pa;(D)*pb=*pa;17.执行下面语句序列后,a 和
5、b 的值分别为(B)。int a=5,b=3,t;5 和 3(D)5 和 5int&ra=a;int&rb=b;t=ra;ra=rb;rb=t;(A)3 和 3(B)3 和 5(C)1 8.在下列运算符中,(D)优先级最高。(A)=(B)=(C)+(D)*1 9.在下列运算符中,(D)优先级最低。(A)!(B)&(C)i=(D)?:2 0.已知inti=l,j=2;,则表达式i+j的值为(C)o(A)1 (B)2(C)3(D)42 1.已知inti=l,j=2;,则表达式-H-i+j的值为(D)o(A)1 (B)2(C)3(D)42 2.在下列表达式选项中,(C)是正确。(A)+(a+)(B)
6、a+b(C)(D)a+b2 3.已知 inti=0,j=l,k=2;,则逻辑表达式+i|j&+k(A)0(B)1 (C)的值为(B)。2(D)32 4.执行下列语句后,x 的值是(D),y 的值是()。int x,y;X=y=l;-H-x|+y;(A)不确定(B)0(C)1(D)22 5.设 x 为整型变量,不够正确表达数学关系1VXV 5的C+逻辑表达式是(A)o(A)lx5(B)(C)lx&x5(D)x=2|x=3|x=4!(x=5)2 6.已 知 intx=5;,执行下列语句后,x 的值为(C)ox+=x-=x*x;(A)25(B)40(C)-40(D)202 7.设 inta=l,b=
7、2,c=3,d=4;,则以下条件表达式的值为(A)。ab?a:cd?c:d(A)1 (B)2(C)3(D)42 8.以下逗号表达式的值为(D)c(x=4*5,x*5),x+25(A)25(B)20(C)100(D)451.2 根据下列数学表达式写出C+算术表达式1.-!-2.x xx(axb)+c+d+e1+1 +!x+y5.cot-j6.g(a2-ab+b2)【解答】1.1/(1+1/(1+l/(x+y)2.x*(x*(x*(a*x +b)+c)+d)+e3.log(1 +pow(fabs(a+b)/(a-b),10)4.sqrt(1 +3.14159/2*cos(48*3.14159/18
8、0)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.,被j整除 2.是小于正整数&的偶数3.lx10 4.x、y其中 有 一 -个小于z5.yg-100,-10,并且10,1006.坐标点(x,y)落在以(1 0,2 0)为圆心,以3 5为半径的圆内7.三条边。,和c构成三角形8.年份Year能被4整除,但不能被100整除,或者能被400整除【解答】1.i%j=0 2.(nk)&(n%2=0)3.l=x&x10 4.xz|y=-
9、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-&b;cout x endl;cout y endl;)【解答】42012.#includc using namespace std;int main()i
10、nt x,y,zfx=y=z=1;f=-x|y-&z-H-;cout nx=M X endl;cout y =n y cndl;cout Hz=*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;coutsetw(5)decasct w(5)octraset w(5)h cx *pacndl;【解答】123 173 7b1.5思考题1.什么是数据类型?变量的类型定义有什么作用?【解答】数据“类型”是对数据的抽象。
11、类型相同的数据有相同的表示形式、存储格式以及相关的操作。定义一个变量时,计算机根据变量的类型分配存储空间,并以该类型解释存放的数据。2.普通数据类型变量和指针类型变量的定义、存储和使用方式有何区别?请编写一个程序验证之。【解答】变 量 类 型定义存储使 用 方 式数 据类 型标 识 符通 过 名 访 问 即 直 接 访 问 对 变 量 内 容 操 作指 针类型*标 识 符通 过 指 针 变 量 的 地 址 值 间 址 访 问 对 象验证程序:#includcusing namespace std;int main()int a,b,c;coutMa,b,c=;cin a b c;/对普通数据类
12、型变量赋值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)引用名不是内存变量,而指针变量要开辟内存空间。(2)引用名需要在变量定义与变量名绑定,并且不能重定义;指针变量
13、可以在程序中赋给不同的地址值,改变指向。(3)程序中用变量名和引用名访问对象的形式和效果一样;指针变量通过间址访问对象。验证程序:#includeusing namespace std;int main()int a;coutMa-;cina;int ra=a;int*pa=&a;coutna 的值:Maendl;coutvva 的地址:n&aendl;coutMra 的值:Mraendl;coutMra 的地址:&raendl;coutMpa所指向的变量的值:*paendl;coutMpa 的地址:wpavvendl;)4.数据对象在C+中有儿种不同的访问方式?请 编 写 个程序验证之。【解
14、答】数据对象在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、 常量c o n s t 类 型 常 量 标 识 符 二常量表达式;指针 常量类 型*const指 针;指 向 常 量 的指 针c o n s t 类型*指 针;或 者 类 型co n st*指 针;指 向 常 量 的 指 针 常 量c o n s t类 型*c o n s t指针;或者类型const*const 指针;常引用c o n s t 类型&引 用 名=对象名;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 n
17、amespace std;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=M r a,n*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
18、;/&”是引用说明符ra=a;int*&rt=q;/*”是指针类型说明符,是引用说明符*rt=30;/“*”是间址访问符输出语句中的“*”是间址访问符cout,a=,a,nb=,b,n*p=,*p,n*q=,*q,nra=,ran*rt=,*rtendl;程序输出结果为:a=200b=30*p=200*q=30ra=200*rt=301.6 编程题1 .输入一个3位整数,将它反向输出。【解答】#include using namespace std;int main()(int x,i,j,k;cout please input x:H;cin x;i=x/IOO;j=x/10%10;k=x%
19、10;cout k j i endl;2.输入平面上某点横坐标x和纵坐标y,若该点位于图1.11所示的方块区域内,则输出1;否则,输出O o【解答】#include -Z|-using namespace std;int main()_ rhdouble x,y,b;I Icout Hplease input x,y:;cin x y;图1.1 1方形区域b=(-2=x)&(x=2)&-2=y)&(y=2);cout b endl;3.输入3个整数,求出其中最小数(要求使用条件表达式)。【解答】/include using namespace std;int main()int a,b,c,t
20、emp,min;cout Mplease input a,b,c:M;cin a b c;temp=(ab)?a:b;min=(temp=0)i f(x =O)y =O;e l s e y =-1;(C)i f(x =0)i f l;xO)y=-l;e l s e y =0;e l s e y =1;3.假设i=2,执行下列语句后i的值为(B)i x=y)i+;(D)i f(!x )i+;x0(B)y =-l;x !=0)i f(x 0)y=1;e l s e y =0(D)y =-l;i f f x =0)i f(x 0)y =-l;e l s e y =0;(B)os w i t ch(i
21、)ca s e 1 :i +;ca s e 2:i ;ca s e 3 :+i;br e a k;ca s e 4:-i;de f a u l t:i -H-;)(A)1 (B)2(C)3 (D)44 .l 2知i n t i=0,x=0;,在下面w h i l e语句执行时循环次数为w h i l e(!x&i 3 )x+;i+;(A)4(B)3 (C)2(D)15 .已知i n t i=3;,在下面do _w h i l e语句执行时的循环次数为(B)。do i;co u t i cn dl;w h i l e (i!=1);(A)1 (B)2(C)3 (D)无限6下面f br语句执行时的
22、循环次数为(B)i n t i,j;f br(i=0,j=5;i=j;)co u t i j n dl;i+;j-;(A)0(B)5 (C)10(D)无限7.以下程序段形成死循环的是(B)。(A)i n t x;f br(x=0;x =0);(C)i n t a=5;w h i l c(a )a-;(D)int i=3;fbr(;i;i-);2.2 阅读下列程序,写出运行结果#includcusing 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;co
23、ut d endl;)【解答】20L#includeusing namespace std;int main()(int a=0,b=1;switch(a)(case 0:switch(b)case 0:coutMa=,a H b=Mbendl;break;case 1 :couta=,a u 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)(if(+i%3!=1 )continue;els
24、ecout i endl;)【解答】47104.#includeusing namespace std;int main()int i=0,j=5;do(i+;j-Sif(i3)break;while(j0);cout,i=,i cndl j=M j cndl;【解答】i=4j=l5.#includeusing namespace std;int main()int ij;fbr(i=l,j=5;ij;i+)j-;coutit,jendl;)【解答】3 36.#includeusing namespace std;int main()int i,s=0;fbr(i=0;i5;i+)switch
25、(i)(case 0:s 2 i;break;case 1:s+=i;break;case 2:s+=i;break;default:s+=2;cout,s=,scndl;【解答】s=77.#includcusing namespace std;int main()int i,j,x=0;for(i=0;i=3;i-H-)(X-H-;fbr(j=0;j=90,B-(90,80,C-(80,70,D-(70,60E-60#includeusing namespace std;int main()char gd;coutMEnter the grade:n;cingd;直到输入有效等级,否则程序不
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 基础 习题 解答
限制150内