C++各章节主要知识点及举例.docx
《C++各章节主要知识点及举例.docx》由会员分享,可在线阅读,更多相关《C++各章节主要知识点及举例.docx(17页珍藏版)》请在冰豆网上搜索。
![C++各章节主要知识点及举例.docx](https://file1.bdocx.com/fileroot1/2023-5/19/387b2611-1b4e-48fc-bda4-ea1e2c21a8a8/387b2611-1b4e-48fc-bda4-ea1e2c21a8a81.gif)
C++各章节主要知识点及举例
《C++程序设计I》各章节主要知识点及举例
第2章C++语言概述
主要知识点:
1.C++程序的基本组成:
预处理命令、函数声明、主函数main()、函数定义。
2.C++程序的组织(从小到大的顺序):
字符集->单词(关键字、标识符)->语句(简单语句、复合语句)->函数(main函数、一般函数[声明、定义]、预处理命令行、头文件,特别是:
iostream.h)->程序(源程序[.cpp]、目标文件[.obj]、执行文件[.exe])->项目。
3.函数的定义格式和作用,主函数(main())的特殊地位和作用。
4.C++基本语句和复合语句的语法格式。
5.#include命令:
作用,两种格式(<头文件>和”头文件”),C++系统编译程序对其处理的过程。
6.头文件:
文件名格式、在程序中的使用方法和作用,常见的头文件:
iostream.h、iomanip.h、math.h、string.h、stdlib.h。
7.程序中两种注释标记的写法(//…和/*…*/)及作用。
8.标准输出流对象cout和标准输入流对象cin的含义,<<(插入操作符)和>>(提取操作符)的作用,endl的含义。
9.掌握C++源程序文件名、编译后生成的目标文件名和连接后生成的可执行文件名中相应的扩展名及C++系统的编译程序和链接程序的功能。
10.熟悉VC6.0集成开发环境,掌握控制台应用程序的编辑、编译、链接、运行等流程。
举例:
(1)由C++目标文件连接而成的可执行文件的缺省扩展名为(B)。
AcppBexeCobjDlik
(2)C++源程序文件的默认扩展名为(A)。
A.cppB.exeC.objD.lik
(3)C++程序从上机到得到结果的几个操作步骤依次是(B)。
A.编译、编辑、连接、运行B.编辑、编译、连接、运行
C.编译、运行、编辑、连接D.编辑、运行、编辑、连接
(4)以下标识符中不全是保留字的是(B)。
A.caseforintB.defaultthenwhile
C.boolclasslongD.gotoreturnchar
(5)能作为C++程序的基本单位是(C)。
A.字符B.语句C.函数D.源程序文件
(6)程序中主函数的名字为(A)。
A.mainB.MAINC.MainD.任意标识符
(7)C++程序的基本模块为(D)。
A.表达式B.标识符C.语句D.函数
(8)可用作C++语言用户标识符的一组标识符是(B)。
A.voiddefine+WORDB.a3_b3_123YN
C.for-abcCaseD.2aDOsizeof
(9)行尾使用注释的开始标记符为____//_____,多行注释的开始标记符和结束标记符分别为____/*____和___*/____。
(10)用于输出表达式值的标准输出流对象是___cout______,用于从键盘上为变量输入值的标准输入流对象是__cin____。
(11)一个完整程序中必须有一个名为__main()_的函数。
(12)一个函数的函数体就是一条___复合____语句。
(13)当执行cin语句时,从键盘上输入每个数据后必须接着输入一个_空白_符,然后才能继续输入下一个数据。
(14)在C++程序中包含一个头文件或程序文件的预编译命令为_#include__。
(15)在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是___用户__定义的头文件。
(16)使用#include命令可以包含一个头文件,也可以包含一个_cpp__文件。
(17)一条表达式语句必须以_分号(;)__作为结束符。
(18)一个函数定义由_函数头_和_函数体_两部分组成。
(19)若一个函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的_声明__语句。
(20)程序文件的编译错误分为__警告(warning)和致命(error)两类。
(21)当使用__void___保留字作为函数类型时,该函数不返回任何值。
(22)当函数参数表用__void__保留字表示时,则表示该参数表为空。
(23)从一条函数原型语句“intfun1(void);”可知,该函数的返回类型为__int__,该函数带有___0___个参数。
(24)当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置移动到__下一行___的开始位置。
第3章基本数据类型和表达式
主要知识点:
1.C++基本数据类型的关键字、所占字节数、表示的数值范围(对于int、long、float、double等只要记住大致范围即可),P43表。
2.sizeof()运算符作用(得到所占字节数)。
3.整数的几种表示法(十进制、八进制、十六进制),整数后加u、l有什么含义?
4.实数的几种表示法(定点数、浮点数),实数后加f有什么含义?
5.字符常量:
一般表示,转义字符(熟记常用的及\ddd、\xhh表示法P46),ASCII表的一般规律,存储格式,字符型数据与整数的运算。
6.字符串常量:
表示法、存储(字符结束符)、长度。
7.逻辑常量:
“真”、“假”值及常量true、false的值。
8.符号常量:
优点、两种定义方法(define、const)。
9.变量:
与常量比较有什么不同?
什么是变量名、变量值?
变量的命名、定义、初始化的要求。
为什么对变量要采用“先定义,后使用”的方式?
10.掌握下列运算符的基本内容,能正确计算表达式的值:
(1)算术运算符(+、-、*、/、%,注意/和%的运算要求及结果,例如:
1.0+3/2是多少);
(2)赋值运算符(一般赋值符、复合赋值符);
(3)++、--运算符的功能,分清前增(减)量与后增(减)量的不同之处;
(4)类型转换(系统自动转换的原则、强制转换的格式);
(5)关系运算符(>、>=、<、<=、==、!
=,操作数类型,运算结果的类型、优先级、结合性)。
C++进行条件判断时,非0被认为是true,0被认为是false。
条件永远为真的表示,写出关系表达式的相反式。
(6)逻辑运算符(!
、&&、||,运算规则,操作数类型,运算结果的类型、优先级、结合性,逻辑运算与关系运算的比较,能根据逻辑表达式写出它的相反式,能根据实际情况构造逻辑表达式)
(7)条件运算符(组成、功能、优先级);
(8)逗号表达式(格式、计算过程、值、优先级);
(9)圆括号(作用、优先级);
11.函数的使用(声明、定义、调用、形参、实参、返回值);
12.掌握常用数学函数和系统函数的调用方法(包括写出对应的.h文件),特别是随机数函数rnad()、改变随机数序列函数srand()的使用。
P62,64-66
13.能将一般的数学式改写成正确的C++表达式。
举例:
(1)执行“cout<<43<<’-’<<18<<’=’<<43-18<为_43-18=25__。
(2)已知'A''Z'的ASCII码为6590,当执行“charch=14*5+2;
cout<(3)使用const语句定义一个标识符常量时,则必须对它同时进行__初始化__。
(4)表达式x=x+1表示成增1表达式为__++x或x++__。
(5)若x=5,y=10,则x>y和x<=y的逻辑值分别为_false或0_和_true或1__。
(6)存储以下数据,占用存储字节最多的是(D)。
A.0B.‘0’C.“0”D.0.0
(7)程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用(D)符号作为分隔符。
A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车
(8)设”inta=12;”,则执行完语句”a+=a*a;”后,a的值是(C)。
A.12B.144C.156D.288
(9)假设在程序中a、b、c均被定义成整型,所赋的值都大于1,则下列能正确表示代数式
的表达式是(D)。
A.1.0/a*b*cB.1/(a*b*c)C.1/a/b/(float)cD.1.0/a/b/c
(10)设”inta=15,b=26;”,则”cout<<(a,b);”的输出结果是(D)。
A.15B.26,15C.15,26D.26
(11)设x是一个bool型的逻辑量,y的值为10,则表达式x&&y的值为(C)。
A.1B.0C.与x值相同D.与x值相反
(12)x>0&&x<=10的相反表达式为(A)。
A.x<=0||x>10B.x<=0&&x>10
C.x<=0||x<=10D.x>0&&x>10
(13)x>0||y==5的相反表达式为(B)。
A.x<=0||y!
=5B.x<=0&&y!
=5
C.x>0||y!
=5D.x>0&&y==5
(14)设x和y均为bool量,则x&&y为真的条件是(A)。
A.它们均为真B.其中一个为真
C.它们均为假D.其中一个为假
(15)设x和y均为bool量,则x||y为假的条件是(C)。
A.它们均为真B.其中一个为真
C.它们均为假D.其中一个为假
(16)字符串”a+b=12\n”的长度为(B)。
A.6B.7C.8D.9
(17)假定下列x和y均为int型变量,则不正确的赋值为(B)。
A.x+=y++B.x++=y++C.x=++yD.++x=++y
(18)下列的符号常量定义中,错误的定义是(c)。
A.constM=10;B.constintM=20;
C.constcharch;D.constboolmark=true;
第4章流程控制语句
主要知识点:
1.结构化程序的三种基本结构:
顺序结构、分支(条件)结构、循环结构。
2.简单if语句、带else子句的if语句、多分支结构的if语句的定义格式、执行过程,并能进行单分支、双分支、多分支程序设计(如分段函数的计算)。
3.switch语句的定义格式、执行过程,并能进行多分支程序设计。
4.掌握三个或多个数的排序、两个变量值交换算法;
5.循环的概念、循环结构的四个组成部分:
初始化部分、循环判断条件、循环体、修改条件部分。
6.for语句(书写格式、功能、执行过程、循环次数的确定、循环变量值的变化、省略形式)。
7.while循环和do...while循环的定义格式、执行过程,及两者的比较。
8.循环的应用:
累加、连乘积、分类统计。
9.多重循环的实现,掌握穷举法和基本的数学应用;P1164.4中的7-8和“百钱买百鸡”例子。
10.break语句在switch语句和各种循环语句中的作用,continue语句在各种循环语句中的作用。
11.掌握return语句的定义格式和功能。
12.了解goto语句用法。
举例:
(1)循环语句“for(inti=0;iA.1B.n-1C.nD.n+1
(2)在下面循环语句中循环体执行的次数为(B)。
for(inti=0;iif(i>n/2)break;
A.n/2B.n/2+1C.n/2-1D.n-1
(3)在下面循环语句中内层循环体S语句的执行总次数为(D)。
for(inti=0;ifor(intj=i;jA.n2B.(n+1)/2C.n(n-1)/2D.n(n+1)/2
(4)在下面循环语句中循环体执行的次数为(C)。
inti=0,s=0;while(s<20){i++;s+=i;}
A.4B.5C.6D.7
(5)在下面循环语句中循环体执行的次数为(A)。
inti=0;doi++;while(i*i<10);
A.4B.3C.5D.2
(6)当处理特定问题时的循环次数已知时,通常采用(A)来解决。
A.for循环B.while循环C.do循环D.switch语句
(7)循环体至少被执行一次的语句为(c)。
A.for循环B.while循环C.do循环D.任一种循环
(9)判断下列说法的正误
⏹在switch语句中,default子句可以被省略;(√)
⏹在switch语句中,表示分支的case部分也可以不存在;(×)
⏹在switch语句中,在各分支中的break语句起着退出switch语句的作用;(√)
(10)搬砖问题:
36块砖,36人搬,男搬4、女搬3、两个小儿抬1砖,要求一次全部,问:
男、女、小儿需若干?
#include
voidmain()
{
inti,j,k;
for(i=0;i<=9;i++)
for(j=0;j<=12;j++)
for(k=0;k<=36;k++)
if((i+j+k==36)&&(4*i+3*j+k/2.0==36))
{
cout<<"男人数:
"<
cout<<"女人数:
"<cout<<"小孩数:
"<}
}
第5章数组与字符串
主要知识点:
1.引进数组有什么好处(定义方便、使用方便,尤其与循环结合,可以进行大批量数据处理)。
2.一维数组的含义、定义格式及初始化格式。
3.一维数组长度、数组元素、元素下标的含义,访问数组元素的格式。
4.一维数组元素的下标变化范围,数组元素所占存储空间大小和整个数组所占存储空间大小的计算,各元素对应存储空间的排列情况。
5.一维数组的应用:
查找最大值、最小值,求和、连乘积,分类统计,排序(选择排序),查找(顺序查找、二分查找)。
6.二维数组的含义、定义格式及初始化。
7.二维数组的行数、列数的概念,数组长度(即所含元素个数)的计算,数组元素的下标变化范围。
二维数组中的所有元素在存储空间中的排列情况。
8.访问二维数组元素的格式。
(用二重循环)
9.二维数组的应用:
如矩阵运算。
10.字符串常量的定义格式,字符串的存储格式(为什么字符串要用’\0’作结束标志符?
),字符串长度的概念。
11.一维字符数组、二维字符数组与字符串之间的关系,一维字符数组与二维字符数组的初始化。
12.字符串的输入、输出:
(1)逐一输入、输出;
(2)整体输入、输出。
14.字符串常用函数:
strlen()、strcpy()、strcat()、strcmp()等声明与使用。
15.字符串的比较、交换、排序方法(了解)。
16.利用typedef语句定义数组类型。
举例:
(1)在下面的一维数组定义中,哪一个有语法错误。
(C)
A.inta[]={1,2,3};B.inta[10]={0};
C.inta[];D.inta[5];
(2)在下面的字符数组定义中,哪一个有语法错误。
(D)。
A.chara[20]=”abcdefg”;B.chara[]=”x+y=55.”;
C.chara[15];D.chara[10]=’5’;
(3)在下面的二维数组定义中,正确的是(C)。
A.inta[5][];B.inta[][5];
C.inta[][3]={{1,3,5},{2}};D.inta[](10);
(4)假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为(C)。
A.2B.4C.6D.8
(5)填空
⏹在C++中存储字符串”abcdef”至少需要___7_____个字节。
⏹在C++中存储字符串”a+b=c”至少需要____6____个字节。
(6)从键盘上输入一个字符串,假定字符串的长度不超过80,分类统计该字符串中数字0-9的个数。
#include
voidmain()
{
chars[81];
intnum[10];//用数组存放0-9出现的次数
inti;
for(i=0;i<10;i++)
num[i]=0;//初始化为0
cout<<"输入一个字符串:
";
cin.getline(s,81,’\n’);
for(i=0;s[i];i++)
if(s[i]>=’0’&&s[i]<=’9’)
num[s[i]-‘0’]++;
for(i=0;i<10;i++)
cout<<”数字”<
”<}
第6章指针
主要知识点:
1.内存单元的排列方式、地址的概念。
2.指针的概念,指针变量的定义和初始化,分清指针变量与它所指向的对象(变量)的不同。
区分NULL与void*,能进行不同类型指针的强制转换。
3.重点掌握:
指针赋值(=)、取对象(变量)地址(&)、访问指针所指对象(*)等运算。
4.指针的其它运算:
(1)指针与整数进行加、减运算;
(2)指针增1或减1(++、--);(3)比较(==、!
=、>、>=、<、<=);(4)两个指向同一数组成员的指针可进行相减(结果为两个指针之间相关元素的个数。
)
5.数组名的指针含义(数组名是一个地址常量,不允计修改它的值)。
6.指针p与一维数组a[N]的关系:
(1)a+i的含义;
(2)若int*p=a;则a[i]、*(a+i)、*(p+i)、p[i]四种表示方法等价;(3)一维数组元素的下标访问方式、指针访问方式及相互之间的转换。
7.指针p与二维数组a[M][N]的关系
(1)理解a+i、a[i](即*(a+i))的含义;
(2)若int(*p)[N]=a;则a[i]与*(a+i)、*(p+i)、p[i]等价,a[i][j]与*(a[i]+j)、*(*(a+i)+j)、*(a+i)[j]、p[i][j]等价。
8.一级指针(即带有一个星号定义的指针)作为函数参数和返回类型的应用。
9.怎样输出字符串与字符地址?
理解字符数组保存字符串与字符指针指向一个字符串不同之处。
10.内存分配的几种方式、new和delete操作符的含义及作用,动态对象或动态数组的建立与释放。
11.引用的概念,引用变量的定义和初始化,引用作为函数参数和返回类型的应用。
12.能够用指针处理字符串内容,能够自己编写:
字符串长度函数、字符串复制函数、字符串连接函数、字符串比较函数。
举例:
(1)假定p所指对象的值为50,p+1所指对象的值为80,则执行“(*p)++;”语句后,p所指对象的值为___51_____。
(2)假定一个二维数组为a[M][N],则a[i][j]用间接访问的方法有:
*(a[i]+j)或*(*(a+i)+j)。
(3)判断下列说法的正误
⏹设p1 和p2 是两个指向数组a中不同元素的指针,则p1 和p2可以相加,但不可以相减。
(×)
⏹若定义int(*pa)[5];则pa是一个指针数组,数组元素为int指针。
(×)
⏹若定义char*pa[5];则pa是一个指针数组,数组元素为字符指针。
(√)
(4)指出下段程序功能:
char*str1=”mobile”;
charstr2[30];
inti;
for(i=0;*(str1+i)!
=’\0’;i++)
str2[i]=*(str1+i);
str2[i]=’\0’;
功能:
将str1的内容复制到str2中(用循环逐一处理字符,最后添加字符串结束标志’\0’)
str1:
m
o
b
i
l
e
’\0’
↓↓↓...↓
str2
m
o
b
i
l
e
’\0’
...
第7章C++函数
主要知识点:
1.应用程序的组成:
由一个主函数和多个函数构成,一个程序的多个函数可以分别存放在多个程序文件中,每个程序文件是一个编译单位。
通常main()函数比较简洁,它调用其它功能函数。
2.函数的定义格式:
返回类型函数名([形式参数列表]){……},return语句的作用。
3.函数的声明(函数原型说明),怎样声明、什么情况下可以省略?
4.什么是形参?
什么是实参?
数组名作形参时应该怎样书写?
5.函数调用的格式及执行过程。
6.C++的函数调用中,实参与形参的参数传递有三种方式:
值传递、指针传递、引用传递,比较三者的不同之处。
能理解课件中两个数据交换的例子(调用swap()函数)。
7.函数能嵌套定义吗?
函数能嵌套调用吗?
8.怎样定义的变量是全局变量?
它有什么特点?
有什么用途?
怎样调用同一个应用程序中不同程序文件(cpp文件)的变量?
(用extern声明)
9.怎样定义的变量是文件域变量(静态变量)?
它与全局变量有什么不同?
10.怎样定义的变量是局部变量?
它有什么特点?
它的作用域怎样来确定?
每调用一次函数,它都要初始化一次?
P2017.13例子和实验14内容。
11.怎样定义的变量是静态局部变量?
它有什么特点?
请比较它与全局变量、局部变量的异同点(从作用域、生存期考虑)。
静态局部变量只初始化一次。
P2017.13例子和实验14内容。
12.当一个作用域包含另一个作用域时,在里层作用域内可以定义与外层作用域同名的对象。
同名的外层变量什么情况下可见?
什么情况下屏蔽?
P1987.10例子和实验14内容。
13.什么是递归函数?
递归函数执行时的两个过程:
递推、回归,怎样根据递推公式书写递归函数?
P203例子和书面作业14内容。
14.具备根据要求或函数原型,写出函数内容的能力.P2227.41-5(书面作业13、书面作业14的相关习题)。
举例:
(1)从一条函数原型语句“voidfun1(int);”可知,该函数的返回类型为__void___,该函数带有___1___个参数。
(2)判断下列说法的正误
⏹被调用函数中可以不用return语句;(√)
⏹被调用函数中可以使用多个return语句(√)
⏹被调用函数中,如果有返回值,就一定要有return语句(√)
⏹被调用函数中,一个return语句可以返回多个值给调用函数(×)
(3)下列(C)的调用方式是引用调用。
A.形参和实参都是变量B.形参是指针,实参是地址值
C.形参是引用,实参是变量D.形参是变量,实参是地址值
(4)函数原型语句正确的是(B)。
A.intFunction(void