习题二C++练习(含有答案)
- 格式:doc
- 大小:90.00 KB
- 文档页数:20
计算机二级C++考试备考练习题及答案选择题1、下列叙述中错误的是( )。
A.gets函数用于从终端读入字符串B.getchar函数用于从磁盘文件读入字符C.fputs函数用于把字符串输出到文件D.fwrite函数用于以二进制形式输出数据到文件正确答案:B答案解析:本题考查的是C语言中输入、输出函数的使用,gets和getchar 函数用于从标准输入设备键盘读入字符串和字符;fputs用于把字符串输出到文件;fwrite用于以二进制形式输出数据到文件。
2、拷贝构造函数的参数一般是( )A.某对象名B.某对象成员名C.某对象的引用名D.指向对象的指针名正确答案:C3、C++语言是以哪种语言为基础逐渐发展演变而成的一种程序设计语言( )A.ASPB.CC.VBD.Java正确答案:B4、软件设计中划分模块的一个准则是( ).A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合正确答案:B答案解析:一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
5、下述关于数据库系统的叙述中,正确的是( )。
A.数据库系统减少了数据冗余B.数据库系统避免了一切冗余C.数据库系统中数据的一致性是指数据类型一致D.数据库系统比文件系统能管理更多的数据正确答案:A答案解析:数据库系统会减少数据冗余,但不可能避免一切冗余。
6、关于纯虚函数,下列表述中正确的是( )。
A.纯虚函数是没有给出实现版本(即无函数体定义)的虚函数B.纯虚函数的声明总是以″=0″结束C.派生类必须实现基类的纯虚函数D.含有纯虚函数的类不可能是派生类正确答案:B答案解析:纯虚函数是在声明虚函数时被″初始化″为O的虚函数。
纯虚函数没有函数体,纯虚函数的作用是在基类中为其派生类保留一个函数名称。
7、下列描述中错误的是( )A.派生类可以作为基类派生其他的子类B.派生类继承基类的所有数据成员C.派生类可以有多个基类D.派生类不能继承一些函数成员正确答案:B8、已知int m= 10;在下列定义引用的语句中,正确的是( )。
2023年公务员省考之行测练习题(二)及答案单选题(共30题)1、据介绍,北半球人口相对密集,燃烧化石燃料等人类活动不断推高碳排放量,因此北半球大气中的二氧化碳浓度在2013年已达到400PPM这一标杆水平。
相对来说,南半球人类活动较少,而南极洲更是人烟稀少,但即便如此,2017年6月南极洲的二氧化碳浓度也达到了400PPM这一标杆值。
根据以上信息,下列推论正确的是A.人类活动对地球影响已经深入到极地B.二氧化碳浓度升高对南极洲地貌有深远影响C.南极洲二氧化碳浓度不会再降到400PPM以下D.北极的二氧化碳浓度在4、5年前就远超南极【答案】 A2、一个大党诞生于一条小船。
从此,中国共产党引领革命的航船,______开天辟地,使中国革命的面貌______。
A.披荆斩棘改天换地B.乘风破浪改头换面C.踏浪而来日新月异D.劈波斩浪焕然一新【答案】 D3、X2$NM 732VW 夫XMNA.0B.1C.2D.3【答案】 A4、下列选项中,不属于我国法定人民团体的是()。
A.陕西省工商联B.陕西省作家协会C.陕西省妇女联合会D.西安某大学的学生会【答案】 D5、如果丁做电工,则可以得出以下哪项?A.甲或做焊工,或做水工B.乙或做焊工,或做木工C.丙或做木工,或做焊工D.戊或做水工,或做焊工【答案】 B6、在中国四大古典文学名著中,唯一出自于清代的小说是()A.《红楼梦》B.《三国演义》C.《水浒传》D.《西游记》【答案】 A7、从众行为是指个人因受到群体的压力而在知觉判断、动作等方面作出与众人趋于一致的行为。
A.我一直喜欢蓝颜色,没想到是今年的流行色B.吃完饭,大家都要去唱歌,虽然我并不喜欢,但还是跟大家一起去了C.既然大家都同意这个方案,那我也同意D.今年流行皮大衣,虽然我并不宽裕,但还是咬牙买了一件【答案】 A8、据消息人士透露,二手房备案系统主要是控制二手房的成交情况。
在办理正式的产权过户前,买卖双方可以在交易中心查询该房源是否有抵押等权利限制。
计算机二级c语言经典练习题及解析答案一、单选题1. C语言中的三大基本数据类型包括( B )A.整型、实型、逻辑型B.整型、实型、字符型C.整型、逻辑型、字符型D.整型、实型、逻辑型、数组型2. 在C语言中,以下合法的字符常量是( c )A. '\048'B. 'ab'C. '\43'D. "\0"3.设x 为 int 型变量,执行下列语句: x=10; x+=x-=x-x; 则x的值为 ( B )A. 15B. 20C. 25D. 304. 定义如下变量和数组: int i, x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句for(i=0;i<3;i++) printf("%d",x[i][2-i]); 的输出结果是( C )A. 1 4 7B. 1 5 9C. 3 5 7D. 3 6 95.逗号表达式(a=3*5,a*4),a+15的值是( b )A.15B. 30C. 60D. 756. .以下程序的输出结果是( c )。
main( ){ int x=10,y=11;printf("%d,%d\n",x--,--y);}A. 11,11B. 10,11C. 10, 10D.11,107.若一个外部变量的定义形式为static int x ; 其中static的作用是( d )A.将变量存放在静态存储区,使x的值可以永久保留B.使变量x可以由系统自动初始化C.使x的值可以永久保留D.使x只能在本文件内引用8.有如下变量说明:int k=2;则下面的循环共执行多少( d )次while (k!=0) {printf("%d",k);k--;}A.无限多次 B.0次 C.1次 D. 2次9.设有变量说明:int a=7,b=8;那么语句:printf("%d,%d\n",(a+b,a),(b,a+b));的输出应该是( a )A. 7,15B. 8,15C. 15,7D.15,810.若已定义:int a[9], *p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是( b )A. p+1B. a++C. a+1D. ++p11. C语言变量名中不能使用的字符是( d )A. 数字B. 字母C. 下划线D. 关键字12.以下变量定义中合法的是( a )A.short a=2.1e-1;B. double b=1+5e0.5;C. long do=0xffe ;D. float 3_end=1-e3;13.若有说明语句char ch1=′\x79′;则ch1( c )A.包含4个字符B.包含3个字符C. 包含2个字符D.包含1个字符14.C语言中的函数( b )A. 可以嵌套定义B.嵌套调用和递归调用均可C. 不可以嵌套调用D. 可以嵌套调用但不可以递归调用15. 设整形变量a=12;则执行完语句a+=a-=a*a后a的值为( c )A. 552B. 264C. -264D. 14416.设a=1,b=2,c=3,d=4,则表达式:a>b?a:c<d?a:d的结果是( a )A.1 B.2 C.3 D.417.若有说明语句:int b[][4]={ 3,1,2,5,7,6,4}; 则b数组的行数为( b )A. 3B. 2C.无确定值D. 118. 若有定义:char c[10];从键盘输入“LiFang”,则正确的函数引用是( c )A. scanf(″%c″,&c[10]);B. gets(c);C. scanf(″%s″,&c);D. gets(c[10]);19. 两个基类型相同的指针变量之间,不能进行的运算是( c )A. <B. =C. +D.-20. 下面程序段执行结果是( b )int i=5,k; k=(++i)+(++i)+(i++); printf("%d,%d",k,i);A. 24,8B. 21,8C. 21,7D. 24,721.以下选项中属于C语言的数据类型是( b )。
C语言程序设计练习题(答案)1.1上机实训项目实验1实验步骤1、进入VC环境从“开始”→“程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual C++ 6.0”,这时进入VC集成环境的主菜单窗口,屏幕显示如图1_1所示。
图1-1 VC集成环境的主菜单窗口2、VC环境下C程序的编辑、连接和运行(1)新建一个源程序①在VC环境中选择“文件”菜单,然后单击“新建”菜单项。
如图1-2所示图1-2 选择新建② 在弹出的新建对话框中设置好相应的内容,如图2-2所示。
要事先准备好保存文件的目录,例d:\lx 目录。
在图1-3中“文件”一栏的源程序文件的扩展名一定要输入C 语言程序的扩展名“.c ”。
设置好后,单击“OK ”,就回到了VC++的编辑界面,即将进行输入和编辑的源程序文件example.c 文件存放在D 盘的LX 目录下。
图1-3 新建对话框的设置③ 在图1-4的工作区中,输入源程序2.设置源程序的文件名,扩展名一定要为“.c ”且一定要输入扩展名1.单击该处3.设置存放目录图1-4 输入、编辑源程序④输入源程序文件后可在主菜单栏中选择“文件”(FILE),并在其下拉菜单中选择“保存”(SAVE),如图1-5所示。
图1-5 保存源程序⑤源程序的编译如图2-6所示,单击主菜单的“编译”(Build),在其下拉菜单中选择“编译example.c”(Compile example.c),或者单击工具栏上的“编译”按钮,如图1-6所示。
在单击“编译”后,屏幕上会出现一个如图1-7所示的对话框。
内容是“This build command requires an activeproject worksapce,Would you like to create a default project worksapce?”,要创建一个默认的项目工作区,单击“是(Yes)”,表示同意,将开始编译;单击“No ”,表示不同意,将取消编译。
注:红色字体为重点题,黑色字体为非重点题。
答案:蓝色表示练习题第一章餐饮食品中常见的危害因素单选题1.下列食品中,容易引起食物中毒的是:A. 常温下放置较长时间的青专鱼B. 没有煮熟、外表呈青色的四季豆C. 以上都是2.青专鱼特有的引起食物中毒的致病因素是:A. 致病菌B. 组胺C. 亚硝酸盐3.食品中最可能引起食物中毒的危害是:A. 化学性危害和物理性危害B. 细菌和病菌C. 寄生虫和霉菌4.下列哪种食品中的亚硝酸盐含量可能最高?A. 青皮红肉鱼B. 烤肉C. 暴腌菜5.细菌生长良好的温度范围(即危险温度带)是:A. -18℃~30℃B. 25℃~70℃C. 5℃~60℃6.以下哪种食物最可能引起亚硝酸盐食物中毒?A. 变质的鱼肉B. 制作不当的腌肉、肴肉C. 霉变的花生7.下列哪种鱼类可引起组胺食物中毒?A. 河豚鱼B. 金枪鱼C. 青鱼8.大部分餐饮食品中能够实际运用的控制食品中细菌生长繁殖最有效的措施是:A. 控制时间和温度B. 控制酸碱度和氧气C. 控制温度和湿度9.以下哪种食品最适宜于细菌生长?A. 柠檬B. 裱花蛋糕C. 苏打饼干10.为防止豆浆引起的食物中毒,豆浆在煮沸后一般应维持沸腾多少时间?A. 1分钟B. 3分钟C. 5分钟11.以下哪种是国家禁止餐饮业采购、加工和销售的贝类?A. 福寿螺B. 黄泥螺C. 织纹螺12.引起亚硝酸盐食物中毒最常见的原因是:A. 误用亚硝酸盐当食盐用B. 食用腐烂变质蔬菜C. 食用腌腊肉13.预防河豚鱼中毒最有效的措施是。
A. 采用高温长时间(如在200℃温度条件下烹煮2小时)烹煮河豚鱼B. 不食用鲜河豚鱼,只食用河豚鱼干C. 不食用河豚鱼或河豚鱼干多选题1. 以下哪些是致病性病毒的特点?A. 可以通过人的排泄物污染食品B. 在适宜的条件下,食品中的病毒可以增殖C. 可在食品与食品之间传播D. 可在食品接触的表面与食品之间传播2. 以下哪些是河豚鱼的特点?A. 毒素加热后也难以去除B. 除严格按要求加工的干制品外,不得经营任何鲜或冰河豚鱼C. “巴鱼”是河豚的一种,也禁止经营D. 禁止经营任何生或熟的河豚鱼干制品是非题1.烹饪时只要烧熟煮透,就可以杀灭所有细菌。
C语言习题集第一章C语言概述复习要点:1. 程序的构成,main函数和其他函数。
2.语句,注释3.运行C程序的步骤和方法习题:1.C程序是由函数构成的,一个C程序中至少包含一个main函数。
2.函数是C程序的基本单位。
(最小单位是表达式)3.C程序有且只有一个main函数。
4.C程序从main函数开始执行。
5.C程序注释符是由/*和*/组成,且不能嵌套使用。
6.C程序的语句是以; 结束。
7.C程序一条语句可分多行写,需要以为连接符。
(可以直接换行)8.C程序可以用{ 和} 将多条语句括起来,形成复合语句。
9.上机运行一个C程序必须经过源代码输入,编译,连接,运行4个步骤。
10.C程序的源文件扩展名是。
c 。
11.以下叙述中正确的是(C)A)C语言程序将从源程序中第一个函数开始执行B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main作为主函数名,main必须小写,程序将从此开始执行,在此结束D)main可作为用户标识符,用以命名任意一个函数作为主函数12.以下叙述中错误的是(D)A)C语言源程序经编译后生成后缀为.obj的目标程序B)C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中D)C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令13.以下不是语句的是(A)A) a=10 B)a=b+c;c=20;C) ; D){a=b;b++;}14.运行以下程序main(){int a=10; /* 定义一个变量 aa=20; */printf(“%d”,A); 此程序应该改写为:printf(“%d”,a)}输出的结果是 B 。
A) 10 B)2015.牢记VC++6.0的出错提示英文提示中文实际意义missing ; , ( { 等表示缺少;,( {'T' : undeclared identifier T没有定义(T要先定义然后才能使用)'sqrt' undefined; sqrt如果是函数名则表示它的头文件没有包含'T' : redefinition T重复定义(可能是多次定义了T)Cannot open include file 头文件的拼写或路径的不对第二章数据类型,运算符与表达式复习要点:1. C的数据类型(整型,字符型,浮点型)及其定义方法。
2023年一级建造师之一建建筑工程实务练习题(二)及答案单选题(共40题)1、节水型卫生坐便器的用水量最小不大于()L。
A. 3B. 5C. 6D. 8【答案】 C2、防火涂料按其厚度可分为()。
A.A类、B类、H类B.CB类、A类、B类C.A类、B类、CH类D.CB类、B类、H类【答案】 D3、关于板材隔墙施工工艺的说法,正确的是()。
A.隔墙板厚度选用应按设计要求并考虑便于门窗安装,最小厚度不小于50mmB.胶粘剂要随配随用,并应在60min内用完C.隔墙板安装顺序应从门洞口处向两端依次进行;无门洞的墙体,应从中间向两边顺序安装D.板缝用50~60mm宽的玻纤布条,阴阳转角用200mm宽布条处理【答案】 D4、混凝土的立方体抗压强度为fcu,棱柱体抗压强度为fc,抗拉强度为ft,则同一混凝土的强度次序为( )。
2005年A.fc>fcu>ftB.fcu =fc>ftC.fcu>ft>fcD.fcu>fc>ft【答案】 D5、下列板材内隔墙施工工艺顺序中,正确的是()。
2018真题A.基层处理→放线→安装卡件→安装隔墙板→板缝处理B.放线→基层处理→安装卡件→安装隔墙板→板缝处理C.基层处理→放线→安装隔墙板→安装卡件→板缝处理D.放线→基层处理→安装隔墙板→安装卡件→板缝处理【答案】 A6、某悬挑长度为1.2m,混凝土强度为C30的现浇阳台板,拆除底模时混凝土强度至少应达到()。
A.15N/mm2B.21N/mm2C.22.5N/mm2D.30N/mm2【答案】 D7、关于墙体瓷砖饰而施工工艺矫序的说法,正确的是()A.排砖及弹线→基层处理→抹底层砂浆→浸砖→镶贴面砖→填缝与清理B.基层处理→抹底层砂浆→排砖及弹线→浸润基层→镶贴面砖→填缝与清理C.基层处理→抹底层砂浆→排砖及弹线→浸砖→镶贴面砖→填缝与清理D.抹底层砂浆→排砖及弹线→抹结合层砂浆→浸砖→镶贴面砖→填缝与清理【答案】 C8、关于普通混凝土外加剂的说法,正确的是()。
试卷编号:65所属语言:C语言试卷方案:平时练习-选择试卷总分:276分共有题型:1种━━━━━━━━━━━━━━━━━━一、单项选择共276题(共计276分)━━━━━━━━━━━━━━━━━━第1题(1.0分)题号:288下列字符序列中,可用作C标识符的一组字符序列是()。
A:S.b,sum,average,_above B:class,day,lotus_1,2dayC:#md,&12x,month,student_n! D:D56,r_1_2,name,_st_1答案:D第2题(1.0分)题号:910C语言程序从main()函数开始执行,所以这个函数要写在( ).A:程序文件的开始 B:程序文件的最后C:程序文件的任何位置(除别的函数体内) D:它所调用的函数的前面答案:C第3题(1.0分)题号:908完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( ). A:连接、编译 B:编译、连接 C:连接、运行 D:运行答:B第4题(1.0分)题号:909要调用文件处理函数时,在#include 命令行中应包含( ).A:"ctype.h" B:"string.h" C:"stdio.h" D:"math.h"答案:C第5题(1.0分)题号:609以下数据中,不正确的数值或字符常量是()。
A:0B:5LC:o13D:9861答案:C第6题(1.0分)题号:911在C语言中,错误的语句是( ).A:a=b=c;B:;C:breakD:b=3*5,a*=4;答案:C第7题(1.0分)题号:574以下标识符中,不能作为合法的C用户定义标识符的是()。
A:a3_b3B:voidC:_123D:IF答案:B第8题(1.0分)题号:907一个C语言程序是由( )组成.A:一个主程序和若干子程序B:函数C:若干过程D:若干子程序答案:B第9题(1.0分)题号:234C语言源程序的基本单位是()。
1循环控制:2数组:3函数4宏定义5指针6文件1循环控制:(一)选择题1.设有程序段int k=10;while(k=0)k=k-1;这下面描述中正确的是_________.a)while循环执行10次 b)循环是无限循环c)循环体语句一次也不执行 d)循环体语句执行一次2.语句while(!E);中的表达式!E等价于________. a)E==0 b)E!=1 c)E!=0 d)E==1 3.下面程序段的运行结果是__________.int n=0;while(n++<=2);printf("%d",n);a)2 b)3 c)4 d)有语法错4.下面程序的运行结果是____.#include<stdio.h>main(){int num=0;while(num<=2){num++;printf("%d\n",num); } }a)1 b)1 c)1 d)12 2 23 345.以下程序段________.x=-1;do{x=x*x;}while(!x);a)是死循环 b)循环执行二次c)循环执行一次 d)有语法错误6.若有如下语句int x=3;do{printf(""%d\n",x-=2);}while(!(--x));则上面程序段______.a)输出的是1 b)输出的是1和-2 c)输出的是3和0 d)是死循环7.下面程序的运行结果是______.#include<stdio.h>main(){int y=10;do{y--;}while(--y);printf("%d\n",y--);}a)-1 b)1 c)8 d)08.若i为整型变量,则以下循环执行次数是_____.for(i=2;i==0;)printf("%d",i--);a)无限次b)0次 c)1次 d)2次9.执行语句for(i=1;i++<4; );后变量i的值是______.a)3 b)4 c)5 d)不定10.以下正确的描述是_______.a)continue语句的作用是结束整个循环的执行b)只能在循环体内和switch语句体内使用break语句c)在循环体内使用break语句或continue语句的作用相同d)从多层循环嵌套中退出时,只能使用goto语句(二)填空题1.下面程序段是从键盘输入的字符中统计字符的个数,用换行符结束循环。
习题二一、填空题1. 对运算符进行重载时,不能改变结合性,不能改变操作数个数,不能改变优先级。
2. 当++被重载为后置成员函数时需要0 个参数。
3. 当++被重载为前置成员函数时需要 1 个参数。
4. 在C++中,运算符重载函数可以是成员函数,也可以是友元函数,还可以是普通函数。
5. 友元破坏了类的封装性特性。
6. 类的友元能够访问这个类的所有成员。
7. 类的静态数据成员的初始化是在类外进行的。
8. 类的静态成员函数没有this指针。
9. 类的静态成员函数访问该类的非静态成员可以通过参数传递对象来实现。
10. 不能被重载的类成员函数是构造和析构函数。
二、选择题1. 已知类A有一个带double型参数的构造函数,且将运算符“+”重载为该类友元函数,若如下语句:A x(2.5),y(3.6),z(0); z=x+y; 能够正常运行,运算符重载函数operator+ 应在类中声明为( D )。
A. friend A operator+ (double , double) ;B. friend A operator+ ( double , A &);C. friend A operator+ ( A &, double);D. friend A operator+ ( A & , A &);2. 下列关于运算符重载的描述中,正确的是(D )。
A. 运算符重载可以改变操作数的个数B. 运算符重载可以改变优先级C. 运算符重载可以改变结合性D. 运算符重载不可以改变语法结构3. 友元运算符表达式obj1>obj2被C++编译器解释为(A )。
A. operator>(obj1,obj2)B. >(obj1,obj2)C. obj2.operator>(obj1)D. obj1.operator>(obj2)4. 下列关于C++运算符函数的返回类型的描述中,错误的是(C )。
A. 可以是类类型B. 可以是int类型C. 可以是void类型D. 可以是float类型5. 为了区别单目运算符的前置和后置运算,在后置运算符进行重载时,额外添加一个参数,其类型是( D )。
A. voidB. charC. floatD. int6. 以下运算符中,不能在C++中重载的是( A )。
A. ?:B. +C. -D. <=7. 在一个类中可以对一个操作符进行(D )重载。
A. 1种B. 2种以下C. 3种以下D. 多种8. 若类A被说明成类B的友元,则(D )。
A. 类A的成员即类B的成员B. 类B的成员即类A的成员C. 类A的成员函数不能访问类B的成员D. 类B不一定是类A的友元9. 友元的作用是(A )。
A. 提高成员的运行效率B. 加强类的封装性C. 实现数据的隐藏性D. 增加成员函数的种类10. 下列关于静态数据成员的特性描述中错误的是(D )。
A. 说明静态数据成员时前边要加staticB. 静态数据成员要在类体外进行初始化C. 引用静态数据成员时,要在静态数据成员名前加“类名”和作用域运算符D. 静态数据成员不是所有对象所共用的11. 关于友元的描述中,正确的是(C )。
A. 友元函数是成员函数的一种,它可以访问类的私有成员B. 友元函数不能提高程序的运行效率C. 友元函数要在类体内说明D. 友元函数增强了类的封装性和隐藏性12. 用来说明类的友元的是(D )。
A. privateB. protectedC. publicD. friend13. 已知f1和f2是同一个类的两个成员函数,但f1不能调用f2,下列选项中符合要求的是(B )。
A. f1和f2都是静态函数B. f1是静态函数,f2不是静态函数C. f1不是静态函数,f2是静态函数D. f1和f2都不是静态函数14. 下面对于友元函数描述正确的是(C )。
A. 友元函数的实现必须在类的内部定义B. 友元函数是类的成员函数C. 友元函数破坏了类的封装性和隐藏性D. 友元函数不能访问类的保护成员15. 一个类的友元函数或友元类能够通过成员操作符访问该类的(D )A. 私有成员B. 保护成员C. 公有成员D. 所有成员16. 下面对静态数据成员的描述中,正确的是(D )A. 静态数据成员可以在类体内进行初始化B. 静态数据成员不可以被类的对象调用C. 静态数据成员不受private控制符的限制D. 静态数据成员可以直接用类名调用17. C++语言中提供的(B )不是类的成员,但具有类成员的特权。
A. 构造函数B. 友元函数C. 虚函数D. 重载函数18. 下列关于静态成员函数的说法中不正确的是(C )A. 静态成员函数不属于对象成员B. 对静态成员函数的引用不需要使用对象名C. 静态成员函数中可以直接引用类的非静态成员D. 静态成员函数中可以直接引用类的静态成员19. 下面对友元的错误描述是( D )。
A. 关键字friend用于声明友元B. 一个类中的成员函数可以是另一个类的友元函数C. 友元函数访问对象的成员不受访问特性影响D. 友元函数通过this指针访问对象成员20.下列有关一个类的友元函数的叙述中,正确的(B )A. 允许在类外访问类中除私有成员以外的所有成员B. 允许在类外访问类中的任何成员C. 友元也是该类的成员D. 友元的声明必须被放在该类的公有部分三、判断题1、静态数据成员可以通过类名或对象名引用。
2、静态数据成员可以在类内或类外进行初始化。
3、在静态成员函数中可以访问本类中非静态的数据成员。
4、类的静态成员函数的初始化工作要放在类外进行。
5、若A是B的友元类,B是C的友元类,则A是C的友元类。
6、通过运算符重载,可以定义新的运算符。
7、C++中的所有运算符都能被重载。
8、运算符重载不能改变操作数的个数。
9、运算符重载不能改变其优先级与结合性。
10、在运算符重载函数中不能使用缺省的参数值。
答案:1、√2、×3、√4、×5、×6、×7、×8、√9、√10、√四、程序分析题(写程序运行结果)1. #include <iostream.h>class A{int x,y,z;public:A(int vx,int vy,int vz) { x=vx;y=vy;z=vz;}A() { x=0;y=0;z=0;}A operator+(A t){A te;te.x=x+t.z;te.y=y+t.y;te.z=z+t.z;return te;}A operator-(A t){A te;te.x=x-t.z;te.y=y-t.y;te.z=z-t.z;return te;}A operator=(A t){x=t.x;y=t.y;z=t.z;return *this;}void print() { cout<<x<<" "<<y<<" "<<endl; }};void main(){A t1(10,10,10),t2(20,20,20),t3;t3=t1+t2;t3.print();t3=t2=t1;t1.print();t2.print();t3.print();}答案:30 3010 1010 1010 102. #include <iostream.h>class A{public:A(int r,int c) { row=r;col=c; elem=new int[row*col]; } int& operator()(int x,int y) { return elem[col*x+y]; }int operator()(int x,int y)const { return elem[col*x+y]; }~A() { delete[] elem; }private:int *elem;int row,col;};void main(){A m(5,8);int i;for( i=0;i<5;i++) m(i,1)=i+5;for( i=0;i<5;i++) cout<<m(i,1)<<",";cout<<endl;}答案:5,6,7,8,9,3. #include <iostream>using namespace std;class goods{private:static int totalweight;int weight;public:goods(int w) { weight=w; totalweight+=weight; }goods(goods &gd) { weight=gd.weight; totalweight+=weight; } ~goods() { totalweight-=weight; }static int gettotal() { return totalweight; }};int goods::totalweight=0;void main(){goods g1(50);cout<<goods::gettotal()<<endl;goods g2(100);cout<<g2.gettotal()<<endl;}答案:501504. #include <iostream>using namespace std;class A{int i,j;static int c;public:A(int a=0,int b=0) { i=a; j=b; c++; }~A() { c--; }static void f() { cout<<"c="<<c<<endl; } };int A::c=0;void main(){A a(4,8),b,d;{A z(3,6), f;A::f();}A::f();答案:c=5c=35. #include <iostream>using namespace std;class point{public:void poi(int px=10,int py=10){ x=px; y=py; }friend int getpx(point a);friend int getpy(point b); private:int x,y;};int getpx(point a){ return a.x; }int getpy(point a){ return a.y; }void main(){point p,q;p.poi();q.poi(15,15);cout<<getpx(p);cout<<getpy(p)<<endl;cout<<getpx(q);cout<<getpy(q)<<endl;}答案:15156. #include <iostream.h>class B;class A{int data;A *prev;public:A(int d,A *n){data=d;prev=n;}friend class B;};class B{A *top;public:B(){top=0;}void push(int i){A *n=new A(i,top);top=n;}int pop(){A *t=top;if(top){top=top->prev;int c=t->data;delete t;return c;}return 0;}void main(){int c[10]={23,34,56,87,67,876,42,657,55,66};B s;for(int i=0; i<10;i++)s.push(c[i]);for(i=0; i<10; i++)cout<<s.pop()<<",";cout<<endl;}答案:66,55,657,42,876,67,87,56,34,23,7. #include<iostream>using namespace std;class TIME;class DATE{public:D A TE(int a=2004,int m=9,int b=23){year=a; month=m; day=b;}v oid DateTime(TIME &t);private:i nt year,month,day;};class TIME{public:T IME(int h=0,int m=0,int s=0){hour=h; minute=m; second=s;}f riend void DA TE::DateTime(TIME&t);private:i nt hour,minute,second;};void DATE::DateTime(TIME&t){c out<<"Nowis"<<year<<'.'<<month<<'.'<<day<<t.hour<<':'<<t.minute<<':'<<t.second<<'.'<<endl;}int main(){DA TE b(2004,9,23);TIME t(10,20,50);b.DateTime(t);return 0;}答案:Now is2004.9.2310:20:50.四、编程题1. 定义一个处理日期的类TDate,它有3个私有数据成员:Month,Day,Year和若干个公有成员函数,并实现如下要求:(1)成员函数设置缺省参数;(2)定义一个友元函数来打印日期。