




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计(C+)(第二版)C语言程序设计案例教程自我测试练习参考答案(主编:王明福)第1章 初识C语言一、简答题1. 面向对象方法是如何产生和发展的。2. C+语言有何特点,它对C语言有哪些发展。3. C+程序中的注释有什么作用?如何使用C+中的两种注释方法?二、填空题1C+语言程序的三大区域从上到下分别是(声明部分)、(主函数部分)和(函数定义部分)。2每一条执行语句都是以( 分号“;” )结尾。3引用头文件使用(#include)指令。三、编程题1. 请用Visual C+6.0开发工具,在工程“HelloWorld”中,添加一个C+程序,输出以下信息。*Hello,World!*#include void main()cout*n;cout Hello,World!n;cout*n;2. 在工程“HelloWorld”中(见题1),编制一个名为MyFirst的程序,该程序在计算机显示器上输出以下文字: 喂,你好! 你真聪明,你已经会用VC+编写程序了!#include void main()cout喂,你好!n;couty?(xz?x:z):(yz?y:z)语句的目的是( A )。A 求x,y,z最大值 B 求x,y,z最小值C 求x,y,z中间值 D 求x,y,z平均值二、填空题1. 写出下面各表达式的值(假设a=1,b=2,c=3,x=4,y=3)。(1) !ab&b!=c|x+y=3 ( 1 )(2) a|1+a&b&c ( 1 )2写出下面程序的运行结果是( aabb abc )。#include main()char c1=a,c2=b,c3=c,c4=101,c5=116;printf(a%cb%ctabcn,c1,c2,c3);printf(tb%c %c,c4,c5);3. 写出下面程序的运行结果是( x=11,y=21,m=10,n=21x=10,y=20,m=11,n=20)。#include void main()int x = 10, y = 20 ,m,n;m = x+;n = +y;coutx=x,y=y,m=m,n=nendl;m = x-; n = -y;coutx=x,y=y,m=m,n=nendl;4. 假设 a=12,表达式a%=(5%2)中a的运算结果是( 0 )。三、编程题1. 编程求C语言表达式4a2+5b3的值,假设a = 3,b=1.5。#include iostream.hvoid main()int a = 3;double b=1.5;cout4*a*a+5*b*b*bendl;2. 假设 a=10, 编程求表达式a+=a-=a*=a中a的运算结果。#include void main()int a=10;a+=a-=a*=a;couta=a4 (2) x&y=z (3) x+y|z (4) x|yz#include iostream.hvoid main() int x=1,y=2,z=-2; int a,b,c,d; a = (x+3)4; b = x&y=z; c = x+y|z; d = x|yz; cout4=aendl; cout=z=bendl; cout(3) x+y|z =cendl; coutz =dendl;4. 从键盘输入三角形的三个边长a,b,c,求出三角形的面积。求三角形的面积用公式:area= sqrt(s*(s-a)*(s-b)*(s-c),其中s=1/2(a+b+c)。#include #include void main() double a,b,c,area,s; coutabc; s=(a+b+c)/2.0; area= sqrt(s*(s-a)*(s-b)*(s-c); coutarea=areaendl;第3章 控制结构一、单选题1. 下面程序段运行结果是( C )。int iNum = 0;while( iNum = 2)coutiNum;A. 2B. 3C. 死循环,无限个0 D. 有语法错误2. 以下是if语句的基本形式:if (表达式)语句;其中“表达式”( D )。A必须是逻辑表达式 B. 必须是关系表达式C. 必须是逻辑表达式或关系表达式 D. 可以是任意合法的表达式3. 以下循环语句执行次数是( C )。int i = 1;for( ; i = 0; )cout0 | E0 )C. while( E = 0) D. while(E != 0)二、填空题1. 以下程序的功能是计算s = 1+12+123+1234+12345,请填空。void main()int t = 0,iSum = 0,i;for(i =1;i6;i+)t = i+ ( t*10 );iSum = iSum + t;( coutiSum );2. 以下程序的功能是输出100以内能被3整除且个位数为6的所有整数,请填空。void main()int i,j;for(i=0;i10;i+)j = i*10 + 6;if( j%3 )continue;coutj;3下面程序的输出结果是( 0 2 )。#include void main() int i,j;i = j = 2;if(i = 2) if(i = 1)couti+j; else couti-j;coutti;4. 下面程序的输出结果是( 5 )。#include iostream.hvoid main()int x = 2;switch(x)case 1:case 2: x+;case 3: x += 2;case 4: coutx; break;default: coutx unknown;三、编程题1. 编程统计全班学生成绩。要求每次用键盘输入一个学生的2门分数,计算输出每个学生的总分和平均分,此外,如果平均分大于等于85,为优秀,6085为通过。统计出成绩优秀的学生和及格的学生人数。#include #define N 4void main()int x,y,sum,a85=0,a60=0,i;float av;for(i=0;iN;i+) coutxy;sum = x+y;av = sum/2.0;if(av=85)a85+;if(av=60&av85)a60+; cout优秀的学生=a85,及格的学生人数=a60endl;2. 一个数如果恰好等于他的因子之和,这个数就称为“完全数”。例如6的因子是1,2,3, 而6=1+2+3。因此6是一个完全数。编程序找出1000之内的所有完全数。#include void main()int i,j,x;for(i=1;i1000;i+) for(j=1,x=0;j=i/2;j+)if(i%j=0) x+= j;if(i = x)couti ;3. 打印出所有的“水仙花数”、所谓“水仙花数。是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=13+53+33。#include void main()int i,a1,a2,a3,x;for(i=100;i1000;i+) a1 = i%10;a2 = i%100/10;a3 = i/100;x = a1*a1*a1+a2*a2*a2+a3*a3*a3;if(i = x)couti ;coutn;4. 下列乘法算式中:每个汉字代表1个数字(19)。相同的汉字代表相同的数字,不同的汉字代表不同的数字。赛软件 * 比赛 = 软件比拼试编程确定使得整个算式成立的数字组合,如有多种情况,请给出所有可能的答案。#include void main()long a1,a2,a3,a4,a5;long x,y;for(a1=1;a110;a1+)for(a2=1;a210;a2+)for(a3=0;a310;a3+)for(a4=1;a410;a4+)for(a5=0;a510;a5+)x = (a1*100.0+a2*10.0+a3) * (a4*10.0+a1);y = a2*1000.0+a3*100.0+a4*10.0+a5;if(y = x)printf(%ld%ld%ld * %ld%ld = %ld%ld%ld%ldn,a1,a2,a3,a4,a1,a2,a3,a4,a5);printf(n);5. 求sum=a+aa+aaa+aaaaaa(n个a)之值,其中a是一为数字。例如,当a=3,n=6时,sum=3+33+333+3333+33333+333333。a和n的值由键盘输入。#include void main() int a,n; long sum=0L,t=0; coutan; for(int i=1;i= n;i+) t = t*10+a; sum += t; coutsumendl;第4章 复合数据类型一、单选题1对于一维数组a10,判断下列对数组元素的引用正确的是( A )。Aa2+3 B. a3/1.0 C. a5+8 D. a3.42. 对于二维数组a510,判断下列对数组元素的引用正确的是( C )。A. a50 B. a0.54 C. a44+5 D. a14+93. 以下错误的定义语句是( C )。A. int x 3 = 0,1,1,2,3;B. int x43 = 1,2,3,1,2,3,1,2,3,1,2,3;C. int x 3 = 1,2,3;D. int x43 = 1,2,3,1,2,3,1,2,3,1,2,3;4. 以下程序运行结果是( A )。#include #include void main()char chA10 = abcdef,chB10 = AB0c;strcpy(chA,chB);coutchA3stStaff.iAge; B. cinstStaff0.iAge;C. cinstStaff; D. ciniAge;二、填空题1. 设有定义语句“int a3 = 0,1,3;”,则数组元素a12的值为( 0 )。2将字符串str2拼接到字符串str1后面。请空白处填入一条语句或一个表达式。 #include iostream.h void main() char str180=Good morning! ;char str260=Thank you;char *t = str1, *p = str2;while( *t )t+;while( *p) *t = *p ;t+; p+; *t = 0; coutstr1endl; 3下列程序的输出结果是 *p=1 m=3 n=5 。#include iostream.hvoid main() int a =1,2,3,-4,5; int m,n,*p; p=&a0; m=*(p+2); n=*(p+4); cout*p=*p m=m n=nendl;4. 下列程序的输出结果是 2,2,1,1 。#include iostream.hvoid main()int a =1,2,3,4,5,6, *p;p = a;cout*p,*(+p),*+p,*(p-)2#include void main()int F21,i; F1=1;F2=1;for(i=3;i21;i+) Fi=Fi-1+Fi-2;for(i=1;i21;i+) printf(%5d,Fi);2. 用冒泡排序法对输入的20个数进行降序排序并存入数组中,然后输入一个数,查找该数是否在数组中存在,若存在,打印出数组中对应的下标值。#include #define N 20void main()int aN, i, k, t;for(i=0;iN;i+) cout请输入第i+1ai;for(k=1;k=k;i-) if(aiai-1) t=ai; ai=ai-1; ai-1=t; /反序则交换 cout n排序后的成绩是:;for(i=0;iN;i+)cout ai; /输出排序好的数组coutt;for(i=0;iN;i+)if(t=ai)cout找到了,它在数组中的第i+1个数endl;break;if(i=N)cout没找到!endl;3 编一程序,求字符串str的长度,要求用指针访问字符串。#include void main() int i;char chStr80,*p;cout请输入一个字符串: ;cin.getline(chStr,79,n);p = chStr;i =0;while(*p)p+;i+;cout字符串的长度是iendl;4 试定义一结构体,用来描述日期,具体地说,该结构共有三个成员变量,分别描述年、月、日信息。然后再定义该结构类型的一个变量,要求从键盘输入数据,并输出结果。#include iostream.hstruct MyDate int year; int month;int day;void main()struct MyDate a;couta.year a.month a.day ;couta.year 年a.month月a.day日endl;5由键盘输入N名学生姓名,再按字典排列输出N名学生的姓名。#include #include #define N 4void main()char aN10, i, k, t10;for(i=0;iN;i+) cout请输入第i+1名学生姓名: ;cin.getline (ai,9,n);for(k=1;k=k;i-) if(strcmp(ai,ai-1)0) strcpy(t,ai); strcpy(ai,ai-1);strcpy(ai-1,t);/反序则交换 cout n排序后的成绩是:;for(i=0;iN;i+)cout ai; /输出排序好的数组coutendl;第5章 函 数一、单选题1不能作为函数重载判断依据的是( B )。A. const B. 返回类型 C. 参数个数 D. 参数类型2函数定义为fnFact(int &x),变量定义n=100,则下面调用正确的是( C )。 AfnFact(20) B. fnFact(10+n) C. fnFact(n) D. fnFact(&n)3下面的函数调用语句中,fnNunc()函数的实参个数是( A )。fnNunc(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8);A. 3 B. 4 C. 5 D. 84. 数组名作为实参传递给函数时,传递的是( C )。A该数组长度B. 该数组的元素个数C该数组首地址D. 该数组中各元素的值5设函数原型:void fnFu(int a, int b=6,char c = *);下面调用不合法的是( C )。 AfnFu(4) B. fnFu(4,7) C. fnFu( ) D. fnFu(1,1,*)二、填空题1. 在函数定义前加上关键字“inline”,表示该函数被定义为( 内联函数 )。2. 写出下列程序的输出结果是(30 25 )。#include int a = 5;void fun( int b)int a = 10;a += b;coutaendl;void main( ) int c = 20; fun(c); a += c; couta;3下面程序执行后的输出结果是( 12 )。#include iostream.h#define MA(x) x*(x+1)void main()int a=1,b=2;coutMA(1+a+b)endl;4 以下程序运行结果是(10,64 )。#include #define f(x) x*x*xvoid main()int a = 3,s,t;s = f(a+1);t = f(a+1);couts,tendl;5. 写出下列程序的输出结果是( 6 )。#include int fun(int n)if(n=1)return 1;else return fun(n-1)+1;void main( ) int i,j=0; for(i=1;i4;i+)j += fun(i); coutj 1)f (x ) = x2 (-1 = x = 1) x2 1 (x 1.0)y = x*x+1.0;else if(x= -1.0 & x=1.0)y= x*x;else y =x*x-1;return y;2编写一函数求 1n 之和 , 要求函数原型为 long sum(int n );long sum(int n ) long s=0L;int i;for(i=1;i=n;i+)s += i;return s;3用函数调用的方法,求f(k,n)=1k+2k+nk,其中k, n由键盘输入。#include iostream.hlong fnPower(int n,int k)int i=1;long nk=1L;for(i=1;i=k;i+)nk *= n;return nk;long fn(int k,int n)long f=0L;for(int i=1;i=n;i+)f += fnPower(i,k);return f;void main()int n,k;coutnk;coutfn(k,n)1注意选择好合适的参数类型和返回值类型。在main函数中,输入下列三组数据:(a) n = 0,x = 7; (b) n = 1,x = 2; (c) n = 3, x = 4,求出相应的函数值。#include iostream.hlong fnP(int n,int x)long s;if(n=0)s=1;else if(n=1)s=x;else s =(2*x-1)*fnP(n-1,x)*x - (n-1 )*fnP(n-2,x)/n ;return s;void main()int n,x;coutnx;coutfnP(n,x)y?x:y;return max;int fnMax(int x,int y,int z)int max;max = xy?x:y;max = zmax?z:max;return max;void main()coutfnMax(1,12,3),fnMax(13,6)endl;6. 通过函数重载,利用冒泡排序算法编写函数fnSort(),完成任务int型数组、float型数组和字符数组的排序。#include iostream.hvoid fnSort(int a);void fnSort(float a);void fnPrint(int a);void fnPrint(float a);#define N 6void main()int aN=1,22,7,45,90,3; float bN=1.6F,22.5F,7.2F,45.9F,90.0F,3.0F;fnSort(a); fnPrint(a);fnSort(b); fnPrint(b);void fnSort(int a)int k,i,t;for(k=1;k=k;i-) if(aiai-1) t=ai; ai=ai-1; ai-1=t; /反序则交换 void fnSort(float a)int k,i;float t;for(k=1;k=k;i-) if(aiai-1) t=ai; ai=ai-1; ai-1=t; /反序则交换 void fnPrint(int a)cout n排序后的成绩是:;for(int i=0;iN;i+)cout ai;/输出排序好的数组void fnPrint(float a)cout n排序后的成绩是:;for(int i=0;iN;i+)cout ai;/输出排序好的数组7. 中国古代数学家张丘建在他的算经中提出了著名的“百钱百鸡” 问题:鸡公一,值钱五,鸡母一,值钱三,小鸡,三只值钱一,百钱买百鸡,问公、母、小鸡各几只?#include iostream.hvoid main()int a,b,c;for(a=1;a100/5;a+)for(b=1;b100/3;b+)for(c=3;c99;c+=3)if(a+b+c = 100 & a*5+b*3+c/3 = 100)cout鸡公=a,鸡母=b,小鸡=ca D. x.a2. 假设AA为一个类,a()为该类公有的成员函数,x为该类的一个对象,则访问x对象中成员函数a的格式为( A )。A. x.a() B. x.a C. x-a D. a.x()3. 假设AA为一个类,a为该类私有的数据成员,GetValue()为该类的一个公有成员函数,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为( D )。A. x.a B. x.a() C. x-GetValue() D. x.GetValue()4. 类中定义的成员默认为( B )访问属性。Apublic B. private C. protected D. friend5. 下列各类函数中,( C )不是类的成员函数。A构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数6不是构造函数的特征的是( D )。A构造函数名与类名相同 B. 构造函数可以重载C构造函数可以设置默认参数 D. 构造函数必须指定类型说明7下列选项中,为析构函数的特征的是( A )。A一个类中只能定义一个析构函数 B. 析构函数名与类名不同C析构函数的定义只能在类体内 D. 析构函数可以有一个或多个参数8下面关于成员函数特征的描述中,错误的是( A )。A. 成员函数一定是内联函数 B. 成员函数可以重载C成员函数参数可以设置默认 D. 成员函数可以是静态的9以下有关友元函数的描述中,错误的是( B )。 A. 友元函数不是成员函数 B. 友元函数加强了类的封装性C. 在友元函数中可以访问所属类的私有成员D. 友元函数的作用是提高程序运行效率10已知一个类A,可以定义类A的对象或定义类A的指针,下列一定不正确的形式是( C)。AA a1; B. A a2(12); C. A a3(); D. A *p = new A;二、填空题1. 解释类和对象有什么区别是( )。2C+关键字private和public有什么区别是( )。3在成员函数中,可以通过( )指针访问一个对象的数据。4. C+中,虽然友元提供了类之间进行数据访问的快捷方式,但它破坏了面向对象程序设计的( 类信息隐蔽性)特性。5. 写出下例程序的运行结果。#include class Sampleint x;public:Sample(int a=0) this-x = a; void Display()coutx,this; ;void main() Sample c1(1),c2(3);cout&c1,&c2n;/Ac1.Display(); /Bc2.Display(); /C 若A行输出是0x0012FF7C,0x0012FF78,则B行和C行的输出是( 1,0x0012FF7C;3,0x0012FF78 )。三、编程题1设计一个表示学生信息类,其中包括:姓名、年龄和3门课程的成绩,并可设置学生的相关信息,显示学生的信息。#include iostream.h#include string.hvoid main(void) class MyScore private: char name16; int age; int score1,score2,score3;public:void SetData(char *n,int a,int s1,int s2,int s3) strcpy(name,n);age = a;score1=s1;score2=s2;score3=s3;void Display()coutname,ageendl;couts1=score1endl;couts2=score2endl;couts3=score3rabh; void Area:MyPut() coutrabhendl; couts=60)coutPassendl; else coutNot Passendl;public:Grade(char *n,int s=0) strcpy(name,n);score = s;void PrintData()coutName=namen Score=scoreendl;isPass();void main()Grade a(Wang,100),b(Zhang,90),c(Zhan);a.PrintData(); b.PrintData();c.PrintData(); 4定义一个类Cat,拥有静态数据成员HowMangCats,记录Cat的个体数目;静态成员函数GetHowMang,存取HowMangCats。设计程序测试这个类,体会静态数据成员和静态成员函数的用法。#include iostream.hclass Catpublic: static int HowMangCats;Cat()HowMangCats+;static int GetHowMang()return HowMangCats;int Cat:HowMangCats =0;void main()Cat a,b;coutCat:GetHowMang ()endl;5定义一个类,完成如下操作:从键盘上输入两个学生的学号、姓名和计算机课考试分数,然后分别把它们显示出来。要求:把所需要的变量定义为私有变量,输入和输出操作各用一个内联函数来实现。 #include iostream.hclass CStudentlong ID;char name10;int score;public:inline void DataInput()coutID
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚协议书模板:结合遗产规划与家族企业传承
- 离婚双方房产、存款及子女抚养责任明确协议书
- 商务酒店租赁合同终止及客户权益保障协议
- 离婚协议书关于房产分割及还款责任约定
- 离婚协议范本:共同子女教育基金管理细则
- 高端公寓租赁合同提前终止及补偿条款详尽协议
- 班组级安全培训重点内容课件
- 2025年急救医学AED操作技能竞赛答案及解析
- 冷挤压技术考试题及答案
- 交通银行2025随州市秋招无领导小组面试案例题库
- 数字化设计与制造技术专业教学标准(高等职业教育专科)2025修订
- 善待挫折主题班会课件
- 2025年4月自考13126管理学原理初级试题及答案
- 2025年云南省中考数学试卷真题及解析答案
- 货运平台项目可行性研究报告
- 脚手架废弃物的分类与处理
- 《运动医学与康复》课件
- 河北建投集团招聘笔试题库2025
- 2025年自建房施工合同书 (包工不包料 C款)
- (高清版)DB33∕T 715-2018 公路泡沫沥青冷再生路面设计与施工技术规范
- 军事心理战试题及答案
评论
0/150
提交评论