《C++程序设计》习题解答.doc

上传人:飞****2 文档编号:78707804 上传时间:2023-03-19 格式:DOC 页数:108 大小:391KB
返回 下载 相关 举报
《C++程序设计》习题解答.doc_第1页
第1页 / 共108页
《C++程序设计》习题解答.doc_第2页
第2页 / 共108页
点击查看更多>>
资源描述

《《C++程序设计》习题解答.doc》由会员分享,可在线阅读,更多相关《《C++程序设计》习题解答.doc(108页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C+程序设计习题解答第1章 C+概述1填空题(1)在面向对象程序设计中,对象是由_、_和_封装在一起构成的实体。(2)在面向对象程序设计中,类是具有_和_的对象的集合,它是对一类对象的抽象描述。(3)面向对象程序设计最突出的特点就是_、_和_。(4)C+语言包含头文件的格式有两种,即_和_。(5)C+源程序要经过_、_、_和_四个环节,才能在屏幕上显示结果。(6)每个C+程序都从_函数开始执行。(7)每个函数体都以_开始,以_结束。(8)C+程序中的每条语句以_结束。(9)C+程序的头文件和源程序的扩展名分别为_和_,目标程序的扩展名为_,可执行程序的扩展名为_。(10)在C+程序中使用基本输

2、入/输出语句需包含的头文件是_,应放在程序的_。(11)在C+程序中注释语句有_和_两种格式。(12)C+程序的续行符为_。(13)如果从键盘输入语句给变量X,则输入函数的形式为_;如果再将变量X的值显示在屏幕上,其输出函数的形式为_。(14)C+程序中的“endl”在输出语句中起_作用。参考答案:(1)对象名,一组属性数据,一组操作(2)相同属性数据,操作(3)封装性,继承性,多态性(4)#include,#include文件名.扩展名(5)编辑,编译,连接,运行(6)主函数(7)、(8)分号;(9).h,.cpp,.obj,.exe(10)#include,开始部分(11)/* */,/(

3、12)(13)cinX、coutX(14)换行并清空流2选择题(1)面向对象程序设计把数据和( )封装在一起。A. 数据隐藏 B. 信息C. 数据抽象D. 对数据的操作(2)C+源程序的扩展名是( )。A. cB. exeC. cppD. pch(3)把高级语言程序转换为目标程序需使用( )。A. 编辑程序B. 编译程序C. 调试程序D. 运行程序(4)C+语言与C语言相比最大的改进是( )。A. 安全性B. 复用性C. 面向对象D. 面向过程(5)以下叙述不正确的是( )。A. C+程序的基本单位是函数B. 一C+程序可由一个或多个函数组成C. 一个C+程序有且只有一个主函数D. C+程序的

4、注释只能出现在语句的后面参考答案:(1)D (2)C (3)B (4)C (5)D3简答题(1)试比较面向对象程序设计、结构化程序设计和模块化程序设计。(2)解释以下概念:类 对象 封装 数据抽象 继承 多态(3)简述C+语言有哪些特点。参考答案:(1)结构化程序设计强调从程序结构和风格上研究程序设计。结构化程序设计的程序代码是按顺序执行的,有一套完整的控制结构,函数之间的参数按一定规则传递,不提倡使用全局变量,程序设计的首要问题是“设计过程”。模块化程序设计将软件划分成若干个可单独命名和编址的部分,称之为“模块”。模块化程序设计的设计思路是“自顶向下,逐步求精”,其程序结构是按功能划分成若干

5、个基本模块,各模块之间的关系尽可能简单,在功能上相对独立。模块和模块之间隔离,不能访问模块内部信息,即这些信息对模块外部是不透明的,只能通过严格定义的接口对模块进行访问。模块化程序设计将数据结构和相应算法集中在一个模块中,提出了“数据结构+算法=程序设计”的程序设计思想。模块化能够有效地管理和维护软件研发,能够有效地分解和处理复杂问题。但它仍是一种面向过程的程序设计方法,程序员必须时刻考虑所要处理数据的格式,对不同格式的数据做相同处理或对相同数据格式做不同处理都要重新编程,代码可重用性不好。面向对象程序设计面对的是一个个对象,用一种操作调用一组数据。把数据和有关操作封装成一个对象。各个对象的操

6、作完成了,总的任务也就完成了。他适用于编写大型程序。结构化程序设计和模块化程序设计适用于比较小的程序,他要求细致的描写程序设计的每个细节。(2)类:在面向对象程序设计中,类是具有相同属性数据和操作数据的函数的封装,它是对一类对象的抽象描述。对象:在面向对象程序设计中,对象是由对象名、一组属性数据和一组操作封装在一起构成的实体。其中属性数据是对象固有特征的描述,操作是对这些属性数据施加的动态行为,是一系列的实现步骤,通常称之为方法。封装:封装是一种数据隐藏技术,在面向对象程序设计中可以把数据和与数据有关的操作集中在一起形成类,将类的一部分属性和操作隐藏起来,不让用户访问,另一部分作为类的外部接口

7、,用户可以访问。数据抽象:抽象的作用是表示同类事物的本质,c+中的数据类型就是对一批具体的数的抽象。类是对象的抽象,对象是类的特例。继承:在面向对象程序设计中,继承是指新建的类从已有的类那里获得已有的属性和操作。多态:在面向对象程序设计中,多态性是指相同的函数名可以有多个不同的函数体,即一个函数名可以对应多个不同的实现部分。(3)面向对象程序设计最突出的特点就是封装性、继承性和多态性。 封装性封装是一种数据隐藏技术,在面向对象程序设计中可以把数据和与数据有关的操作集中在一起形成类,将类的一部分属性和操作隐藏起来,不让用户访问,另一部分作为类的外部接口,用户可以访问。类通过接口与外部发生联系,用

8、户只能通过类的外部接口使用类提供的服务,而内部的具体实现细节则被隐藏起来,对外是不可见的。 继承性在面向对象程序设计中,继承是指新建的类从已有的类那里获得已有的属性和操作。已有的类称为基类或父类,继承基类而产生的新建类称为基类的子类或派生类。由父类产生子类的过程称为类的派生。通过继承,程序可以在现有类的基础上声明新类,即新类是从原有类的基础上派生出来的,新类将共享原有类的属性,并且还可以添加新的属性。继承有效地实现了软件代码的重用,增强了系统的可扩充性。 多态性在面向对象程序设计中,多态性是指相同的函数名可以有多个不同的函数体,即一个函数名可以对应多个不同的实现部分。在调用同一函数时,由于环境

9、的不同,可能引发不同的行为,导致不同的动作,这种功能称为多态。它使得类中具有相似功能的不同函数可以使用同一个函数名。多态既表达了人类的思维方式,又减少了程序中标识符的个数,方便了程序员编写程序。多态是面向对象程序设计的重要机制。4编程题编写程序在屏幕上显示字符串“欢迎大家学习C+语言!”,并按照书中介绍练习C+语言的上机实现过程。参考答案:#includevoid main()cout欢迎大家学习C+语言=z是_类型的表达式;表达式x+y|z是_类型的表达式。(6)表达式13&57的值是_,表达式!(58)|26的值是_。(7)表达式a+bc&d= =5中运算符优先级由高到低的排列顺序是_。(

10、8)试写出下列各表达式的含义。y=xb?max=a:max=b _ y=x*-y _ (x-y)= =(x-z) _ y=x2 _ x*=y+1 _(9)以下程序的功能是:从键盘输入一个字符,判断其是否是字母,并输出相应信息,请填空。#include void main() char c;cinc;if(c=a _ c=A _ c=Z)cout接收的是一个字母endl;elsecout接收的不是一个字母endl;(10)以下程序的输出结果是_。#include void main() int i=0,j=0;while(i15)j+;i+=+j; couti jendl;(11)以下程序的功能

11、是:在屏幕上同一行显示1-9的平方的值,请填空。#include void main() unsigned int i;for _couti*i_; cout endl;(12)以下程序的功能是:求一组(10个)正数中的最大数,当输入为负数时提前结束程序,请填空。#include void main() const int N=10;int x,max=0;cout Please input data:endl;for(int i=1;ix;if(_ )max=x;continue;else if(_)_coutmax=max endl;(13)以下程序的输出结果是_。#include voi

12、d main() int i=0;while(+i)if(i= =10) break;if(i%3!=1) continue;coutiendl;(14)以下程序的输出结果是_。#include void main() int x=5;doswitch(x%2) case 1:x-;break; case 0:x+;break;x-;coutx0);参考答案:(1)4,32 (2)2,4,1,4,8 (3)true,false (4)1,0 (5)逻辑,逻辑 (6)1,1 (7)+ = = & (8) y=xb?max=a:max=b的含义:若ab则将a的值赋值给max,否则将b的值赋值给ma

13、xy=x*-y的含义:现将负y的值乘以x,再将结果值赋值给y (x-y)= =(x-z)的含义:比较x-y和x-z是否相等 y=x2的含义:将x和2按位异或的值赋值给yx*=y+1的含义:将x乘以(y+1), 再将结果值赋值给x(9)&,|,& (10)20 8 (11)i=1;i0&maxx,x0,break; (13)1 4 7(14)3 1 -12选择题(1)下列四组标识符中不属于Visual C+关键字的是( )。A. witchB. breakC. mainD. continue float char cin case(2)下列四组变量命名,不符合Visual C+变量命名规则的是(

14、 )。A. ccB. 6xC. wlD. ye_78 aver char year78 wo(3)假设有两个变量a=65432和b=a*2,在保证数据正确存储的前提下,以下变量类型定义错误的是( )。A.int a;B. unsigned short a;int b; signed int b;C.unsigned short a; D.int a; unsigned short b; signed int b;(4)在if语句中的表达式( )。A. 只能是关系表达式B. 只能是关系表达式和逻辑表达式C. 只能是逻辑表达式 D. 可以是任意表达式(5)以下程序的输出结果为( )。A.t1=tr

15、ueB.t1=8C.t1=falseD. t1=1t2=false t2=0 t2=true t2=0t3=true t3=-1 t3=false t3=1#include void main() bool t1=8;bool t2=0;bool t3=-1;coutt1=t1endl;coutt1= t2endl;coutt1= t3endl;(6)以下程序的输出结果为( )。A. a=13b=4c=3d=6B. a=13b=8c=4d=6C. a=13b=4c=4d=6D. a=13b=8c=3d=6#include void main() int x=8,y=5;int a,b,c,d;

16、a=x+y-;b=x/y2;c=x-y+;d=x%y*2;cout a=a b=b;cout c=c d=dendl;参考答案:(1)A (2)B (3)C (4)D (5)D (6)B3简答题(1)字符常量和字符串常量有什么区别?(2)定义符号常量的方法有哪些?它们有什么区别?。(3)while与do-while语句的主要区别是什么?参考答案:(1)在C+语言中,字符串常量和字符常量是不同的。字符串常量是用一对双引号括起来的字符序列。例如,a、123、hello等都是字符串常量。一般字符常量是用一对单引号括起来的一个字符,其值为ASCII码值。例如,a、A、$、5等都是合法的字符常量。(2)

17、C+语言提供了两种定义符号常量的方法: 用const语句定义符号常量这种方法是C+语言中广泛采用的定义符号常量的方法,其一般格式为:const 数据类型 符号常量=表达式; 用#define语句定义符号常量这是C语言中定义符号常量的方法,其中#define是预处理指令。其缺点是不能显示声明常量的类型。其一般格式为:#define 常量名 常量值(3) while把循环条件判断放在循环体执行前,而do-while循环条件判断放在循环体执行后,不管循环条件是否成立,它都至少执行一次循环体。4编程题(1)求100以内的自然数中奇数之和。(2)求100以内能被13整除的最大自然数。(3)有一个函数如下

18、所示: x (x10)从键盘输入一个x,求出相应的y值。(4)输入3个整型数,按由大到小的顺序输出显示。(5)根据从键盘输入的表示星期几的数字,输出它对应的英文名称。(6)从键盘输入一个整数,求其阶乘。 (7)编写一个简易计算器程序,根据用户输入的运算符做两个数的加、减、乘或除运算。(8)编写程序在屏幕上打印如下图案。* * * * * * * * * * * * * * * * * * * * *参考答案:(1)#include void main() int sum=0;for(int i=1;i=100;)sum=sum+i;i=i+2;cout100以内奇数之和为:sumendl;(2

19、)#include void main() int max=0;int i=13;while(i=100)if(i%13=0&maxi)max=i;i=i+13;continue;cout100以内能被13整除的最大自然数为:maxendl;(3)#include void main() float x,y;cinx;if(x=1&x=10) y=x+5; else y=x-5;coutyendl;(4)#include void main() int inta,intb,intc;cinintaintbintc;if(intaintb)if(intbintc) coutintc intb i

20、nta;else coutintb ; if(intaintc) coutintc inta; elsecoutinta intc; else if(intaintc) coutintc inta intb; else coutinta ; if(intbintc) coutintc intb; else coutintb intc; (5)#include void main() int data;coutdata;switch(data)case 0:coutSundayendl;break;case 1:coutMondayendl;break;case 2:coutTuesdayend

21、l;break;case 3:coutWednsdayendl;break;case 4:coutThursdayendl;break;case 5:coutFridayendl;break;case 6:coutSatudayendl;break;default:couterrorendl;(6)#include void main() int n,t=1;coutPlease input a integer:n;if(n0) coutError!endl;return;else if(n=0|n=1) t=1; else for(int i=1;i=n;i+) t=t*i;coutn!=t

22、endl;(7)#include void main() float x,y;char ch;coutxy;coutch;switch(ch)case +:coutx+yendl;break;case -:coutx-yendl;break;case *:coutx*yendl;break;case /:coutx/yendl;break;default:cout输入有误,退出!;(8)#include void main() for(int i=0;i5;i+)for(int j=0;j2*i+1;j+) cout* ;coutendl;第3章 函数1填空题(1)在C+中,一个函数一般由两部

23、分组成,分别是_和_。(2)在C+中,若没有定义函数的返回类型,则系统默认为_型。(3)当一个函数没有返回值时,函数的类型应定义为_。(4)在C+中,函数的参数传递可有三种形式,即_、_和_。(5)在函数体外定义的变量是_变量;在函数体内定义的变量是_变量。(6)在C+的一个程序内可以定义多个同名的函数,称为_。(7)在一个函数的定义或声明前加上关键字_,该函数就声明为内联函数。(8)若在一个函数中又调用另一个函数,则称这样的调用过程为函数的_调用。(9)在调用一个函数的过程中出现直接或间接调用该函数本身,就称作函数的_调用。(10)在程序中可以使用系统函数,但是要在程序的_说明函数所在的头文

24、件名。(11)以下程序的输出结果为_。#include #define N 8void fun(int);void main( )for(int i=1;iN;i+)fun(i);void fun(int x )int a=0,b=2;cout(a+=x+3,a+b)endl;(12)以下程序的输出结果为_。#include const int N=5;void fun();int a=0;void main( )for(int i=1;iN;i+)fun( ); void fun( )int b=2;cout(a+=3,a+b)endl;(13)以下程序的输出结果为_。#include in

25、t m=3;void fun(int m)m=6;void main()fun(m);cout m=mn;(14)以下程序的输出结果为_。#include int gcd(int,int);void main( ) int a,b;a=16;b=24;cout “GCD(“a,b”)=”gcd(a,b)endl;int gcd(int a,int b) if(b=0)return a; else return gcd(b,a%b);参考答案:(1)函数头,函数体(2)int(3)void(4)传值调用,传址调用,引用调用(5)全局变量,局部变量(6)函数重载(7)inline(8)嵌套(9)递

26、归(10)开始处(11)6789101112(12)581114(13)m=3(14)GCD=82选择题(1)以下叙述不正确的是( )。A. 函数是构成C+程序的基本元素B. 程序总是从第一个定义的函数开始执行C. 主函数是C+程序中不可缺少的函数D. 在函数调用之前,必须要进行函数的定义或声明(2)以下函数声明正确的是( )。A. double fun(int x,int y)B. double fun(int x;int y)C. double fun(int x,int y);D. double fun(int x, y);(3)当一个函数无返回值时,函数的类型应为( )。A. 任意B.

27、 voidC. intD. char(4)下列关于函数声明说法不正确的是( )。void fun(void);A. 函数声明是一条独立的语句,必须以分号结尾B. 函数声明通常放在程序的开始部分C. 函数fun无参数传入D. 函数fun返回一个值,其类型为void(5)下列关于return语句的说法错误的是( )。A. 在函数中通过return语句返回一个函数值B. return语句中表达式的类型决定函数返回的类型C. 在无返回值的函数体中可以没有return语句D. 当函数返回值的类型为void时,函数中不应出现return(表达式)(6)下列关于重载函数的说法正确的是( )。A. 重载函数必

28、须具有不同的返回值类型B. 重载函数形参个数必须不同C. 重载函数必须具有不同的形参列表D. 重载函数名可以不同(7)一个函数为void f(int,float=a),另一个函数为void f(int),则它们( )。A. 不能在同一个程序中定义B. 可以在同一个程序中定义并可重载C. 可以在同一个程序中定义,但不可重载D. 以上说法均不正确(8)下列函数定义中正确的是( )。A. double fun(double x,y) B. double fun(double x, double y) double z;return x/y;z=x/y; return z;C. double fun(

29、double x,y) D. double fun(double x, double y) z=x/y; z=x/y;return z; return x/y; (9)下列关于默认参数值函数说法错误的是( )。A. C+中,允许设置参数的默认值B. 必须从参数表最右边的参数开始,设置参数的默认值C. 在函数声明和函数定义中,默认参数的值必须相同D. 函数调用时,带默认值的参数无实参输入时,使用默认值(10)下列程序的输出结果为( )。A. 10,20,30B. 35,7,5C. 35,20,10D. 10,20,35#include int fun(int a,int b,int c)a=5;

30、b=a+2;c=a*b;return (c);void main()int a=10,b=20,c=30;c=fun(a,b,c);coutc ,b ,an;(11)下列程序的输出结果为( )。A. 0B. 4C. 15D. 60#include int fun(int a,int b)int c;c=a*b;return (c);void main()int a=3,b=5,c=4,x=0;x=fun(fun(a,b),c);coutxendl;(12)下列函数的返回类型为( )。A. voidB. floatC. intD. 无法确定fun(void)float x=3.0,y;y=x*x

31、/2;return (y);(13)下列程序的输出结果为( )。A. x=15B. x=17C. x=23D. x=25#include int x=5;int fun(int a)int c;c=x*a;return (c);void main()int x=3;int a=4;x=x+fun(a);cout x=xendl;参考答案:(1)B (2)C (3)B (4)D (5)B (6)C (7)C (8)B(9)C (10)C (11)D (12)C (13)C3简答题(1)在C+中,函数定义的格式是怎样的?(2)什么是函数的声明?函数声明和函数定义有什么区别?是否必须要进行函数的声明

32、?(3)什么是内联函数?引入内联函数的目的是什么?(4)什么是函数重载?函数重载的原则是什么?(5)函数的嵌套调用应注意什么?(6)函数的递归调用的步骤是什么?(7)什么是局部变量?什么是全局变量?(8)在C+中,如何使用系统函数?参考答案:(1)类型 函数名(形参表)语句序列(2)函数原型又称函数声明,用来告诉编译器函数的名称、函数的返回类型、函数要接收的参数个数、参数类型和参数顺序,编译器用函数原型验证函数调用。在定义函数之前常用函数原型加以说明。函数原型通常位于程序代码的开始处。在函数原型说明中也可以不给出参数名,只给出类型。如果函数调用在函数定义之前则必须声明。若在后则可以不用声明。(

33、3)内联函数是在函数名第一次出现时在函数名之前冠以关键字inline。在程序编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体进行替换。使用内联函数,加快了程序的执行速度,节省程序运行时的开销。(4)函数重载是指同一个函数名可以对应着多个不同函数的实现。原则:函数重载要求编译器能够唯一地确定调用一个函数时应执行哪个函数代码。确定函数时,编译器是通过函数的参数个数、参数类型和参数顺序来区分的。也就是说,进行函数重载时,要求同名函数参数个数不同、参数类型不同或参数顺序不同。否则,将无法确定是哪一个函数体。(5)在使用函数的嵌套调用时要注意函数的返回地址,在函数体执行完毕后,一定要返

34、回调用该函数的主调函数,不能出现越级返回的情况。(6)第一阶段:递推。将原问题不断分解为新的子问题,逐渐从未知向已知递推,最终达到已知的条件,即递归结束的条件,这时递推阶段结束。第二阶段:回归。从已知条件出发,按照递推的逆过程,逐一求值回归,最后达到递归的开始处,结束回归阶段,完成递归调用。(7)在函数或者类内说明的变量是局部变量。全局变量是在函数和类外部定义的变量。(8)C+将所提供的系统函数的说明分别放在不同的头文件中,即.h文件,在程序中使用系统函数时,要在程序开始处说明函数所在的头文件名。4编程题(1)从键盘输入10个浮点数,求其和及其平均值。要求写出其和及平均值的函数。(2)编写函数

35、fun,函数首部为double fun(int n),其功能是计算的值,并通过函数值返回主调函数。(3)输入一个年份,判断是否是闰年。(4)写出一个函数,使从键盘输入的一个字符串反序存放,并在主函数中输入、输出该字符串。(5)编写一个函数,其功能是:输入全班学生的成绩,以负数结束输入,统计学生人数,作为函数值返回主调函数,并计算平均分,通过函数ave返回主调函数。参考答案:(1)void sa()float x,sum=0,ave=0;cout请输入10个符点数:endl;for(int i=0;ix;sum=sum+x;ave=sum/10;cout10个符点数的和为:sum;平均值为:ave

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁