c++详细版答案解析_第1页
c++详细版答案解析_第2页
c++详细版答案解析_第3页
c++详细版答案解析_第4页
c++详细版答案解析_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、妍伶版C+标准答案C+ 答案与解析一、单项选择题、在一个程序中,main 函数的位置(3)。 必须在程序的开头 必须在程序的后面 可以在程序的任何地方 必须在其它函数中间、程序基本单位是(3)。数据字符函数语句、执行语句int i=10,*p=&i;后,下面描述错误的是( p 的值为 10 p 指向整型变量i *p 表示变量i 的值 p 的值是变量i 的地址1)。、执行语句( 2)。inta=5,b=10,c;int* p1=&a,* p2=&b;后,下面不正确的赋值语句是*p2=b;p1=a;p2=p1;c=*p1*(*p2);解析: *p = *p1 * (*p2) 中间的 *是乘号的意思

2、,两边的代表指针地,也就是地址。指针和 p2 指向的地址单元中存放的数据相乘,最后都指向了同一 p 指向的地址单元内。 p1相当于*p=a*b、设 i=1 , j=2 ,则表达式i+ +j123、设 i=1 , j=2 ,则表达式 +i+j123考察 i+,+i 的区别、执行下列语句后,x 的值是(的值为(3)。 4的值为(4)。 44), y 的值是(3)。int x,y;x=y=1;+x|+y;不确定012操作符 |和 & 都具有短路现象如 a|b 假如判断了a 是正确的,就不会判断b 了,无论b 是否正确。a&b 也一样,不过是反过来的,假如判断了a 是错误的,就不会继续判断b 了。、已

3、知x=5 ,则执行语句x+=x-=x x; (题目有错误吧?c+语言中的x 是 * ) 后, x 的值为(3)。2540-4020先分解:X2 =25(看符号优先级)x-=25则x=-20x+=-20 ,既最终x=-40、已知a=4, b=6 , c=8, d=9 ,则“ (a+,ba+&cd)?+d:aa+&cd )发现他是不正确的,即为 false,则执行表达式ab,既 66 错,输出 0.(括号内的 a+使 a=6)10、有如下程序段:int a=14,b=15,x;char c= A;x=(a&b)&(c B );执行该程序段后,x 的值为()。turefalse01用一个int 来做

4、逻辑运算的话,只要他的值不是0 就算是true 。那么(a & b)中 a 和 b 都不为0 。所以a & b为 true.(c B)中 c 为 字符 A对应的 ASCII码 小于 B的 ASCII 码 所以也为true 。即 (a & b) & (c B) 返回 true 。最终输出 111、下面程序的输出结果是(#include using namespace std;int main( ) int a=6,b=6;if(a5)a-=1;/a=5b+=1; /b=7elsea+=1;b-=1;)。coutcout” a=” aendl;” b=” bendl;return 0; 57a=5

5、b=7a=5b=6 编译时出错12、下面程序的输出结果是()#include using namespace std;int main( ) int a=6,b=6;if(a5)a-=1;b+=1;elsea+=1;b-=1;cout ” a=” aendl;cout ” b=” bendl;return 0; 57 a=5b=7a=5b=6a=6b=513、下面程序的输出结果是()妍伶版C+标准答案#include using namespace std;int main( ) int x=6,y=8; if(x+6)cout+y6)cout -yendl;elsecouty+endl;re

6、turn 0;879编译时出错14、下面程序的输出结果是()#include using namespace std;int main( ) int x=6,y=8; if(+x6)cout+yendl;elsecouty+6)cout -yendl;return 0; 88 97 78 编译时出错/76.cout6输出 y=815、下面程序的输出结果是(1)#include using namespace std;f(int a) int b=0; static int c=3; b+;c+;return (a+b+c);int main( ) int a=2,i; for(i=0;i3;i

7、+)coutf(a)endl;return 0; 789 777 71013 7911第一次循环: i=1a=2 b=0c=3 b=1c=4 2+1+4=7妍伶版C+标准答案第二次循环:i=2a=2 b=1 c=42+1+5 =8与此类推第三次循环为916、下面程序的输出结果是()#include using namespace std;void fun(int x,int y,int z) z=x*x+y*y; /全局变量(在main 函数外)int main( ) int z=68;/ 局部变量fun(5,2,z);coutz;也许你会这样写:z=68 x=5 y=2 z;z=52+22=

8、29but 这是错的。涉及局部变量和全局变量的可见性等return 0; 029 68 无定值17、下面程序的输出结果是( )#include using namespace std;int fun(int a,int b) return (+a*b+); int main( ) int x=3,y=4,z=5,r;r=fun(fun(x,y),z);coutrxyendl;8534 6034 12645 8545先执行括号里的小fun: fun(16),5) 变成 fun(17,5)18、下面的程序中,当输入4、2 时,其输出结果是()#include using namespace std

9、;long fib(int n) if(n2) return (fib(n-1)+fib(n-2); else return (n) int main(;) int i;couti; coutendl;coutfib(i)2 turereturn(fib (int 3)+fib (int 2)-return(return (fib 2+ fib 1)+2)-return(2+1+2=6)当 i=2 return 2妍伶版C+标准答案19、下面程序的输出结果为()#include using namespace std;unsigned func(unsigned num) unsigned d

10、=1,k; do k=num%10;/ k=26%10=6 num/=10;/ 26/10=2.6=2while(num); /return (k); int main( ) unsigned n=26; coutfunc (n);return 0; 246520、下面程序的输出结果为()#include using namespace std;func (int a,int b) int c; c=a*b; return (c );int main( )int x=6,y=7,z=8,r;r=func(x-,y,x y),z-);coutr;return 0; 294 245 280 416

11、Fun(6,7,5*7) , 8)-fun(6,7,35),8)-fun(35,8)35*8=28021、下面程序的输出结果为()#include using namespace std;int main( ) int a33=1,2,3,4,5; int s=0; for (int i=1;i3;i+) for(int j=0;j=i;j+)s+=aij;coutsendl;return 0; 12141513第一次大循环i=2进入小循环j=1 s=a21=2第二次大循环i=3 进入小循环j=2s=a32+2=妍伶版C+标准答案22、下面程序的输出结果是(1)#include using n

12、amespace std;void fun(int *x,int *y)cout*x”“ *y ”“;* x=3;* y=4; int main( ) int x=1,y=2; fun(&y,&x);coutx ” “ y;return 0; 2143 1212 2112 1234相当于 Void fun(&y,&x)couty ” x;”x=1, y=2x=4 y=3y=3;x=4; 23、下面程序的输出结果是(3)#include using namespace std;int main( ) int a10=9,8,7,6,5,4,3,2,1,0, *p=a+5;coutp=5; a1.

13、*p=5 ;a1 是类 A 的一个对象。如果要给 *a1.p=5 ;m 赋值33、已知类A 中一个成员函数说明如下:void Set(A&a)其中, A&a 的含意是(3)。指向类 A 的指针为a 将 A 的地址值赋给变量Set a 是类 A 的对象的引用,用来作函数Set()的形参 变量 A 与 a 按位相与作为函数Set()的参数34、下面程序的输出结果是(1)#include using namespace std;class point妍伶版C+标准答案public:void poi(int px=10,int py=10) x=px; y=py; getpx( ) return x;

14、 getpy( ) return y; private:int x,y;int main( )point p,q; p.poi(); q.poi(15,15);cout “ p 点的坐标是: ” p.getpx( ) “,”;coutp.getpy( )endl ;cout “ q 点的坐标是: ” q.getpx( ) “,”;coutq.getpy( )endl ;return 0; p 点的坐标是:10,10 p 点的坐标是: 0,0q 点的坐标是:15,15q 点的坐标是: 15,15 p 点的坐标是:0,0 p 点的坐标是: 10,10q 点的坐标是:0,0q 点的坐标是: 10,1

15、035、有以下类的说明,请指出错误的地方class CSampleprivate:int a=2.5;CSample;(A)(B)public:CSample(int val);CSample;(C)(D);A , 普通数据成员不能在声明时初始化,类只是声明了一种类型,并不占空间。 非要在类中初始化的话,需要在类里面的构造函数B,? /构造函数貌似不可以是私有的?C,36、下面程序的输出结果是(1)#includeusing namespace std;妍伶版C+标准答案int main()int i,j,m=0,n=0;for (i=0;i2;i+)for (j=0;j=i) m=1;n+;

16、coutmendl;cout=i true m=1j=1 j=i true m=1第二次 ( 外层循环 ) , i=1j=0 j=i falsej=1 j=i true m=1由于不存在花括号,循环+条件语句在m=1;这一行后即终止。所以n+ 无论如何只执行了一次。二、判断题、任何字符常量与一个任意大小的整型数进行加减都是有意义的。()、在命名标识符中,大小写字母是不加区分的。()字母大小影响程序运行、引用是某个变量的别名。 对引用的操作, 实质上就是对被引用的变量的操作。( )、 typedef 类型定义是原来定义一些中所没有 的新类型。 ()、枚举变量的取值收到该枚举变量所对应的枚举表中枚

17、举常量的局限。()枚举变量按常量来处理,不能对他们赋值,若要赋值,则需要进行强制转换、已知: int a(5);表达式 (a=7)+a 具有二义性。( )、预处理命令是在进行编译时首先执行的,然后再进行正常编译。( )、条件编译命令只在编译时才有用。( )、开关语句不可以嵌套,在开关语句的语句序列中不能再有开关语句。()10、 switch 语句中必须有break 语句,否则无法退出switch 语句。()caseswitch(k),case1:case2:case3这 3 个 case ,如果没有break ,当 k=1 时,这三个都会执行,当每个都有break时, case2, case3

18、就不会执行 。时, k=111、 while 循环语句的循环体最少执行一次。()dowhile 至少执行一次12、只有循环的循环体可以是空语句,其它种类循环的循环体不能用空语句。()妍伶版C+标准答案13、当循环体为空语句时,说明该循环体不做任何工作,只起延时作用。()一直循环,直到循环结束14、在多重循环中,内重循环的循环变量引用的次数比外重的多。()15、在中,说明函数时要用函数原型,即定义函数时的函数头部分。16、如果一个函数没有返回值,定义时需用void 说明。( )17、使用内置函数是以增大空间开销为代价的。( )( )18、返回值类型、参数个数和类型都相同的函数也可以重载。()重载

19、函数形参不同:个数不同或者类型不同。19、在设置了参数默认值后,调用函数的对应实参就必须省略。()20、函数形参的作用域是该函数的函数体。()21、定义外部变量时,不用存储类说明符extern,而声明外部变量时用它。(22、内部静态类变量与自动类变量作用域相同,但是生存期不同。()23、静态类标识符在它的作用域之外是不存在的。()24、使用关键字class 定义的类中默认的访问权限是私有的(private )。(25、指向对象的指针和指向类的成员的指针在表达形式上是不相同的。(26、一维对象指针数组的每个元素应该是某个类的对象的地址值。()27、一个类的构造函数中可以不包含对其子对象的初始化。

20、()三、填空题、下面程序是计算110#include using namespace std;int main( ) int a,b,i;a=0;b=0;for(i=0; i=10 a+=i;之间偶数之和,请填空:;i+)if (a%2!=0 ) a-=i;cout”偶数之和为:” aendl;return 0; 、下面程序是输出100 内能被#include using namespace std;int main( ) int i,j;for(i=0; i=9;i+) j=i*10+6;if( j%3! =0)3 整除且个位数是6 的所有整数,请填空:continue;3 else ;co

21、utjendl;4-return 0; 妍伶版C+标准答案、结构体类型与数组不同,数组中的数据的类型是一致的,结构体的成员的数据类型是可以不同的,共用体类似于结构体,但是共用体的部分成员是共用同一存储空间,枚举类型是基础类型的集合。、常量与变量的区别是:常量在程序运行中值不可改变,因此它的值在编译时便进行初始化;而变量的值是可以改变的,指针的是变量的地址,不是变量的值。、函数的形参在未被调用前未分配空间, 函数的形参的同。类型类型的变量存储要和实参相若类型不同,则按一般规则转换,若参数个数不同,则提示错误。、函数的递归分为直接递归,间接递归分、递归部分两部分组成。一般说, 一个问题的解决要依靠

22、另一问题的解决,一问题的解决方法相同,则可用递归处理。、下面程序的功能是:求a 的 b 次方,并输出,请填空。,递归由初始部而另一个问题的解决方法与上#include using namespace std;double fun (double a,int b) int i; double z;for(i=1,z=1;i=b;i+)z=*a;return z;int main( ) double a; int b;couta ;coutendl;coutb;coutendl;cout fun(a,b);coutendl;return 0; 、下面函数是检验输入的字符是大写还是小写或者不是26

23、个字母,请填空。#include using namespace std; char ch? ;fun (char ch) int i;if(ch= a )&(ch=A)&(ch=Z)i=2;else i=3; returni;int main( ) int i;coutch;i=fun(ch);if (i=1)cout ”是小写字母: ” chendl;else if ( i=2)cout ”是大写字母: ” chendl;else cout 是”其它字符:” chendl;return 0; 、下面是字符串拷贝程序,请填空。void ccopy( ) char ch1=” good mor

24、ning!int i=0,j=0;while( chi ! =0 ) ch2j= ch1i+;” ,ch220;j+;ch2j =0; :0 表示整数 ,0 表示 0 字符 ,0 表示 ASCII 码值为 0 的字符。在字符串中 0用作字符串的结束标志。10、下面函数是寻找二维数组中每一行的最大值,请填空。#define N 5#define M 5void max (int aNM) int i,j,p;for (i=0;iN;i+) p=0;for (j=1;jM;j+)if (aipaij)p=j;couti” : ” pendl;11、下面程序是将字符逆序化,请填空。#include

25、using namespace std;不用填;妍伶版C+标准答案int main( ) char ch=” hello,boy!”;char c;int i=0,j=strlen(ch);for(;ij/2;i+,j-) c=chi;chi=chj-1;chj-1=c;coutch;return 0;12、下面程序的功能是将矩阵转置,请填空。#includeusing namespace std;#define I 3#define J 4void invert(int aIJ) int i,j; int bJI;cout ” array a: ” endl; for(i=0;iI;i+)

26、for(j=0;jJ;j+) coutaij”“;bji=aij;coutendl;cout ” array b:” endl;for(i=0;iJ;i+) for(j=0;jI;j+)coutbij”“;coutendl;int main() int aIJ=1,2,3,4,5,6,7,8,1,3,5,7; invert(a);return 0;四、程序分析题、下面程序的输出结果是(816)#include 妍伶版C+标准答案using namespace std;int func(int a,int b) static int m=0;int i=2; i+=m+1; m=i+a+b;re

27、turn (m);int main( ) int k=4,m=1,p;p=func(k,m);coutp;p=func(k,m);coutpendl;return 0; k=4 m=1; m=0 i=2; i=m+1+i=3;m=i+a+b=3+4+1=8; p=8;k=4,m=1;m=8,i=2.i=8+1+2=11;m=i+a+b=11+4+1=16;p=16;、下面程序的输出结果是(61515)#include using namespace std;int d=1;fun (int p) static int d=5; d+=p; coutd; return (d);int main(

28、 ) int a=3;coutfun(a+fun(d)endl;return 0; a=3d=5+1=6a+fun(d)=3+5+1=9d=9+6=15fun(9)=15 调用 3 次, 61515、下面程序的执行结果是(hlo)#include using namespace std;char ch=” hello,boy!;”void fun2(int i);void fun1(int i) coutchi;妍伶版C+标准答案if(i3) i+=2;fun2(i); void fun2(int i) coutchi;if (i3) i+=2;fun1(i); int main( ) int

29、 i=0;fun1(i);coutendl;return 0;couthi=2 fun2(2)coutli=4 fun1(4) couto、下面程序的执行结果是(The array isa0 is 0a1 is 1a2 is 2a3 is 2a4 is 6a5 is 14)#include using namespace std;int main( ) int a10=0,1,2;int j;for(j=2;j6;j+)aj+1=aj+2 aj-1 aj-2;cout ” The array is:” endl;for(j=0;j6;j+)cout ” a “ j ” is” aj;return 0; 、当输入时,下列程序的输出结果是(123)#include using namespace std;int main( ) int str3,i,*p=str; for(i=0;i*p+;妍伶版C+标准答案cout*(p-1); return 0; 输入 123 时,相当于给str=1,2,3、下面程序的输出结果是(6 )#include using namespace std;void func (int *a,int b) b0=*a+6; int main( ) int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论