1.<<:
插入运算符
2.系统会根据输出数据的类型,自动以相应的格式输出
1.5程序设计语言的发展
自学
1.6C++程序的基本要素
1.6.1标识符、关键词和标点符号
一、标识符:
程序中变量、类型、函数和标号的名称
1.区分大小写
2.组成规则,字母(含下划线)开头的字母数字串
二、关键字
关键字:
具有特定作用,不能作为自定义标识符的字符组合。
标准标识符:
系统提供具有特定功能的常量、函数等,与关键字的区别是,关键字不能作为用户自定义标识符,而标准标识符则可以,但是最好不要将其作为用户自定义标识符。
1.6.2注释
编译器把一个注释作为一个空格字符处理。
1.6.3源程序
一个C++源程序由一个或多个源文件构成。
习惯上,通常将变量、类型、宏和类等的定义放在一个源文件中(扩展名用.h),然后在其他源文件中引用这些定义量。
在编制大型程序时尤其需要这样,在学习阶段,由于程序很小,所以可以不采用这种方法。
1.7编译预处理
1.7.1宏定义
无参宏
格式:
#define<宏名><替换序列>
说明:
1.习惯上宏名采用大写字母
2.宏替换是一个机械过程
有参宏
格式:
define<宏名><带有参数的替换序列>
说明:
1.有参宏与函数的本质不同
2.为防止宏替换出现问题,最好将参数和整个宏都用括号括起
1.7.2文件包含
格式:
#include<文件名>或#include"文件名"
说明:
1.文件包含的作用是将被包含文件嵌入到包含文件中
2.<>在系统指定的目录查找被包含文件;"首先在当前目录中查找,若找不到,再到指定目录查找
采用文件包含的方式,从物理角度是两个文件,但是对于C语言系统而言,仍然是“一个”文件。
1.8VisualC++的集成开发环境
VisualC++软件包包含了许多独立组件,如编辑器、编译器、链接器、实用程序生成器、调试器。
我们运行VC所看到的界面是VC系统所提供的一个叫做DeveloperStudio的集成开发环境。
开发环境会根据用户使用的需要,自动调用一些相应组件。
1.8.1菜单和工具栏
开发环境提供的界面与windows下的其他软件的界面窗口基本一样,由标题栏、菜单栏、快捷图标栏及编辑窗口和其他窗口等组成。
1.除标题栏外,其他栏目均为停靠式,可以用鼠标拖动改变它们的位置。
2.快捷图标栏由多种工具栏组成,缺省状态下由标准工具栏(StdandardBar),向导工具栏(WizardBar),建立(编译)微型栏(BuildMiniBar)组成,如果希望在工具栏中出现其它栏目,可以通过工具/定制/工具栏进行有目的的设置。
1.8.2DeveloperStudio窗口
整个集成环境的窗口中有多个窗口,分为两种类型,一种是文档窗口(带边框),多个窗口时以平铺或层叠方式显示;一种是停靠窗口,缺省状态有两个停靠窗口,一个是工作区(Workspace),一个是输出窗口(Output)。
其他窗口在需要时会自动出现,或者通过菜单命令,指定显示某个窗口。
1.8.3用DeveloperStudio编写和调试简单C++程序
编写简单程序的步骤:
1.选择菜单文件(File)/新建(New)中的工程(Projects)选项卡,选择Win32ConsoleApplication(32控制台应用程序。
C++开发不同的程序需要选择不同的工程项目,对于简单的编程,选择Win32ConsoleApplication即可。
2.为该工程项目起一个名字,填在右上方projectname上。
下面的location指明项目文件的存储位置,用户可自己设定。
3.此时应用程序生成向导会提问要生成的项目类型。
选择Anemptyproject(空项目),点击finish、ok。
系统会自动产生目录和一个工作区文件(.dsw),一个.dsp,一个.ncb文件。
4.再次选择菜单文件(File)/新建(New)中的文件选项卡,从中选择C++SourceFile,为该程序文件命名,单击OK。
5.在编辑窗口内编辑程序、编译、调试、运行。
仅编译:
compileCtrl+F7
编译加链接:
buildF7
执行:
executeCtrl+F5
产生的文件均存放在相应源程序文件下的debug目录中。
1.8.4菜单选项、快捷键和工具栏
第二章控制结构
教学目的:
掌握结构化程序设计方法的基本思想和C++的几种基本控制转移语句,熟悉使用伪代码的编程方法。
重点:
C++的控制结构。
难点:
分支循环结构
2.1程序的基本控制结构
结构化的基本结构
结构化的程序设计方法:
以模块化设计为中心,将需解决的问题划分为若干个相互独立的模块。
模块的大小
2.2C++的控制结构
2.2.1顺序结构
相互间具有先后顺序关系的模块组合
2.2.2选择结构
1.概念
选择结构又称分支结构。
两个模块都有被执行的可能,但每次只能有且只有一个被执行。
2.格式
if(表达式)语句1else语句2
3.注意事项
(1)表达式必须用括号括起
(2)表达式不对类型作任何要求(单变量方式)
(3)复合语句的使用
4.应用方式
(1)逐情况判断
(2)假定
(3)嵌套嵌套既可以嵌在then子句上,也可以嵌在else子句上。
注意:
为了明确的表示嵌套关系,消除二义性,可以采用三种方法:
1)将嵌套嵌在else子句上。
2)写齐所有子句。
没有语句的分支可以使用空语句。
3)使用复合语句。
当分支数在3-4个或更多一些,一般使用if语句,若更多时,往往使用switch语句。
逐情况法常见于初学者,假定法常用于熟练编程者。
嵌套法则是熟练又希望程序比较高效者。
2.2.3循环结构
1.语句格式
while(表达式)
语句
do
语句
while(表达式);
for(表达式1;表达式2;表达式3)
语句
2.语句功能
1)while和for均是当型循环,dowhile是直到型循环。
2)所有的表达式均对类型没有特定要求。
3)所有的循环体均为一条语句(复合语句)。
4)所有的语句都是当条件成立时运行,不成立时退出。
3.for语句
for语句是C语言中极为灵活的一种语句,当省略第一和第三表达式时,与while语句完全等效。
2.3结构化程序设计
自顶向下、逐步细化、模块化
2.4伪代码
类语言,接近语言,但又不是真正的语言,若需要转化成语言时,只要作简单的修改即可。
与具体语言相比,语法不像具体语言的要求那么严格。
2.5结构化程序设计方法简介
解决大型软件生产设计的设计基础和方法。
2.6C++的其他控制转移语句
2.6.1switch语句
格式
注意事项
1)switch表达式虽然没有类型要求,但最好不要是实型。
2)case后的常量只能是一个常量表达式。
3)当执行符合条件的分支后,如无break则继续执行下续语句。
4)循环中含switch语句,或switch中含switch,内部的break仅仅自内部跳出,不能跳出外部控制体。
continue只对循环起作用。
2.6.2goto语句和语句标号
goto语句是无条件转移语句,它可以将程序流程控制无条件地转移到由标号所指定的语句处继续执行。
使用goto构成的结构不一定是非结构化的,但非结构化的程序往往由于goto的因素。
#include"iosteam.h"
voidmain()
{
inti,j,k=0;
for(i=1;i<=10;i++)
for(j=1;j<=10;j++)
{in:
k+=i*j;
if(k>100)gotoout;
}
out:
cout<<"i="<
if(k<500)gotoin;
}
2.6.3break语句和continue语句
1.break
作用:
中止执行循环,使流程控制退出该循环控制结构,执行该循环语句的下一语句。
(还可用于switch,但不能用于使用if构成的循环)
虽然break属于非结构化的语句,但它对程序可读性的破坏不严重,某种意义上,还容易提高程序的可读性。
2.continue
作用:
仅实现从该语句位置将流程控制转移到本次循环的结束位置。
它结束的是本次循环,而不是跳出整个循环语句。
几乎所有出现该语句的地方,都可以通过改变算法而取消该语句的使用。
对于多重循环,这两条语句都只能对包含它的语句起作用。
2.6.4exit()函数和abort()函数
作用:
中止整个程序的运行。
exit():
结束程序前做一些善后工作。
abort():
强制结束程序。
要求使用整数参数表示退出的原因。
习惯上用0表示正常退出,非0值表示非正常退出(程序调试)。
2.7DeveloperStudio的文本编辑器
一、基本操作
通用的键盘操作方式
二、高级编辑
Windows环境下的一些操作
第三章基本数据类型
教学目的:
掌握几种基本数据类型,包括字符型、整型、长整型、浮点和双精度数据类型的基本概念,以及常数、变量和数组的使用方法。
重点:
C++基本数据类型。
难点:
数组
3.1数据类型
数据类型定义了变量可接受值的集合以及对它所能执行的操作。
类型的定义决定了三个方面的性质:
a.该类型数据所占据内存空间的大小(数据的取值范围)
b.数据在内存中的存储格式(定点、浮点)
c.定义可以施加在该类型数据上的操作
3.1.1整型数据的表示方法
整型数据在内存中的表示方法(补码),字符型数据也可以认为是补码方式。
3.1.2实型数据的表示方法
实型数据在内存中的表示方法(浮点数)
3.2常量
3.2.1整型常量
十进制:
yyy
十六进制:
0xyyy
八进制:
0yyy
3.2.2实型常量
格式:
±(x).(x)e(E)±xx
规定:
小数点先后必须有一位数字
e的左面必须有数字(上面的要求),右面必须是整数
尾数必须为十进制数
说明:
c中的实型常量为双精度型,如果需要特别指明为单精度型,可在实数后面加f或F
3.2.3字符常量
定义:
用单引号括起来的一个字符。
c语言支持扩展ASCII字符集,因此共包含256个字符
注意:
1.转义ASCII码没有十进制数,只有十六进制和八进制,没有X就是八进制。
X打头时不能有0。
其取值范围为ff,377
2.任何字符都可以转义方式给出,一些常用控制字符给出了转义字母,如\n,\t,\b,\\,(\',\"在不引起误解的情况下可以不用\,如"what's",'"')
3.非转义字母前面加\,\不起任何作用
3.2.4字符串常量
字符串是用双引号括起来的一系列字符。
注意:
当字符串中包含转义字符时,转义符后的数值后面不能跟随引起误解的符号。
八进制数后面不能跟0-7,十六进制不能跟0-9和a-f(A-F)。
3.3变量
3.3.1变量的声明
1.基本类型
int整型(4byte)char字符型(1byte)float实型(4byte)
验证:
cout<<"size="<注意:
不同的语言版本在不同类型的机器上其所占据空间不同
3.类型的前缀
signedunsignedlongshort
注意:
double即为longfloat
原则:
a.不能自相矛盾shortlongint
b.不能没有实际意义longchar、unsignedfloat
3.3.2变量的初始化
C++允许在说明变量的同时对变量赋一个初值。
两种格式:
inta=3;
inta(3);
3.4数组
1.概念
数组:
数组是具有同一类型数据项(数组元素)的有序集合。
其所属数据的类型称作基类型或成分类型。
数组由一组连续的存储空间构成。
2.数组说明
格式:
存储类别类型说明符数组名[常量表达式];[二维]
注意:
1)数组占据的是连续的存储空间
2)下标的取值范围0-n-1
3)允许越界
4)数组名为指针常量,其表示的是地址
5)给定初值时可以省略第一维的下标
3.数组初始化
1)初始化格式
一维数组:
inta[5]={1,2,3,4,5};
二维数组:
intb[2][3]={1,2,3,4,5,6};
{{1,2,3},{4,5,6}};
2)数组的初值
staticextern存储类别无初值及初值不足时,无初值元素初值自动为零
auto类别无初值时为随机数,初值不足时,无初值元素为零。
3.5字符型数组和字符串处理库函数
1.概念
字符数组:
基类型为字符的数组。
字符串:
以双引号括起来的一系列字符(结束标志)。
关系:
字符串借助字符数组来存放。
区别:
串必定有结束标志,数组不能保证有结束标志;串常量不能以下标方式访问(利用指针指向后可以)。
串常量是没有数组名的数组。
2.字符数组的初始化
性质与数值数组一致
格式:
charstr[10]={'a','b','c'};{"abc"};"abc";
省略下标的特殊说明:
charstr[]={'a','b','c'};无结束标志,下标为>=4的值时则有结束标志。
没有初值时为随机字符,所以也没有结束标志。
3.字符数组的输入输出
1)单字符输入输出
以单字符方式读取时,应注意添加结束标志(讲一个读不定长度字符串的例子)
2)以字符串方式输入输出
注意:
(1)读取时不需要人为添加结束标志
(2)以空格(广义)为字符串的分隔标志
4.相关的几个函数
strcpy(array,str)strcat(arraystr,str)strcmp(str1,str2)strlen(str)
strlwr()strupr()
strchr()字符串中查找字符
strrev()反转字符串
strstr()在字符串中查找字符串
说明:
array数组(必须有足够的空间),str字符串(数组、常量串、指针)
在C中array可以为指针,VC中只能是数组(教材中有错误)
3.6类型修饰符和常量修饰符
自学内容
检查验证_intxx方式定义类型的大小
3.7枚举类型
格式:
enum枚举类型名{枚举元素表};
说明:
①枚举元素的序号自0开始,按照先后顺序排列,也可指定序号。
指定序号时应预留足够编码空间,若不足,或者系统报错,或者两个元素具有相同的序号。
②枚举量可以进行比较(如同字符,比较的是它们的序号)。
③枚举元素是标识符,不是字符串,不能直接以串方式输出,但枚举变量可以直接输出,输出的是该元素的序号。
3.8typedef语句
1.方法:
1)按定义变量的方法写出定义体
2)将变量名换成类型名
3)在最前面加上typedef
4)用新类型名定义变量