《C++语言基础教程》.doc

上传人:飞****2 文档编号:56702473 上传时间:2022-11-03 格式:DOC 页数:136 大小:303KB
返回 下载 相关 举报
《C++语言基础教程》.doc_第1页
第1页 / 共136页
《C++语言基础教程》.doc_第2页
第2页 / 共136页
点击查看更多>>
资源描述

《《C++语言基础教程》.doc》由会员分享,可在线阅读,更多相关《《C++语言基础教程》.doc(136页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第一章习题一、 选择填空1. 下列各种高级语言中,( )是面向对象的程序设计语言。A.BASIC;B.PASCAL;C.C+ D.Ada2. 下列各种高级语言中,( )是最早提出了对象的概念。A.Algol 60;B.Simula 67;C.Smalltalk;D.C+3. 下述面向对象抽象的原理中,( )是不对的。A. 数据抽象;B. 行为共享;C.进化;D. 兼容;4. ( )不是面向对象系统所包含的要数。A. 重载; B. 对象;C. 类;D. 继承;5. 关于C+与C语言的关系的描述中,( )是错误的。A. C语言是C+的一个子集;B. C语言与C+是兼容的;C. C+对C语言进行了一

2、些改进;D. C+和C语言都是面向对象的;6. 下面关于对象概念的描述中,( )是错误的。A.对象就是C语言中的结构变量;B.对象代表着正在创建的系统中的一个实体;C. 对象是一个状态和操作(或方法)的封装体;D.对象之间的信息传递是通过消息进行的;7. 下面关于类概念的描述中,( )是错误的。A.类是抽象数据类型的实现; B.类是具有共同行为的若干对象的统一描述体;C.类是创建对象的样板;D.类就是C语言中的结构类型;8. C+对C语言作了很多改进,下列描述中( )使得C语言发生了质变,即从面向过程变成为面向对象。A.增加了一些新的运算符;B.允许函数重载,并允许设置缺省参数;C.规定函数说

3、明必须用原型;D.引进了类和对象的概念;9. 按照标识符的要求,( )符号不能组成标识符。A.连接符;B. 下划线;C.大小写字母;D.数字字符;10. 下列符号中,( )不可作为分隔符。A.,;B.:;C.?;D.;二、判断下列描述的正确性,对者划,错者划。1 C+引进了引用的概念,对编程带来了很多方便。2 C+允许使用友元,但是友元会破坏封装性。3 C+中使用了新的注释符(/),C语言中注释符(/*/)不能在C+中使用。4 C+中为了减轻使用者的负担,与C语言相比较C+中减少了一些运算符。5 C+程序中,每条语句结束时都加一个分号(;)。6 C+中标识符内的大小写字母是没有区别的。7 C+

4、中不允许使用宏定义的方法定义符号常量,只能用关键字const来定义符号常量。8 在编写C+程序时,一定要注意采用人们习惯使用的书写格式,否则将会降低其可读性。9 C+是一种以编译方式实现的高级语言。10 在C+编译过程中,包含预处理过程、编译过程和连接过程,并且这三个过程的顺序是不能改变的。11 预处理过程是一般编译过程之后连接过程之前进行的。12 源程序在编译过程中可能会出现一些错误信息,但在连接过程中将不会出现错误信息。三、分析下列程序的输出结果1#includevoid main()coutBeiJing ;coutShangHain ;coutTianJingendl;1 BeiJji

5、ng ShangHai TianJing2.#includevoid main()int a,b;coutab;couta=a,b=bendl;couta-b=a-bn;假定,输入如下两个数据:8 52 Input a,b:8 5A=8,b=5A-b=33#include void main()char c=m;int d=5;coutd=d:;coutc=cn;D=5,c=m四、编译下列程序,改正所出现的各种错误信息,并分析输出结果:1、 main ( )coutThis is a string!;1#include void main()cout”This is a string!”;输出

6、结果:This is a string!2、 #includevoid main( )cinx;int p=x*x;coutp=pn;#includevoid main( )int x;cinx;int p=x*x;cout”p=”p”n”;输出结果:3 p=93、 #include void main ( )int i,j;i=5;int k=i+j;couti+j=kn;#include void main ( )int i,j;i=5;j=3;int k=i+j;cout”i+j=”k”n”;输出结果:I+j=8五、通过对第四题中三个程序的所出现问题的修改,回答下列问题:1. 从对第四题

7、1题的修改中,总结出编程时应注意哪三个问题?2. C+程序中所出现的变量是否都必须先说明才能引用?3. 使用cout和运算符; D. &17、下列各运算符中,()不能作用于浮点数。A/; B.&; C.!; D.18、下列各运算符中,()优先级最高。A. +(双目);B. *(单目); C. b)+(int(b)%2); D. - -a+b22、下列表达式中,()是合法的。已知:double m=3.2; int n=3;A. m3; B. +a+b+; C.b+(a=3); D. ( a=3)-a+二、 判断下列描述是否正确,对者划,错者划。1、 任何字符常量与一个任意大小的整型数进行加减都

8、是有意义的。2、 转义序列表示法只能表示字符不能表示数字。3、 在命名标识符中,大小写字母是不加区别的。4、 C+的程序中,对变量一定要先说明再使用,说明只要在使用之前就可以。5、 C+中数组元素的下标是从0开始,数组元素是连续存储在内存单元中的。6、 数组赋初值时,初始值表中的数据项的数目可以大于或等于数组元素的个数。7、 枚举变量的取值受到该枚举变量所对应的枚举表中的枚举符的局限。8、 指针是用来存放某种变量的地址值的变量。这种变量的地址值也可以存放在某个变量中,存放某个指针的地址值的变量称为指向指针的指针,即二级指针。9、 引用是用来给某个变量以别名的变量。,对引用的操作,实质上就是对被

9、引用的变量的操作。10、 运算符的优先级和结合性可以确定表达式的计算顺序。11、 在说明语句 中,的值和的值是相等的。12、 已知:表达式具有两用性。13、 移位运算符在移位操作中,无论左移还是右移,所移出的空位一律补0;14、 某个变量的类型高是指该变量被存放在内存中的高地址处。15、 隐含的类型转换都是保值映射,显式的类型转换都是非保值映射。16、 类型定义是用来定义一些C+中所没有的新的类型。三、 计算下列各表达式的值(下列各表达式是相互独立的,不考虑前面对后面的影响。)1、 已知:unsigned int x=015,y=0x2b;A. x|y;B.xy;C.x&y;D.x+y; E.

10、x=4.ABCDEF4738910422、 已知:inti(10),j(5);A. +i-j-;B.i=i*=j;C.i=3/2*(j=3-2);D.ij; E.i&j|1; F.i+i&0xff.ABCDEF6501-161203、 已知:int a(5),b(3);计算下列表达式得值以及a和b的值。A.!a&b+;B.a|b+4&a*b;C.a=1,b=2,ab?+a:+b;D.+b,a=10,a+5;E.a+=b%=a+b; F.a!=b2=a+1.ABCDEF0,5,31,5,33,1,315,10,48,8,31,5,34、 已知:int d(5),*pd=&d,&rd=d;A. d

11、+-rd;B.*pd*rd; C.+*pd-rd; D.+rd-d.ABCD025005、 已知:1的ASCII码的值为49。A.3+21+1;B.2*9|31;C.5%-3*2/6-3; D.8= =35)|2=3+2-(0-7).ABCDEF2022-3011四、 按下列要求编写程序1 从键盘上输入两个int型数,比较其大小,并输出显示其中小的。2 从键盘上输入一个int型数,一个浮点型数比较其大小,并输出其中大的。3 输入一摄氏温度,编程输出华氏温度。已知:华氏温度转换为摄氏温度的计算公式如下:C=(F-32)*5/9其中,F表示华氏温度,C表示摄氏温度。#include void ma

12、in() float c,f; coutf; c=(f-32)*5/9; cout” 摄氏温度:”cendl; 4 编程实现输入公里数,输出显示其英里数。已知:1英里=1.60934公里(用符号常量)。#include const float r=1.60934; void main() float m,I; coutm; I=r*m; cout”英里数:”Iendl;5 输入一个int型数,将它的低4位(右4位)都置为1。#include void main() int n,m; coutn; m=n|15; cout”结果为:”mendl;第三章习题一、 选择填空1. 预处理命令在程序中都

13、是以( )开头的。A. * ; B. # ;C . :;D. / ;2. 文件包含命令中被包含的文件的扩转名( )。A.必须为.h;B.不能用.h;C .必须是.c;D.不一定是.h;3. 下列条件编译命令中#if()#else#endifA.整常量表达式;B.任何标识符;C .任意表达式;D.被定义的宏名;4. 带参数的宏定义中,程序中引用宏定义的实参( )。A.只能是常量;B.只能是整型量;C .只能是整形表达式;D.可以是任意表达式;5. 下列( )是语句A. ;;B.a=17;C .x+y;D. cout”n”;6. 下列for循环的次数为( )。for(int i(0),x=0;!x

14、&i=5;i+)A.5;B.6;C .1;D.无限;7. 下列while循环的次数是( )。while(int i=0)i- -;A.0;B.1;C .5;D.无限;8. 下列do-while循环的循环次数为( )。已知:int i(5);docouti- - endl;i- - ;while(i!=0);A.0;B.1;C .5;D.无限;9. 下列for循环的循环体执行次数为( )。for(int i(0),j(10);i=j=10;i+,j- -) A.0;B.1;C .10;D.无限;10. 已知:int a,b;下列switch语句中,( )是正确的。A. switch(a);cas

15、e a:a+;break;case b:b+;break;B. switch(a+b) case 1:a+b;break;case 2:a-b|C. switch(a*a)case1,2:+a;case3,4:+b;D. switch(a/10+b)case 5:a/5;breakdefault:a+b;11. 下述关于循环体的描述中,( )是错误的。A. 循环体中可以出现break语句和continue语句;B. 循环体中还可以出现循环语句;C. 循环体中不能出现goto语句;D. 循环体中可以出现开关语句。12. 下述关于goto语句的描述中,( )是正确的。A. goto语句可在一个文件

16、中随意转向;B. goto语句后面要跟上一个他所转向的语句;C. goto语句可以同时转向多条语句;D. goto语句可以从一个循环体内转到循环体外。13. 下述关于break语句的描述中,( )是正确的。A. break语句可用于循环体内,它将退出该重循环;B. break语句可用于开关语句中,它将退出开关语句。C. break语句可用于if体内,它将退出if语句;D. break语句在一个循环体内可以出现多次。14. 下述关于开关语句的描述中,( )是正确的。A. 开关语句中default子句可以没有,也可以有一个;B. 开关语句中每个语句序列中必须有break语句;C. 开关语句中def

17、ault子句只能放在最后;D. 开关语句中case子句后面的表达式可以是整形表达式。15. 下列关于条件语句的描述中,()是错误的。A. if语句中只有一个else子句;B. if语句中可以有多个else if子句;C. if语句中if体内不能是开关语句;D. if语句中的if体中可以是循环语句。二、 判断下列描述是否正确,对者划,错者划。 预处理命令是在进行编译时首先执行的,然后再进行正常编译。 宏定义命令是以分号结束的。 带参数的宏定义只能有1至2个参数。 文件包含命令所包含的文件是不受限制的。 条件编译命令只在编译时才有作用。 预处理命令的主要作用是提高效率的。 复合语句就是分程序。 条

18、件语句不能作为多路分支语句。 开关语句不可以嵌套,在开关语句的语句序列中不能再有开关语句10开关语句中的default关键字,只能放在该语句的末尾,不能放在开头或中间。11Switch语句中必须有break语句否则无法退出switch语句。12While循环语句的循环体至少执行一次。13Do-while循环可以写成while循环的格式。14For循环是只有可以确定的循环次数时才可使用,否则不能用for循环。15只有for循环的循环体可以是空语句,其他种循环的循环体不能用空语句。16当循环体为空语句时,将说明该循环不作任何工作,只起延时作用。17循环是可以嵌套的,一个循环体内可以包含另一种循环语

19、句。18在多重循环中,内重循环的循环变量应用的次数比外重的多。19Break语句可以出现在各种循环体中。20continue语句只能出现在循环体中。三、 分析下列程序的输出结果。1.#include#define M 1.5#define A(a) M*avoid main()int x(5),y(6);coutA(x+y)endl;13.52. #include#define MAX(a,b) (a)(b)?(a):(b)void main()int m(1),n(2),p(0),q;q=MAX(n,n+p)*10;coutqendl;203.#include#include”f1.cpp”

20、void main()int a(5),b;b=f1(a);coutbendl;f1.cpp文件内容如下:#define M(m) m*mf1(int x)int a(3);return M(x+a);134.#includevoid main()int i(0);while(+i)if(i= =10) break;if(i%3!=1) continue;coutiendl;1475.#includevoid main()int i(1);doi+;cout+iendl;if(i= =7) break;while(i= =3);cout”Ok!n”;3 5 Ok!6.#includevoid

21、main()int i(1),j(2),k(3),a(10);if(!i)a- -;else if (j)if(k) a=5;elsea=6;a+;coutaendl;if(ij)if(i!=3)if(!k)a=1;else if(k)a=5;a+=2;coutaendl;677.#includevoid main()int i,j,a88;* * a=1;for(i=1;i8;i+)* *(a+i)=1;*(*(a+i)+i)=1;for(j=1;ji;j+)*(*(a+i)+j)= *(*(a+i-1)+j-1)+ *(*(a+i-1)+j);for(i=0;i8;i+)for(j=0;j

22、=i;j+)cout*(*(a+i)+j);coutendl;7. 11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1 1 7 21 35 35 21 7 18.#includevoid main()int x(5);doswitch(x%2)case 1:x- -;break;case 0:x+;break;x- -;coutx0);8. 31 -19.#includevoid main()int a(5),b(6),i(0),j(0);switch(a)case 5:switch(b)case 5:i+;break;case 6:j

23、+;break;default: i+;j+;case 6: i+;j+;break;default: i+;j+;couti”,“jendl;1,210.#includechar input=SSSWILTECH1111W1WALLMP1;void main()int i;char c;for(i=2;(c=inputi)!=0;i+)switch(c)case a:couti;continue;case1:break;case 1:while(c=input+i)!=1&c!=0);case 9:coutc;case E:case L:continue;default :coutc; co

24、ntinue;cout ;coutendl;SWITCHWAMP四、 按下列要求编程,并上机调试。 求100之内的自然数中奇数之和。 求100之内的自然数中被13整除的最大数。 求输入两个正整数的最大公约数和最小公倍数。 求下列分数序列的前15项之和。2/1,3/2,5/3,8/5,13/8,21/13,. . . 求i!(i=1,. . .,10)(即求1!+2!+3!+4!+5!+6!+7!+8!+9!+10!之和) 求出11000之间的完全平方数。所谓完全平方数是指能够表示成为另一个证书的平方的整数。要求每行输出8个数。 输入4个int型数,按其大小顺序输出。 有一函数如下所示: x (

25、x1)Y= x+5 (1x0,有两个不等实根;(3) b2-4ac0,有两个共轭复根;(4)a=0,不是二次方程。10编程输出如下图案。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *第四章习题一、 选择填空1. 当一个函数无返回值时,定义它时函数的类型应是( )A. void; B. 任意;C . int;D. 无;2. 在函数说明时,下列( )项是不必要的。A.函数的类型;B.函数参数类型和名次;C .函数名字;D.返回值表达式;3. 在函数的返回值类型与返回值表达式的类型的描述

26、中,( )是错误的。A. 函数的返回值的类型是定义函数时确定的;B. 函数的返回值的类型就是返回值表达式的类型;C. 函数的返回值表达式的类型与函数返回值类型不同时,表达示类型应转换成函数返回值类型;D. 函数的返回值类型决定了返回值表达式的类型。4. 在一个被调用函数中,关于return语句使用的描述,( )是错误的。A. 被调用函数中可以不用 return语句;B. 被调用函数中可以使用多个return语句;C. 被调用函数中,如果有返回值,就一定要有return语句;D. 被调用函数中,一个return语句可返回多个值给调用函数。5. 下列( )是引用调用A. 形参是指针,实参是地址值;

27、B. 形参和实参都是变量;C. 形参是数组名,实参是数组名;D. 形参是引用,实参是变量。6. 在传值调用中,要求( )。A. 形参和实参类型任意,个数相等;B. 形参和实参类型都完全一致,个数相等;C. 形参和实参对应的类型一致,个数相等;D. 形参和实参对应的类型一致,个数任意。7. 在C+中,关于下列设置参数默认的描述中,( )是正确的。A. 不允许设置参数的默认值;B. 设置参数默认值只能在定义函数时设置;C. 设置参数默认值时,应该是先设置右边的再设置左边的;D. 设置参数默认值时,应该全部参数都设置;8. 重载函数在调用时选择的依据中,( )是错误的。A.参数个数;B.参数的类型;

28、C .函数名字;D.函数的类型;9. 下列的标识符中,( )是文件级作用域的。A.函数形参;B.语句标号;C .外部静态类标识符;D.自动类标识符。10. 有一个int 型变量,在程序中使用频度很高,最好定义为( )。A.register;B.auto;C .extern;D.static;11. 下列标识符中,( )不是局部变量。A.register类;B.外部static类;C .auto类;D.函数形参;12. 下列存储类标识符中,( )的可见性与存在性不一值。A. 外部类;B.自动类;C .内部静态类;D.寄存器类。13. 下列存储类标识符中,要求通过函数来实现一种不太复杂的功能,并且

29、要求加快执行速度,选用()合适。A.内联函数; B.重载函数;C .递归调用;D.嵌套调用。14. 采用函数重载的目的在于( )。A.实现共享;B.减少空间;C .提高速度;D.使用方便,提高可读性。15. 在将两个字符串连接起来组成一个字符串时,选用( )函数。B. A.strlen();B.strcpy();C .strcat();D.strcmp. 二、 判断下列描述的正确性,对者划,错者划。 在C+中,定义函数时必须给出函数的类型 在C+中,说明函数时要用函数原型,即定义函数时的函数头部分。 在C+中,所有函数在调用前都要说明。 如果一个函数没有返回值,定义时需用void说明。 在C+

30、中,传址调用将被引用调用所代替。 使用内联函数是以牺牲增大空间开销为代价的。 返回值类型、参数个数和类型都相同的函数也可以重载。 在设置了参数默认值后,调用函数的对应实参就必须省略。 计算函数参数顺序引起的二义性完全是由不同的编译系统决定的。 For循环中,循环变量的作用域是该循环的循环体内。 语句标号的作用域是定义该语句标号的文件内。 函数形参的作用域是该函数的函数体。 定义外部变量时,不用存储类说明符extern, 而说明外部变量时用它。 内部静态类变量与自动类变量作用域相同,但是生存期不同。 静态生存期的标识符的寿命是短的,而动态生存期的标识符的寿命是长的。 重新定义的标识符在定义它的区

31、域内是可见的,而与其同名的原标识符在此区域内是不可见的。但是,它是存在的。 静态类标识符在它的作用域之外是不存在的。 所有的函数在定义它的程序中都是可见的。 编译系统所提供的系统函数都被定义在他所对应的头文件中。 调用系统函数时,要先将该系统函数的原型说明所在的头文件包含进去。三、 分析下列程序的输出结果。1.#include#define N 5void fun();void main()for (int i(1);iN;i+)fun();void fun ()static int a;int b(2);cout(a+=3,a+b)endl;1 5811142. #includeint ad

32、d(int a,int b);void main()extern int x,y;coutadd(x,y)endl;int x(20),y(5);int add(int a,int b)int s=a+b;return s;253.#includevoid f(int j);void main()for(int i(1);i=4;i+)f(i);void f(int j)static int a(10);int b(1);b+;couta”+”b”+”j”=”a+b+jendl;a+=10;2 10+2+1=1320+2+2=2430+2+3=3540+2+4=464.#includevoid

33、 f(int n)int x(5);static int y(10);if(n0)+x;+y;coutx”,”yendl;void main()int m(1);f(m);6,115.#includeint fac(int a);void main()int s(0);for(int i(1);i=5;i+)s+=fac(i);cout”5!+4!+3!+2!+1!=”sendl;int fac(int a)static int b=1;b*=a;return b;5!+4!+3!+2!+1!=1536.#includevoid fun(int ,int , int *);void main()int x,y,z;fun(5,6,&x);fun(7,x,&y);fun(x,y,&z);coutx”,”y”,”zendl;void fun(int a,int b,int *c)b+=a;*c=b-

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

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

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com