《C++程序设计基础(第4版)(上)习题解答.pdf》由会员分享,可在线阅读,更多相关《C++程序设计基础(第4版)(上)习题解答.pdf(139页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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;直到输入有效等级,否则程序不
26、继续运行whi!e(!(gd=A&gd=a&gd=90,B-(90,80,C-(80,70,D-(70,60E-60#includeusing namespace std;int main()char gd;coutEntcr the grade:1;cingd;直到输入有效等级,否则程序不继续运行while(!(gd=,A&gd=,a,&gd W望 二 1 true循环体1:als姗 敝 晦 帙 磷 倾 椒,撼 感 翩先判断形式循环,条件不成立Hrwhile语句的执行流程do-while 语句d o循环体while(表达式);循环条件:表达式值为非0(真)循环结束条件:表 达 式 值 为0(
27、假)期中蒯理繇辙礴神福关心繇林.后判断形式循环,至 少 执 行1?般情况,while in句 和do whi循环体|falsedo_whi 1 e语句执行流程fo r语 句for(表 达 式1 ;表 达 式2 ;表 达 式3 )循环体;(1)表 达 式1称为初始化表达式,不是不(2)表 达 式3称为后置表达 式,作为循(3)循环条件:表 达 式2值 为 非0 (真)循环结束条件:表 达 式2值 为0(假)1伽静蹶为眯鄱稀旬,端肝雌陋糕的做,由于语句的3个表达式均可以3表达式1-*1 truefalsen循环体1表达式S_|ror语句的执行流程3.根据一个实际问题,用不同的循环语句编程,分析其优
28、缺点。【解答】略。4.用 if语句和goto语句组织循环,改写上面第3 题编写的程序,并分析在什么情况下可以适当使用goto语句。【解答】在不破坏程序基本流程控制的情况下,可以适当使用goto语句实现从语句结构内部向外的必要跳转,即按特定条件结束结构语句块的执行。程序略。5.有以下程序,希望判断两个输入的整数是否相等。程序通过编译,但不能达到预期结果。请分析程序能够通过C+编译而不能得到期望结果的原因。#includeusing namespace std;int main()(int a,b;coutMa:cina;coutb:cinb;if(a=b)couta 等于bendl;elseco
29、utva v 不等 Tbendl;运行程序,输入a 的值为4,b 的值为9,显示结果如下:a:4b:99 等于9【解答】在 if语句的判断表达式(a=b)中,赋值号“=”应 该 是 逻 辑 等 从 语 法 上,C+的 if 语句把a=b这个赋值表达式视为逻辑表达式,没有编译错误。a=b的值决定于b。若 b 的输入值不等于0,if语句的判断表达式作为逻辑真(true),否则作为逻辑假(false)。所以,题目中输入b 的值虽然不等于a,但表达式a=b为逻辑true,执行了 if语句的第1个分支。2.4编程题1.输入某学生成绩,若成绩在85分以上,则输出,ery good;若成绩在6085分之间,
30、则输出“good”;若成绩低于60分,则输出“no good”。【解答】#includeusing namespace std;int main()(double score;cout Hplease input score:;cin score;if(score=85)cout uVery good!;else if(score=60)cout uGood!;else cout N o good!;)2.输入3 个整数,按从小到大的顺序输出它们的值。【解答】#includeusing namespace std;int main()int a,b,c,t;cout Ma,b,c=M;cin
31、a b c;if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;cout a 1t b,t,c endl;)3.输入三角形的3 条边,判别它们能否形成三角形,若能,则判断是等边、等腰三角形,还是一般三角形。【解答】#includeusing namespace std;int main()double a,b,c;cout a,b,c=;cin a b c;if(a+b c&b+c a&c+a b)(if(a=b&b=c)cout”等边三角形!,endl;else if(a=b|a=c|b=c)cout V”等腰 T角形!endl;els
32、e cout 一般三角形!vv endl;elsecout v v”不能形成三角形!H endl;4.输入百分制成绩,并把它转换成五级分制,转换公式为:A(优 秀)90100,尔口八_ B(良 好)8089grade(级别)=C(中 等)7079D(合 格)6069【解答】#includeusing namespace std;int main()(double score;char grade;cout score=,;cin score;if(score=0&score=100)(switch(int(score)/10)(case 10:case 9:grade=break;case 8
33、:grade=b*;break;case 7:grade=*c;break;case 6:grade=d;break;case 5:case 4:case 3:case 2:case 1:case 0:grade=*e;break;)else(cout v”数据输入错误!M endl;goto end;cout grade endl;e n d:;分号不能省5.编程模拟剪刀、石头和布游戏。游戏规则为:剪刀剪纸,石头砸剪刀,布包石头。玩游戏者从键盘输入s(表示剪刀)或r(表示石头)或p(表示布),要求两个游戏者交替输入,计算机给出输赢的信息。【解答】#includeusing namespace
34、 std;int main()char first,second;cout HFirst input(s,r or p)cin first;cout MSecond input(s,r or pcin second;switch(first)|case s:switch(second)(case s:cout*Scissor ties scissor.H end!;goto end;case Y:cout*Scissor is crushed by rock.*endl;goto end;case p:cout MScissor cuts paper.u endl;goto end;defau
35、lt:cout “second input error!H endl;goto end;)case T:switch(second)case s:cout Rock crushes scissor.H endl;goto end;case T:cout MRock ties rock.M endl;goto end;case*p:cout KRock is wrapped by paper.M endl;goto end;default:cout*second input error!M endl;goto end;)case p:switch(second)(case s:cout MPap
36、er is cut by scissor.endl;goto end;case V:cout*Paper wraps the rock.M endl;goto end;case p*:cout HPaper ties paper.endl;goto end;default:cout “second input error!endl;goto end;)default:cout MFirst input error!M endl;goto end;)end:;)6.输入一个整数,输出该整数的所有素数因子。例如,输入1 2 0,输出为2、2、2、3和5。【解答】#includeusing name
37、space std;int main()int m,i=2;cout Hplease input m:;cin m;while(i=m)if(m%i=0)couti H,M;m=m/i;)else i+;)7.使用迭代公式为+=(x.+a/xn)/2 7 =0,1,2;频=a/2)编程求某一正整数a的平方根。【解答】#include#includeusing namespace std;int main()const double eps=1 e-8;double a,x0,x;cout nplease input a:M;cin a;xO=a/2;x=(xO+a/xO)/2;while(fa
38、bs(x-xO)eps)x0=x;x=(xO+a/xO)/2;cout x endl;)8.已知 x=0,10,2 0,,1 8 0 ,求 siar,cosx 和 taar 的值。【解答】#include#inckide#includeusing namespace std;int main()const double pi=3.14159265;int i;double x,yl,y2,y3;cout setw(2)MxM setw(15)Msin(x)H setw(15)ncos(x)setw(15)Mtg(x)M endl;fbr(i=0;i=18;i+)x=i*10*pi/180;yl
39、=sin(x);y2=cos(x);y3=yl/y2;cout setw(2)i*10 setw(15)yl setw(15)y2 setw(15)y3 endl;9.在100200之间找出满足用3除余2,用5除余3和用7除余2的所有整数。【解答】#includeusing namespace std;int main()int i;for(i=100;i=200;i+)(if(i%3=2)&(i%5=3)&(i%7=2)cout i endl;)10.求100999之间的水仙花数。所谓水仙花数,是指一个3位数,它的每位数字的立方之和等于该数。例如,因为153=13+5 3+3 3,所以153
40、为水仙花数。【解答】#includeusing namespace std;int main()(int i,a,b,c;fbr(i=100;i=999;i-H-)(a=i/100;b=(i-a*100)/10;c=i-a*100-b*10;if(i=a*a*a+b*b*b+c*c*c)couti endl;)11.求1000以内的所有完数。所谓完数,是指个数恰好等于它的所有因子之和。例如,因为6=1+2+3,所以6为完数。【解答】#includeusing namespace std;int main()int ij,s;fbr(i=l;i=1000;i-H-)s=0;fbr(j=l;ji;
41、j+)if(i%j=0)s=s+j;if(i=s)cout i endl;)12.编写程序显示由符号组成的三角形图案。例如,程序运行后,屏幕显示:How many lines?用户输入:5屏幕显示:What character?用户输入:*则输出如下图案:*【解答】#includeusing namespace std;int main()(int i j,k,n;char ch;coutHow many lines?nM;cinn;coutWhat character?nH;cinch;fbr(i=l;i=n;i+)(fbr(k=l;k=n-i;k+)cout ,H;fbr(j=l;j=2*
42、i-l;j-H-)cout ch;cout endl;)13.已知xyz+yzz=532,其中x,y 和z 为数字,编写程序求出x,丫和z 的值。【解答】#includeusing namespace std;int main()(int x,y,z,i;fbr(x=l;x=9;x+)fbr(y=l;y=9;y+)fbr(z=0;z=9;z+)i =1 0 0*x+1 0*y+z+1 0 0*y+1 0*z+z;i f(i =5 3 2 )c o u t Mx=,x t,y=,y,t,z=,z e nd l;第3章函数3.1 选择题1 .以下正确的函数原型为(D)。(A)f l(i nt x;
43、i nt y);(B)voi d f l(x,y);(C)voi d f l(i nt x,y);(D)voi d f l(i nt,i nt);2 .有函数原型voi d f ti n2(i nt);,在下列选项中,不正确的调用是(C)。(A)i nt a =2 1;f i i n2(a );(B )i nt a =1 5;f un2(a*3 );(C)i nt b=1 0 0;f un2(&b );(D)f un2(2 5 6 );3 .有函数原型voi d f un3(i nt*);,在下列选项中,正确的调用是(C)。(A)d oub l e x=2.1 7;f un3(&x );(B)
44、i nt a =1 5;f i i n3(a*3.1 4 );(C)i nt b=1 0 0;f ti n3(&b);(D)f un3(2 5 6 );4 .有函数原型voi d f un4(i nt&);,在下列选项中,正确的调用是(C)。(A)i nt a =2.1 7;f un4(&a );(B)i nt a =1 5;f un4(a*3.1 4 );(C)i nt b =1 0 0;f un4(b );(D)f un4(2 5 6 );5 .有声明voi d f i i n5(i nt*&);i nt a,i nt*p=&a;在下列选项中,正确的调用是(B)。(A)f tm 5(&a)
45、;(B)f ti n5(p);(C)f un5(*a);(D)f un5(*p);6 .有声明i nt R m 6(i nt);i nt(*pf)(i nt)=f i i n6;在下列选项中,正确的调用是(C)。(A)i nt a=1 5;i nt n=f un6(&a);(B)i nt a =1 5;c o u t (&pf)(a);(C)c o u t (*pf)(2 5 6 );(D)c out *p f(2 5 6 );7 .在VC中,若定义一个函数的返回类型为v o i d,则以下叙述正确的是(C)。(A)函数返回值需要强类型转换(B)函数不执行任何操作(C)函数本身没有返回值(D)
46、函数不能修改实际参数的值8 .函数参数的默认值不允许为(C)。(A)全局常量(B)直接常量(C)局部变量(D)函数调用9.使用重载函数编程序的目的是(A)。(A)使用相同的函数名调用功能相似的函数(B)共享程序代码(C)提高程序的运行速度(D)节省存储空间1 0 .在下列的描述中,(B)是错误的。(A)使用全局变量可以从被调用函数中获取多个操作结果(B)局部变量可以初始化,若不初始化,则系统默认它的值为0(C)当函数调用完后,静态局部变量的值不会消失(D)全局变量若不初始化,则系统默认它的值为01 1.在下列选项中,(C)具有文件作用域。(A)语句标号(B)局部变量(C)全局变量3.2 阅读下
47、列程序,写出运行结果(D)静态变量#includeusing namespace std;#includcint int);int main()(int i;fbr(i=0;i 3;i+)cout i)endl;)int int a)(int b=0,c=1;b-H-;C+;return int(a+povv(double(b),2)+c);【解答】345L#includcusing namespace std;void func(int a,int b,int c=3,int d=4);int main()func(10,15,20,30);fiinc(10,11,12);func(12,1
48、2);void func(int a,int b,int c,int d)c o u t a,t,b ,c,t,d endl;【解答】10152030101112 412 12 3 4#includeusing namespace std;void func(int,int,int*);int inain()int x,y,z;func(5,6,&x);ftmc(7,x,&y);fiinc(x,y,&z);cout x ;y n,z cndl;)void func(int a,int b,int*c)(b+=a;*c=b-a;)【解答】6,6,6#includcusing namespace
49、std;void func(int,int,int&);int main()int x=0,y=l,z=2;fiinc(1,2,x);fimc(x+y,y,y);func(z,x+y,z);cout x H,n y *H z endl;)void func(int a,int b,int&c)(b+=a;c=b-a;【解答】2,1,3#includcusing namespace std;void func(int*,int*,int*&);int main()int a=10,b=20;int*p=&a,*q=&b;func(p,q,p);cout,*p=,*p ,*q=n*q cndl;v
50、oid func(int*tl,int*t2,int*&rt)*tl+=5;*t2+=5;rt=tl;*rt+=5;cout,*tl=,*tl,*t2-,*t2,*rt=,*rt endl;)【解答】*tl=20,*t2=25,*rt=20*p=20,*q=25#includeusing namespace std;int 2(int,int);int fl(int a,int b)(int c;a+=a;b+=b;c=f2(a+b,b+1 );return c;int f2(int a,int b)(int c;c=b%2;return a+c;)int main()(int a=3,b=4