1大学C++程序设计教程C++基础小结(1~8章)2C++程序的基本结构[全局变量说明][#include头文件.h][子函数1[(形式参数)]{[子函数局部变量说明][语句序列]}[。。。。]intmain(){[局部变量说明][语句序列]return0;}C++程序由函数组成;至少包括主函数main()和(或)若干个子函数。一个函数又由变量及参数说明语句和语句序列构成。每个语句必须用分号结尾。一个语句行可以写多个语句,一个语句可以写在多行上。C++语言允许在程序中插入注释行。C++语言提供了包括I/O功能在内的大量标准库函数,但调用这些函数时,必须在程序头部包含头文件。函数体3三大基本结构示意图顺序结构选择结构循环结构模块(语句)A模块(语句)B条件程序模块1成立不成立程序模块2条件程序模块不成立成立(当型循环)程序模块成立不成立条件(直到型循环)41、顺序结构r=p;p=q;q=r;52、选择结构(之一)一路分支语句格式:if(表达式)语句序列条件?成立不成立语句序列两路分支语句格式:if(表达式)语句序列1else语句序列2条件?语句序列1成立不成立语句序列2语句序列可以是一个语句,也可以是复合语句结构(分程序)6分程序{局部数据变量说明部分执行语句段}分程序在语法上是一个整体,相当于一个语句。分程序中也可以再嵌套新的分程序,用以构成更加复杂的控制结构。7选择结构(之二)多路(开关)选择语句:switch(整数表达式){case数值1:语句序列1;…...case数值n:语句序列n;[default:语句序列n+1;]}计算整型表达式值=?语句序列1…….语句序列2语句序列n带break语句的多分支结构83、循环结构(之一)当型循环语句格式:while(表达式)[{]语句序列[}]直到型循环语句格式:do{语句序列}while(表达式);循环体循环体条件?语句序列成立不成立语句序列不成立成立条件?9循环结构(之二)for语句用来实现计数循环:for(表达式1;表达式2;表达式3)循环体10C++数据类型的分类11类型不同的数据之间的混合算术运算不同类型的数据在参加运算之前会自动转换成相同的类型,然后再进行运算。转换规则•转换的原则是由低级向高级转换char-int-float-double例:inta;a=5/2,结果a为2•强制类型转换格式:(类型语句)e例:inti1=1,i2=2;doubled1;d1=(double)i1/i2;结果d1为0.512数组数组:具有相同类型的数据的集合。•数组用数组名来标识。•其中的每个变量(数组元素)通过该变量在数组中的相对位置(下标)来引用。特点:•常用于处理大批量数据;•数据特点:存在内在联系;•数组——具有相同数据类型的变量集合;•这些变量都有相同名字,但下标不同;•称这些变量为数组元素;•只有一个下标——一维数组;•有两个下标——二维数组。13字符型数组和字符串处理库函数字符•是用单引号括起来的单个字符,它在存储器中占1个字节。例如,‘A’字符串•是用双引号括起来的一串字符,它在存储器中占n+1个字节,即字符串的结束符‘\0’也占1个字节的位置。例如,”abc”;•有效字符的个数称为字符串长度。例如,”abc”的长度为3,但占4个字节(’\0’占一位)。字符串是用字符型数组存放的。14字符串长度与字符数组大小的关系charA[10]=“China”;A[5]A[6]A[7]A[8]A[9]A[0]A[1]A[2]A[3]A[4]‘\0’????‘C’‘h’‘i’‘n’‘a’15函数的定义函数必须先定义,后使用。定义函数的一般格式为:函数值类型说明函数名(参数说明){说明语句执行语句return表达式}函数体16函数的调用函数要先定义,后调用。调用函数时要考虑到函数本身的参数;•调用标准库函数时,要包含相应的头文件输入/输出函数iostream.h字符串函数string.h常用数学函数math.h•调用自定义函数时,要定义相应的实参,并给这些实参赋值。实参与形参必须一一对应:“类型一致、位置一致、个数一致”实参与形参有3种结合方式:值调用、引用调用和地址调用。17指针型变量的定义一般格式:类型描述符*指针变量名表;例:int*ptr;float*array;char*s1,*s2;指针类型内存地址值是固定不变的,不同类型的指针本身所占据的存储区域都一样大。•规定了用指针间接访问数据时的访问方式•为指针的算术运算提供依据18“*”和“&”运算符“&”称为取地址运算符,用以返回变量的指针,即变量的地址;“*”称为指针运算符,用以返回指针所指向的基类型变量的值,即它具有取地址内容的作用。•例如:intx=5,*ptr=&x;*ptr;*(&x);即取x地址中值5注意:&和*出现在声明语句和执行语句中其含义是不同的。•例如:int*ptr;/声明ptr是一个int型指针y=*ptr;//将指针ptr所指向的值赋给变量yint&ref;//声明一个int型的引用refptr=&x;//取变量x的地址*ptr=2;19自顶向下,逐步求精结构化程序设计支持“自顶向下,逐步求精”的程序设计方法。“自顶向下”•是将复杂、大的问题划分为小问题,找出问题的关键、重点所在,然后用精确的思维定性、定量地去描述问题。“逐步求精”•是将现实世界的问题经抽象转化为逻辑空间或求解空间的问题。复杂问题经抽象化处理变为相对比较简单的问题。经若干步抽象(精化)处理,最后到求解域中只是比较简单的编程问题。20基本思想和方法基本思想•从问题本身开始,经过逐步求精,将解决问题的步骤分解为由基本程序结构模块组成的结构化程序框图,据此编写程序。基本方法•从题目本身开始,找出解决问题的基本思路,将其用结构化框图(可能是非常粗糙)表示。•对框图中的比较抽象的、用文字描述的模块进一步分析细化,结果仍用结构化框图表示。•将所求解问题的所有细节都弄清楚后,再可以根据框图直接写出相应程序代码。21完全数找出2~10000之内的所有完全数。•所谓完全数,即其各因子之和正好等于本身的数。•如6=1+2+3,28=1+2+4+7+14,所以6,28都是完全数。#includeiostream.hvoidmain(){intk;for(intn=2;n10000;n++){k=0;for(intm=1;m=n/2;m++)if(n%m==0)k=k+m;if(k==n)coutkendl;}}22自顶向下,逐步求精的解法voidmain(){for(inti=2;i=10000;i++)if(iscomplete(i))coutiendl;}booliscomplete(intn){ints=0;for(inti=1;i=n/2;i++)if(isfactor(i,n))s=s+i;returns==n;}boolisfactor(inti,intn){returnn%i==0;}23学好程序设计语言的唯一途径是你的编程能力与你在计算机上投入的时间成结束语