《C程序设计基础(第4版)(上)习题解答.pdf》由会员分享,可在线阅读,更多相关《C程序设计基础(第4版)(上)习题解答.pdf(142页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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 H标识符的语法规定,合法的标识符是(A )o(A)_ a b c (B)ne w(C)n(D)a gcM8.在C二语句中,两个标识符之间(A )不熊作为C+的分隔符。(A)数字(B);(C):(D)+9.下列正确的八进制整型常量表示是(B).(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(A)V (B),na me (C)a(D)M O I11 3.在下列选项中,(D )不能交换变量a和b的值。(A)t=b;b=a;a=t;(B
4、)a=a+b;b=a-b;(C)t=a;a=b;b=t;(D)a=b;b=a;a=a-b;编译花括号int i=10*p=&i;(A)p 的值为10(B)p 指向整型变量i(C)*p表示变量i 的值(D)p 的值是变量i 的地址1 5.有以下变量说明,下面不亚砚的赋值语句是(Bint a=5,b=10,c;int*pl=&a,*p2=&b;(A)*p2=b;(B)(C)p2=pl;(D)1 6.有以下变量说明,下面正确的语句是(B)opl=a;c=*pl*(*p2);int a=10,b;int&pa=a,&pb=b;(A)&pb=a;(B)pb=pa;(C)1 7.执行下面语句序列后,a 和
5、 b 的值分别为(B)pb=&pa;(D)*pb=*pa;int a=5,b=3,t;int&ra=a;int&rb=b;t=ra;ra=rb;rb=t;(A)3 和 3(B)3 和 5(C)18.在下列运算符中,(D)优先级最高。(A)=(B)=19.在下列运算符中,(D)优先级最低。(A)!(B)&(C)20.已知inti=l,j=2;,则表达式i+j的值为(C)。(A)1 (B)2(C)21.已知inti=l,j=2;,则表达式-H+i+j的值为(D)o(A)1 (B)2(C)22.在下列表达式选项中,(C)是正确。(A)+(a+)(B)a+b(C)23.已知 inti=0,j=l,k=
6、2;,则逻辑表达式+i|j&+k(A)0(B)1 (C)24.执行下列语句后,x 的值是(D),y 的值是()5 和 3(D)5 和5(C)+(D)*!=(D)?:3(D)43(D)4(D)a+b的值为(B)a2(D)3int x,y;X=y=l;-H-x|+y;(A)不确定(B)0(C)12 5.设 x 为整型变量,不能正确表达数学关系l x V 5 的C+逻辑表达式是(D)(A)2(A)lx5(C)lx&x52 6.已 知 intx=5;,执行下列语句后,x 的值为(C(B)(D)ox=2|x=3|x=4!(x=5)x+=x-=x*x;(A)25(B)402 7.设 int a=l,b=2
7、,c=3,d=4;,则以下条件表达式的值为(C)-40A)o(D)20ab?a:cd?c:d(A)1 (B)22 8.以下逗号表达式的值为(D(C)3(D)4(x=4*5,x*5),x+25(A)25(B)20(C)100(D)451.2 根据下列数学表达式写出C+算术表达式I.!x+y2.x xx(ax+b)+c+e4.Jl+:cos480I _/5.cot-r 6.lg(a2+ab+b2)(1+门【解答】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
8、/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.,被j整除 2.n 是小于正整数k 的偶数3.lx10 4.x、y其中 有 一 -个小于z5.yg-100-10,并且 yw 10,1006.坐标点(x,y)落在以(10,2 0)为圆心,以3 5为半径的圆内7.三条边。,和c构成三角形8.年份Ye ar能被4整除,但不能被100整除,或者能被400整除【解答】1.i%j=0 2.(nk)
9、&(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.(ye ar%4=0)&(ye ar%100!=0)|(ye ar%400=0)1.4 阅读下列程序,写出运行结果1.#include using name space std;int main()int a=1,b=2;bool x,y;cout(a-H-)+(-H-b)e ndl;cout a%b e ndl;x=!ab;y=a-&b;cout x e ndl;cout y e ndl;)【解答】42012.#inclu
10、de using name space 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 e ndl;cout z=M z e ndl;cout Hf=H f e ndl;【解答】x=0y=0z=2fM3.#include#include using name space std;int main()int a=123;int&ra=a;int*pa=&a;coutse tw(5)de casct w(5)octrase t w(5)h cx *pacndl;【解答】123 173 7b1.5思考题1
11、.什么是数据类型?变量的类型定义有什么作用?【解答】数据“类型”是对数据的抽象。类型相同的数据有相同的表示形式、存储格式以及相关的操作。定义一个变量时,计算机根据变量的类型分配存储空间,并以该类型解释存放的数据。2.普通数据类型变量和指针类型变量的定义、存储和使用方式有何区别?请编写一个程序验证之。【解答】变量类型定义存储使用方式数据类型标识符数据值通过名访问即直接访问对变量内容操作指针类 型*标识符地址值通过指针变量的地址值间址访问对象验证程序:#includcusing name space 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 ,ce ndl;/名访问,输出a,b,c的值coutpa,pb,pc=pa,pb,pce ndl;输出指针变量的地址值间址访问,输出pa,pb,pc指向的变量的赋值cout*pa,*pb,*pc=*pa,*pb,*pce ndl;)3.什么是数据对象的引用?对象的引用和对象的指针有什么区别?请用一个验证程序说明之。【解答】引用是为数据对象定义别名。引用与指针有以下几点区别:(1)引用名不是内存变量,而指针变量要开辟内存空间。(2)引用名需要在变量定义与变量名绑定,并且不能重
13、定义;指针变量可以在程序中赋给不同的地址值,改变指向。(3)程序中用变量名和引用名访问对象的形式和效果一样;指针变量通过间址访问对象。验证程序:#include using name space std;int main()int a;coutMa-;cina;int ra=a;int*pa=&a;coutna 的值:Mae ndl;coutvva 的地址:n&ae ndl;coutMra 的值:Mrae ndl;coutMra 的地址:&rae ndl;coutMpa所指向的变量的值:*pae ndl;coutMpa 的地址:wpavve ndl;)4.数据对象在C+中有儿种不同的访问方式?
14、请 编 写 个程序验证之。【解答】数据对象在C+中的访问方式有:验证程序:#include using name space std;int main()int a;couta=;cina;a=a+5;cout&ae ndl;cout*(&a)e ndl;int*pa=&a;cout*pae ndl;int&ra=a;coutrae ndl;名访问,引 用(别名)访问,间址访问。名访问输出变量地址地址访问,输出变量值说明指针变量,指向变量a间址访问,输出变量值 ra是a的引用 引用访问,输出变量a的值5.为了约束对数据对象的值进行只读操作,C什采用什么方式?请进行简要归纳。【解答】约束数据对象
15、只读形式如下:约束对象说明形式标识常量const类型常量标识符=常量表达式;指针常量类 型*const指针;指向常量的指针const类 型*指针;或者 类 型 const 指针;指向常量的指针常量const类 型*const指针;或者 类 型 const*const指针;常引用const类 型&引用名=对象名;6.什么是表达式?表达式值的类型由什么因素决定?使用不同运算符连接以下3个变量,请 写 出5个以上获得值为true的表达式。int a=l,b=2;double x=0.5;【解答】表达式是由数据和运算符,按求值规则,表达个值的式子。表达式值的类型的决定因素为操作数的类型。(1)如果运算
16、符左右操作数类型相同,运算结果也是相同类型。(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 name space std;int main()(int
17、a=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,n*rt=,*rte ndl;)【解答】字符“”和的意义见程序 中 添 加 的 注 释。#include using name space 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;int*&r
18、t=q;/*”是指针类型说明符,是引用说明符*rt=30;/“*”是间址访问符输出语句中的*是间址访问符cout,a=M a,nb=,b Mn*p=,*p ,n*q=,*q,nra=,r a,n*rt=M*rte ndl;程序输出结果为:a=200b=30*p=200*q=30ra=200*rt=301.6 编程题1 .输入一个3位整数,将它反向输出。【解答】#include using name space std;int main()(int x,i,j,k;cout ple ase input x:;cin x;i=x/IOO;j=x/10%10;k=x%10;cout k j i e
19、ndl;2.输入平面上某点横坐标x和纵坐标y,若该点位于图1.11所示的方块区域内,则输出1;否则,输出O o【解答】#include -Z|-using name space std;int main()_ r h double x,y,b;I Icout ”ple ase input x,y:M;cin x y;图1.1 1方形区域b=(-2=x)&(x=2)&-2=y)&(y=2);cout b e ndl;3.输入3个整数,求出其中最小数(要求使用条件表达式)。【解答】/include using name space std;int main()int a,b,c,te mp,min
20、;cout ple ase input a,b,c:M;cin a b c;te mp=(ab)?a:b;min=(te mp=0)i f(x =O)y=O;el s e y =-1;(C)i f(x =0)i f l;xO)y=-l;el s e y =0;3.el s e y =1;假设i=2,执行下列语句后i的值为(B)i x=y)i+;(D)i f(!x )i+;x 0)y=1;el s e y =0(D)y =-l;i f f x =0)i f(x 0)y =-l;el s e y =0;(B )os w i t c h(i)c a s e 1 :i +;c a s e 2 :i ;
21、c a s e 3:-H-i;br ea k;c a s e 4 :-i;def a u l t:i -H-;)(A)1(B)2(C)3(D)4D )o4.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 .已知l i n t i=3;,在下面do _w h i 1e语句执行时的循环次数为(Bdo i;c o u t i en dl;w h i l e(i!=1);(A)1 (B)2 (C)3(D)无限6 .卜面f br语句执行时的循环次数为(B )。i n t i,j;f b
22、r(i=0,j=5;i=j;)c o u t i j n dl;i+;j-;(A)0(B)5 (C)107.以下程序段形成死循环的是(B )o(A)i n t x;f br(x=0;x =0);(D)无限(C)i n t a=5;w h i l c(a )a;(D)int i=3;for(;i;i-);2.2 阅读下列程序,写出运行结果#includcusing name space std;int main()(int a,b,c,d,x;a=c=0;b=1;d=20;iRa)d=d-10;e lseifl:!b).!c)x=15;e lse x=25;cout d e ndl;)【解答】2
23、0L#include using name space std;int main()(int a=0,b=1;switch(a)(case 0:switch(b)case 0:coutMa=,a H b=Mbe ndl;bre ak;case 1 :couta=,a u b=be ndl;bre ak;case 1:a-H-;b+;coutvva=va b=Mbe ndl;)【解答】a=0 b=1a=1 b=23.#include using name space std;int main()(inti=1;while(i=10)(if(+i%3!=1 )continue;e lsecout
24、i e ndl;)【解答】47104.#include using name space std;int main()int i=0,j=5;do(i+;j-;if(i3)bre ak;while (j0);cout i=n i cndl j=n j e ndl;【解答】i=4j=l5.#include using name space std;int main()int ij;fbr(i=l,j=5;ij;i+)j-;coutit,je ndl;)【解答】3 36.#include using name space std;int main()(int i,s=0;fbr(i=0;i5;i+
25、)switch(i)(case 0:s 2 i;bre ak;case 1:s+=i;bre ak;case 2:s+=i;bre ak;de fault:s+=2;cout,s=,scndl;【解答】s=77.#includcusing name space 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#include using name space std;int main()char gd;coutEnte r the grade:1;cingd;
26、直到输入有效等级,否则程序不继续运行while(!(gd=A,&gd=*a,&gd=90,B-(90,80,C-(80,70,D-(70,60E-60#include using name space std;int main()char gd;coutMEnte r the grade:n;cingd;直到输入有效等级,否则程序不继续运行while(!(gd-A*&gd-a,&gdfals工 J 达区一1 true程序中常用于根据条件执行操作而不需关心循环次数的情况。先判断形式循环,条件不成立循环体时不进入循环体。rwhile 语句的执行流程do-while 语do程序中常用于根据条件执行句
27、循环体while(表达式);循环条件:表达式值为非0(真)循环结束条件:表达式值为0(假)操作而不需关心循环次数。后判断形式循环,至少执行1次循环体C一般情况,while 语 句 和 dowhile语句可以互换使用。循环体|falsedo_whi 1 e 语句执行流程f o r语句f br(表达式1;表达式2 ;表达式3)循环体;(1)表达式1称为初始化表达式,不是循环体执行部分。(2)表达式3称为后置表达式,作为循环体的最后一个执行表达式。(3)循环条件:表达式2值为非0(真)循环结束条件:表达式2值为0(假)1f o r语句称为步长循环语句,通常用于确定循环次数的情况。由于语句的3个表达式
28、均可以缺省,也可以用于条件循环,即循环次数不确定的情况。表达式Ir1 t r u ef a l s循环体表达式s1f o rr语句的执行流程3.根 据一个实际问题,用不同的循环语句编程,分析其优缺点。【解答】略。4.用 if语句和goto语句组织循环,改写上面第3 题编写的程序,并分析在什么情况下可以适当使用goto语句。【解答】在不破坏程序基本流程控制的情况下,可以适当使用goto语句实现从语句结构内部向外的必要跳转,即按特定条件结束结构语句块的执行。程序略。5.有以下程序,希望判断两个输入的整数是否相等。程序通过编译,但不能达到预期结果。请分析程序能够通过OH编译而不能得到期望结果的原因。
29、#includcusing name space std;int main()(int a,b;coutMa:;cina;coutnb:;cinb;if(a=b)coutwavv等于 vb e ndl;e lsecoutavv”不等于“bvve ndl;)运行程序,输入a 的值为4,b 的值为9,显示结果如下:a:4b:99 等于9【解答】在 if语句的判断表达式(a=b)U,赋 值 号 应 该 是 逻 辑 等 从 语 法 上,C+的 if语句把a=b这个赋值表达式视为逻辑表达式,没有编译错误。a=b的值决定于b。若 b 的输入值不等于0,if语句的判断表达式作为逻辑真(true),否则作为逻
30、辑假(false)。所以,题目中输入b 的值虽然不等于a,但表达式a=b为逻辑tru e,执行了 if语句的第1个分支。2.4 编程题1.输入某学生成绩,若成绩在85分以上,则输出e ry good;若成绩在6085分之间,则输出“good”;若成绩低于60分,则输出“no good”。【解答】#include using name space std;int main()double score;cout ple ase input score:;cin score;if(score=85)cout nVe ry good!*;e lse if(score=60)cout Good!;e l
31、se cout No good!*;)2.输入3个整数,按从小到大的顺序输出它们的值。【解答】#include using name space std;int main()(int a,b,c,t;cout a,b,c=”;cin 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 t b t*c e ndl;)3.输入三角形的3条边,判别它们能否形成三角形,若能,则判断是等边、等腰三角形,还是一般三角形。【解答】#include using name space std;int main()(double a
32、,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 vv”等边三角形!”e nd I;e lse if(a=b|a=c|b=c)cout ”等腰三角形!e ndl;e lse cout ”一般三角形!*e ndl;e lsecout w ”不能形成三角形!e ndl;)4.输入百分制成绩,并把它转换成五级分制,转换公式为:A(优秀)90100grade (级别)=B(良好)8089C(中等)7079D(合格)6069【解答】#include using name space std;int main()(double
33、score;char grade;cout,score=n;cin score;if(score =0&score =100)switch(int(score )/10)case 10:case 9:grade =*a;bre ak;case 8:grade =R;bre ak;case 7:grade =*c;bre ak;case 6:grade =d;bre ak;case 5:case 4:case 3:case 2:case 1:case 0:grade =*e;bre ak;e lse|cout w”数据输入错误!e ndl;goto e nd;cout grade e ndl;e
34、 nd:分号不能省5.编程模拟剪刀、石头和布游戏。游戏规则为:剪刀剪纸,石头砸剪刀,布包石头。玩游戏者从键盘输入s(表示剪刀)或r(表示石头)或p(表示布),要求两个游戏者交替输入,计算机给出输赢的信息。【解答】#include using name space std;int main()char first,se cond;cout First input(s,r or pcin first;cout Se cond input(s,r or p):;cin se cond;switch(first)case s:switch(se cond)(case s:cout Scissor ti
35、e s scissor.n e ndl;goto e nd;case T:cout Scissor is crushe d by rock.e ndl;goto e nd;case p:cout Scissor cuts pape r.*e ndl;goto e nd;de fault:cout se cond input e rror!e ndl;goto e nd;)case T:switch(se cond)(case s:cout Rock crushe s scissor.*e ndl;goto e nd;case f:cout Rock tics dl;goto e nd;case
36、 *p*:cout Rock is wrappe d by pape r.H e ndl;goto e nd;de fault:cout se cond input e rror!*e ndl;goto e nd;)case p:switch(se cond)(case *s:cout Pape r is cut by scissor.e ndl;goto e nd;case T:cout Pape r wraps the rock.e ndl;goto e nd;case p:cout Pape r tie s pape r.e ndl;goto e nd;de fault:cout se
37、cond input e rror!e ndl;goto e nd;)de fault:cout First input e rror!e ndl;goto e nd;e nd:;6.输入一个整数,输出该整数的所有素数因子。例如,输入1 2 0,输出为2、2、2、3和5。【解答】#include using name space std;int main()(int m,i=2;cout ple ase input m:;cin m;while(i=m)if(m%i=0)cout i vvm=m/i;)e lse i+;7.使用迭代公式加产。“+/)/2 7 =0,1,2;=a/2)编程求某一
38、正整数。的平方根。【解答】#include#include using name space std;int main()(const double cps=le-8;double a,x0,x;cout ple ase input a:M;cin a;x0=a/2;x=(xO+a/xO)/2;whilc(fabs(x-xO)e ps)x0=x;x=(xO+a/xO)/2;)cout x cndl;)8.已知 x=0,10,2 0,,1 8 0 ,求 sinx,cosx 和 tanx 的值。【解答】#include#includc#include using name space std;in
39、t main()const double pi=3.14159265;int i;double x,yl,y2,y3;cout se tw(2)x se tw(15)usin(x)u se tw(15)Hcos(x)u se tw(15),tg(x)n e ndl;fbr(i=0;i=18;i+)x=i*10*pi/180;yl=sin(x);y2=cos(x);y3=yl/y2;cout se tw(2)i*10 se tw(15)yl se tw(15)y2 se tw(15)y3 e ndl;9.在100200之间找出满足用3除余2,用5除余3和用7除余2的所有整数。【解答】#inclu
40、de using name space std;int main()(int i;fbr(i=100;i=200;i+)if(i%3=2)&(i%5=3)&(i%7=2)couti e ndl;10.求100999之间的水仙花数。所谓水仙花数,是指一个3位数,它的每位数字的立方之和等于该数。例如,因为153=1 3+5 3+3 3,所以153为水仙花数。【解答】#include using name space std;int main()(int i,a,b,c;fbr(i=100;i=999;i+)(a=i/100;b=(i-a*100)/10;c=i-a*100-b*10;if(i=a*
41、a*a+b*b*b+c*c*c)couti e ndl;11.求1000以内的所有完数。所谓完数,是指一个数恰好等于它的所有因子之和。例如,因为6=l+2+3,所以6 为完数。【解答】#include using name space std;int main()(int ij,s;fbr(i=l;i=1000;i-H-)(s=0;fbr(j=l;ji;j+)if(i%j=O)s=s+j;if(i s)cout i e ndl;)12.编写程序显示由符号组成的三角形图案。例如,程序运行后,屏幕显示:How many line s?用户输入:5屏幕显示:What characte r?用户输入:
42、*则输出如下图案:*【解答】#include using name space std;int main()(intchar ch;coutHow many line s?n;cinn;coutWhat characte r?n;cinch;fbr(i=l;i=n;i+)(fbr(k=l;k=n-i;k+)cout ”fbr(j=I;j=2*i-1;j+)cout ch;cout endl;13.已知X Y Z+y Z Z=5 3 2,其中X,V和Z为数字,编写程序求出X,丫和Z的值。【解答】#includeusing na mespa ce std;int ma in()int x,y,z,
43、i;for(x=l;x=9;x-H-)fb r(y=l;y=9;y+)fdr(z=0;z=9;Z-H-)i =1 0 0*x+1 0*y+z+1 0 0*y+1 0*z+z;if(i=5 3 2 )c o u t Mx=,x,t,y=y,t,z=M z e n d I;)第3章 函 数3.1选择题I.以下正确的函数原型为(D)o(A)n(intx;inty);(B)void fl(x,y);(C)void fl(int x,y);(D)void fl(int,int);2 .有函数原型void ftin2(int);,在下列选项中,不正确的调用是(C )。(A)int a =2 1;fiin2
44、(a );(B)int a =1 5;fun2(a*3 );(C)int b=1 0 0;fiin2(&b );(D)fun2(2 5 6);3 .有函数原型void fun3(int*);,在卜列选项中,正确的调用是(C )。(A)doub le x=2.1 7;fiin3(&x );(B)int a =1 5;fiin3(a*3.1 4 );(C)int b =1 0 0;fiin3(&b);(D)fiin3(2 5 6 );4 .有函数原型void fon4(i n t&);,在下列选项中,正确的调用是(C)。(A)int a =2.1 7;fun4(&a );(B)inta=1 5;f
45、iin4(a*3.1 4);(C)int b =1 0 0;ftin4(b );(D)fun4(2 5 6 );5 .有声明void fiin5(int*&);int a,int*p=&a;在下列选项中,正确的调用是(B )o(A)fiin5(&a);(B)ftm5(p);(C)fun5(*a);(D)fun5(*p);6 .有声明int fun6(int);int(*pf)(int)=fun6;在下列选项中,正确的调用是(C )o(A)int a=15;int n=fun6(&a);(B)int a=15;cout(&pf)(a);(C)cout(*pf)(256);(D)cout *pf(
46、256);7.在 VC中,若定义一个函数的返回类型为v o id,则以下叙述正确的是(C(A)函数返回值需要强类型转换(B)函数不执行任何操作(C)函数本身没有返回值(D)函数不能修改实际参数的值8.函数参数的默认值不允许为(C)o(A)全局常量(B)直接常量(C)局部变量(D)函数调用9.使用重载函数编程序的目的是(A)。A)使用相同的函数名调用功能相似的函数(B)共享程序代码(C)提高程序的运行速度(D)节省存储空间10.在下列的描述中,(B)是错误的。(A)使用全局变量可以从被调用函数中获取多个操作结果(B)局部变量可以初始化,若不初始化,则系统默认它的值为0(C)当函数调用完后,静态局
47、部变量的值不会消失(D)全局变量若不初始化,则系统默认它的值为0II.在下列选项中,(C)具有文件作用域。(A)语句标号(B)局部变量(C)全局变量(D)静态变量3.2 阅读下列程序,写出运行结果#inckide using name space std;#include int R int);int main()int i;fbr(i=0;i 3;i+)cout i)e ndl;int int a)int b=0,c=1;b+;c+;re turn int(a+pow(double(b),2)+c);)【解答】3452.#include using name space std;void f
48、iinc(int a,int b,int c=3,int d=4);int main()fiinc(10,15,20,30);ftinc(10,11,12);fiinc(12,12);void ftinc(int a,int b,int c,int d)(c o u t a,t,b ,c,t,d e ndl;)【解答】1015203010111241212343.#inc lude using name space std;void func(int,int,int*);int main()int x,y,z;func(5,6,&x);func(7,x,&y);ftinc(x,y,&z);co
49、ut x v y ,M z e ndl;)void func(int a,int b,int*c)(b+=a;*c=b-a;【解答】6,6,64.#include using name space std;void fiinc(int,int,int&);int main()int x=0,y=l,z=2;fiinc(1,2,x);func(x+y,y,y);fiinc(z,x+y,z);cout x y M,n z e ndl;)void fiinc(int a,int b,int&c)b+=a;c=b-a;【解答】2,1,35.#include using name space std;v
50、oid func(int*,int*,int*&);int main()int a=10,b=20;int*p=&a,*q=&b;ftmc(p,q,p);cout *p=*p ,*q-*q cndl;void func(int*tl,int*t2,int*&rt)*tl+=5;*t2+=5;rt=tl;*rt+=5;cout *tl=M *tl *,*t2=M *t2 H,*rt=u *rt e ndl;【解答】*tl=20,*t2=25,*rt=20*p=20,*q=256.#include using name space std;int 12(int,int);int fl(int a,