c++程序设计要点复习.docx

上传人:b****7 文档编号:16797669 上传时间:2023-07-17 格式:DOCX 页数:19 大小:740.53KB
下载 相关 举报
c++程序设计要点复习.docx_第1页
第1页 / 共19页
c++程序设计要点复习.docx_第2页
第2页 / 共19页
c++程序设计要点复习.docx_第3页
第3页 / 共19页
c++程序设计要点复习.docx_第4页
第4页 / 共19页
c++程序设计要点复习.docx_第5页
第5页 / 共19页
c++程序设计要点复习.docx_第6页
第6页 / 共19页
c++程序设计要点复习.docx_第7页
第7页 / 共19页
c++程序设计要点复习.docx_第8页
第8页 / 共19页
c++程序设计要点复习.docx_第9页
第9页 / 共19页
c++程序设计要点复习.docx_第10页
第10页 / 共19页
c++程序设计要点复习.docx_第11页
第11页 / 共19页
c++程序设计要点复习.docx_第12页
第12页 / 共19页
c++程序设计要点复习.docx_第13页
第13页 / 共19页
c++程序设计要点复习.docx_第14页
第14页 / 共19页
c++程序设计要点复习.docx_第15页
第15页 / 共19页
c++程序设计要点复习.docx_第16页
第16页 / 共19页
c++程序设计要点复习.docx_第17页
第17页 / 共19页
c++程序设计要点复习.docx_第18页
第18页 / 共19页
c++程序设计要点复习.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c++程序设计要点复习.docx

《c++程序设计要点复习.docx》由会员分享,可在线阅读,更多相关《c++程序设计要点复习.docx(19页珍藏版)》请在冰点文库上搜索。

c++程序设计要点复习.docx

c++程序设计要点复习

第一章程序设计概述

●面向对象程序设计的本质是把数据和数据处理的过程当成一个整体--对象。

●由符号“/*”和“*/”括起来的多行注释语句(不能嵌套使用);

●main()函数是必须的入口函数,每个C程序从main()函数开始执行,并在main()中结束。

第二章C++的数据类型、运算符和表达式

●C++语言程序中允许出现的所有基本字符的集合,称为C++语言的字符集。

●标识符:

是由程序员定义的命名符。

用来标识常量、变量、函数、数据类型的名字等。

由字母、数字和下划线(其他的都是非法的)组成,且必须以字母或下划线为第一字符。

1)保留字或关键字是系统作特殊用途的单词,不可作用户标识符;

2)标识符的大小写有区别;

3)C++没有规定标识符的长度,即字符个数;

4)标识符尽可能做到见文知意,增加程序可读性

●八进制(octal):

以0开头的八进制数字串;

●十六进制(hexadecimal):

以0x开头的十六进制数字串;

●指数形式,也即科学记数法,用字母E或e表示,一般形式:

aEb,表示a*10的b次方,b必须是整数,且尾数和指数都不能缺省!

●C++的浮点数有3种:

单精度浮点型(float),双精度浮点型(double)和长双精度浮点型(longdouble)。

不加后缀的浮点数默认为double型,float型数据后缀为F或f,longdouble型数据后缀为l或L。

●字符常量:

如:

‘A’=65,‘a’=97;所以这些常量可以参加数值运算,如‘A’+1=65+1=66=‘B’.(0是48)

●转义字符可以组成字符常量,其长度也为1。

如‘\n’.

●字符串:

可以一行或连续几行书写,当连续几行书写时,在每行后加续行符“\”结尾即可。

●每个字符串都有一个串结束标志“\0”,因此字符串在内存中占用的字节数等于字符串的长度加1eg.“\\ABCD\\”:

占内存7个单元。

“\101\102\x43\x44”:

是字符串“abCD”

●字符串的长度不受限制,靠“\0”来判定串的结束;“a”和‘a’是两个不同的概念;字符串常量实际上是一个字符型数组,不存在字符串型的数据类型。

●#defineN100

●longwidth=7,length=7;doublearea,radius=23;(这些是合法的)

●关于“/”如果两个运算对象有一个或两个都是实型,则运算结果是实型。

●关于“%”只能用于整数,取两数相除后的余数;当运算的对象异号时,取%前的运算数的符号作为结果符号,而值为两数绝对值的余数。

●关于逻辑0表示假1表示真。

●逻辑运算符的操作数可以是任何基本数据类型的数据。

●关于位运算符

1)~:

按位求反,将运算元内所有的1变0,0变1

2)&:

按位与,处理两个整形运算元中的每一个二进制位,如果对应位值都为1,则结果位为1,反之结果位值为0。

3)^:

按位异或,对于每个二进制位,如果两个运算元中的对应位有且仅有一个为1时,结果位上的值为1,反之结果为0。

4)|:

按位或,对于每个二进制位,如果两个运算元中的对应位其中有一个为1时,结果位上的值为1,反之结果为0。

5)<<:

左移运算符,将左运算元中的各二进制位全部向左移动一定位数,左移n位相当于乘2的n次方。

6)>>:

右移运算符,运算元中各二进制全部右移一定位置。

●Sizeof:

返回其后的表达式类型标识符所表示的数在内存所占字节的多少,实际上是求所占内存字节数,所以也叫长度运算符。

●如果有多于两个+或两个-连写的情况,则编译首先识别前面两个+或-为增量或减量操作符。

●c=a+++++b;//error

 

第3章数据的输入与输出

●输入:

信息从计算机的外部设备流入计算机主机称为输入。

●输出:

信息从计算机主机流入计算机外部设备称为输出。

●“>>”从cin输入流中抽取字符,”<<”向cout输出流中插入字符。

(深刻理解一下)

●在用浮点表示的输出中,setprecision(n)表示有效位数。

●将setprecision(n)与setiosflags(ios:

:

fixed)合用,可以控制小数点右边的数字个数。

此时,setprecision(n)设置小数位数为n位,setiosflags(ios:

:

fixed)是用定点方式表示实数。

●将setprecision(n)与setiosflags(ios:

:

scientific)合用,可以控制指数表示法的小数位数。

此时,setprecision(n)表示小数位数为n位,setiosflags(ios:

:

scientific)是用指数方式表示实数。

●C++提供两种数据的输入输出方式:

C的输入输出系统和输入输出流;

●采用库函数printf()和scanf()输入输出,对应于头文件stdio.h;

第4章C++的控制语句

●C++语句的分类:

声明语句操作语句控制语句

●选择的依据通常是关系表达式或逻辑表达式的值。

●三元条件表达式:

表达式1?

表达式2:

表达式3(先求表达式1的值,其值为非0时,整个表达式的值为表达式2的值;否则,整个表达式的值为表达式3的值。

●switch语句的几点说明

1)常量表达式必须互不相同,否则就会出现矛盾而引起错误

2)各个case和default出现的次序可以任意

3)switch语句可以嵌套

●while语句:

为了正常结束循环,避免死循环,循环体内应有修改循环条件的语句,或终止循环的语句

●求最大公约数的辗转相除法:

m和n为两个正整数,当m>n时,m与n的最大公约数等于n与m%n的最大公约数;当n=0时,m与n的最大公约数等于m。

●m是n的k倍还多r,那么m和n的最大公约数与n和r的最大公约数相同。

若r=0,则n就是m和n的最大公约数;若r不等于0,则对n和r重复上述过程,直到r=0为止。

第5章数组及其使用

●数组要求先定义后使用

●数组说明的作用是在程序运行前分配内存空间。

因此,数组类型符必须是已定义的,下标表达式也须有确定值,不能为变量或实型表达式。

●如果给定的常数的个数不足,则系统对其余元素初始化为0或空字符

●C++的高维数组在内存中以高维优先的方式存放,二维数组中以行为优先排放

●如果全部元素都赋初值,则定义数组时,对第一维的长度可以不指定,但高维的长度不能省,如:

intad[][3]={1,2,3,4,5,6};inty[][2][3]={1,2,3,4,5,6,7,8,9,10,11,12};

●字符数组的定义:

⏹charstr[10];

⏹str[0]=‘C’;str[1]=‘h’;str[2]=‘i’;str[3]=‘n’;str[4]=‘a’;str[5]=‘\0’;

●逐个字符对数组元素进行赋初始值:

charstr1[10]={‘s’,’t’,’u’,’d’,’e’,’n’,’t’};不会添加结束符‘\0’

●用串常量初始化:

charstr2[10]={“student”};

charstr3[]={“student”};——charstr3[]=“student”;

●String.h头文件包含:

1)字符串长度函数strlen()

2)字符串赋值函数strcpy()

3)字符串连接函数strcat()

4)字符串比较函数strcmp()如果两个串相等,函数返回值为0;如果s1串大于s2串,返回值大于0;如果s1串小于s2串,返回值小于0。

注意:

intstrncmp(constchar*s1,constchar*s2,intn);

函数strcmp用于两个串的完全比较;strncmp用于比较两个串的前n个字符。

●用cin流输入字符串时,C++把键盘操作的空格和回车都视为结束,因此无法输入带空格的字符串。

●C语言的函数gets接受键盘输入的空格,以回车作为结束。

使用puts输出字符串,这两个函数在stdio.h中声明。

●#include

●#include

●voidmain()

●{

●charstr[10];

●gets(str);

●puts(str);

●}

改进版:

#include

voidmain()

{

inta[10],i,j,temp,swap;

for(i=0;i<10;i++)

cin>>a[i];

for(i=0;i<9;i++)

{

swap=1;

for(j=0;j<9-i;j++)

{

if(a[j]>a[j+1])

{

swap=0;

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

cout<<"这时第"<

";

for(j=0;j<10;j++)

cout<

cout<

if(swap)break;

}

}

 

算法:

引入数组P,将n个人的编号按其原始排列顺序存入数组元素P[0]~P[n-1]中。

从编号为1的人开始循环报数,数到m的人,假定其在数组中的下标为t,就输出P[t],并将它从数组中删除,将P[t]后面的元素依次向左移动一个位置。

 

删除一个元素后,由于它后面的元素都左移了一个位置,因此,每次报数的起始位置就是上次报数的出列位置。

假设当前数组元素个数为i,上次出列位置为t,则本次出列位置就是(t+m-1)%i。

 

代码如下:

 

#include

constintn=8;

voidmain()

{

intP[n];

intm=4;

inti,j,t;

for(i=0;i

P[i]=i+1;

t=0;

for(i=n;i>=1;i--)

{

t=(t+m-1)%i;

cout<

for(j=t+1;j<=i-1;j++)

P[j-1]=P[j];

}

cout<

}

 

第六章函数

闰年的条件:

能被4整除,但不能被100整除的年份都是闰年;能被400整除的年份都是闰年;

代码:

if(year%4==0&&year%100!

=0||year%400==0)

●调用函数前先要声明

●代码区:

存放程序的代码,即程序中的各个函数代码块

●全局数据区:

存放程序的全局数据和静态数据

●堆区:

存放程序的动态数据

●栈区:

存放程序的局部数据,即各个函数中的数据

●所有静态变量存放在全局数据区,编译时获得存储空间,未初始化时自动全0,且只初始化一次。

●局部静态变量的作用域为块域,但生命期为整个文件

●虽然静态局部变量在函数调用结束后仍然存在,但其它函数不能引用。

●一个全局变量和一个静态全局变量在使用上是不同的,其它文件通过外部变量声明可使用一个全局变量,但却无法使用静态全局变量,静态全局变量只能被定义它的文件所独享

●函数递归调用:

●#include

●intfact(intn)

●{

●intfn;

●if(n==0)fn=1;

●elsefn=n*fac(n-1);

●returnfn;

●}

●用递归法求Fibonacci:

●longFibonacci(intn)

●{

●if(n<=2)

●return1;

●else

●returnFibonacci(n-1)+Fibonacci(n-2);

●}

●定义重载函数时必须保证参数类型不同,仅仅返回值类型不同是不行的。

第七章指针

●数组名代表的是数组的起始地址,是一个常量,而不是指针变量,在程序中是不能改变的。

●随机产生一百以内的数:

a[i]=rand()%100;

●对于二维数组a,虽然a和a[0]都是地址而且值相同,但意义不同;a是指向行(数组)的,一维数组名a[0]是指向列(元素)的。

在指向行的指针前加一个*,就转换成指向列的指针;反之,在指向列的指针前加一个&,就称为指向行的指针

疑问:

 

有关字符串判断是否结束的语法:

#include

voidstrCopy(char*dest,char*source)

{

while(*source!

=0)————这句话等号后面的0也可换做【'\0'】或者【NULL】

{

*dest=*source;

source++;

dest++;

}

*dest=0;

}

voidmain()

{

chara[20],*strPtr="Iamastudent.";

strCopy(a,strPtr);

cout<

}

●char*name[]与char*name[][20]不同:

⏹char*name[][20]是二维字符数组,在内存中连续存放;

⏹char*name[]是一个指向字符串的指针数组,并未定义行的长度,各行之间也不一定连续存放,只是分别在内存中存储了长度不等的字符串,然后用指针数组中的指针元素分别指向它们

 

●函数的返回值为指针:

⏹类型标识符*函数名(参数列表)

◆int*pf(int,int);

◆返回一个指向整型的指针。

●函数指针的定义和使用

⏹类型标识符(*指针变量明)(函数参数表)

⏹intmax(int,int);//说明函数max

⏹int(*fp)(int,int);//定义函数指针,指向有两整型参数和返回值为整型的函数

⏹fp=max;//将函数max的入口地址赋给fp,fp和max都指向函数入口

⏹说明:

◆函数指针指向程序代码区,一般数据变量指针指向数据区

◆函数指针不能随意指向任何一个函数,只能指向与其定义一致的函数

◆在给函数指针变量赋值时,只需给出函数名而不必给出参数

◆fp=max(a,b)————语法错误!

◆函数指针不能进行++,--,+,-等运算,因为在程序执行阶段函数代码区不会变动

 

第8章引用

●int&aRef=a;//引用须在声明的同时初始化

●指针是变量,引用不是变量

●引用没有地址值,它的地址是它被绑定的变量或对象的地址值,一旦被绑定,不能再改变,即不能更新引用;而指针是变量,它有自己的地址值,还可以赋给它其他变量或对象的地址值,即改变指针的指向

●指针可以引用,但不能定义引用的引用,可以传递引用

●int*p,a;

●int*&pRef=p;//pRef是一个指针p的引用

●int&*p;//错误,不能声明基类型为引用的指针对象

●int&aRef=a;//aRef是a的别名

●int&bRef=aRef;//bRef是a的别名

●int&bRef=&aRef;//不能定义引用的引用&Ref是地址,不能将int*转换为&型

●引用是变量的一个别名,他不能代表一个常量如:

⏹int&aRef[10]=a;//错误,数组名不是一个变量,而是一个地址常量值

●可以有空指针,但不可以有空引用

●int*p=NULL;//定义一个指针,其初值为空

●int&pRef=NULL;//错误

 

第九章结构体

●structure.field

●(&structure)->field

●structure_pointer->field

●(*structure_pointer).field

●对于组合结构体:

●m.sender.name

●(&m)->sender.name

●mp->sender.name

●(*mp).sender.name

第十-十二面向对象的程序设计

类声明以分号作为结束

●public和private为成员访问说明符。

它们规定了用其说明后的成员对于外部程序的可见性,体现了类的隐藏和封装特点。

●用public声明的公有成员能被同类的成员访问,也能被其它类的成员和非成员函数访问。

公有成员定义了类的外部接口

●用private声明的私有成员只能被类内部的其它成员访问,不允许外部成员直接访问。

●若在类的定义中没有给出成员访问说明符,默认为private。

●通常将数据成员定义为private,而将和外部的接口的成员函数定义为public。

一般给出成员访问控制说明符,以使程序更清楚。

●类名:

:

类名(形参1,形参2,…,形参n):

x1(形参1),x2(形参2),…,xn(形参n){}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2