C语言总复习(二)课件(PPT 73页)_第1页
C语言总复习(二)课件(PPT 73页)_第2页
C语言总复习(二)课件(PPT 73页)_第3页
C语言总复习(二)课件(PPT 73页)_第4页
C语言总复习(二)课件(PPT 73页)_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第4章 程序的控制结构C语言大学实用教程第1页,共73页。内容提要算法的描述方法基本控制结构基本控制语句常用算法,如累加、累乘、统计、递推、迭代、穷举等程序的基本版式结构化程序设计的基本思想第2页,共73页。算法的表示方法自然语言表示传统的流程图表示N-S结构化流程图表示 伪代码表示第3页,共73页。 N-S流程图用以下的流程图符号: (1)顺序结构(2)选择结构(3)循环结构第4页,共73页。条件语句if (表达式) 语句if (表达式) 语句1 else 语句2if (表达式1)语句1 else if (表达式2) 语句2else 语句3开关语句4.3 选择结构第5页,共73页。4.3 选

2、择结构:条件语句例: if (score=90)range=1; else if(score=80) range=2; else if(score=70) range=3; else if(score=60) range=4; else range=5;第6页,共73页。练习3.判断闰年yearyear能被4整除但不能被100整除能被400整除第7页,共73页。关系运算符和逻辑运算符条件p:逻辑表达式真假的判断非0即为真if (a)printf(“OK!”);x=-5; if (x) printf(“OK!”);y=0; if (y=0) printf(“OK!”);y=0; if (y) p

3、rintf(“OK!”);第8页,共73页。switch多路选择switch (表达式) case 常数1: 语句序列1;case 常数2: 语句序列2;default: 语句序列3;default可以没有,但最好不省略不要忘记break第9页,共73页。注意:常量n仅起语句标号作用,不做求值判断常量n的值必须是惟一的,没有先后次序多个case语句可以共用一组执行结果第10页,共73页。循环while,forwhile (表达式) 语句; 固定?变化?第11页,共73页。whileint k=1,s=0;while (k=100) s=s+k; k+;循环控制表达式循环控制变量(k)循环体第1

4、2页,共73页。注意:循环体出现多条语句,应以复合语句的形式出现循环前必须给循环控制变量赋初值循环体中,必须有改变循环控制变量值的语句循环体可以为空while ((c=getchar()!=A);第13页,共73页。do-whiledo 语句;while (表达式);首先执行语句,然后判断表达式的值。如果表达式为0,继续向下执行,否则,再次执行语句,再次判断表达式的值语句会被至少执行一次最后分号不可省略!第14页,共73页。循环while,forfor (表达式1; 表达式2; 表达式3) 语句; 第15页,共73页。选择三种循环的一般原则如果循环次数已知,用for如果循环次数未知,用whil

5、e如果循环体至少要执行一次,用do-while这只是“一般”原则,不是“原则”第16页,共73页。合法的嵌套循环第17页,共73页。for (i=0;i3;i+)printf(“i=%d:”,i);for (j=0;j4;j+)printf(“j=%-4d”,j);printf(“n”);第18页,共73页。现场编程完成例4.14 编程输出如下形式的乘法九九表 第19页,共73页。#include main() int m, n; for (m=1; m10; m+) printf(%4d, m); /*打印表头*/ printf(n); for (m=1; m10; m+) printf(

6、-); printf(n); for (m=1; m10; m+) for (n=1; n10; n+)printf(%4d, m*n); printf(n); 第20页,共73页。现场编程完成例4.16马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有几人? 解方程组穷举法第21页,共73页。break和continue假假真真break表达式1表达式2循环语句的下一条语句循环语句的下一条语句假假真真 contiue表达式1表达式2continue第22页,共73

7、页。这一章我们学习了算法的描述方法流程图与基本控制结构相应的结构化的控制语句if-elseswitchforwhiledo-whilebreakcontinue常用算法,如累加、累乘、统计、递推、迭代、穷举等第23页,共73页。这一章我们学习了常用算法求阶乘: 数据类型的定义, long或double求累加和: long统计: 统计正数、平均分以上、n个成绩中10090、8980、7970、6960、?:); 第36页,共73页。(2)函数的返回值应当属于某一个确定的类型,在定义函数时指定函数返回值的类型。例如:下面是3个函数的首行:int max(float ,float ) /* 函数值为

8、整型 */char letter(char c1,char c2) /* 函数值为字符型 */ double min(int ,int ) /* 函数值为双精度型 */ 注意:凡不加类型说明的函数,自动按整型处理。第37页,共73页。(3)在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致。 如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。 对数值型数据,可以自动进行类型转换。即函数类型决定返回值的类型。(4)对于不带回值的函数,应当用“void”定义函数为“无类型”(或称“空类型”)。此时在函数体中不得出现return语句。 第38页,共73页。函

9、数调用(call)单向值传递调用函数时,必须提供所有的参数printf和scanf是采用变长变量表定义的函数,所以变量的个数不固定。提供的参数个数、类型、顺序与定义时相同有返回值时放到一个数值表达式中,如c = max(a,b);作为另一个函数调用的参数,如 c = max(max(a,b),c); printf(%dn, max(a,b);无返回值时函数调用表达式,如display(a,b);第39页,共73页。变量的作用域 指在源程序中定义变量的位置及其能被读写访问的范围分为局部变量(Local Variable) 全局变量(Global Variable )第40页,共73页。局部变量局

10、部变量在语句块内定义的变量形参也是局部变量定义时不会自动初始化,除非程序员指定初值进入语句块时获得内存,仅能由语句块内语句访问,退出语句块时释放内存,不再有效 并列语句块各自定义的同名变量互不干扰 第41页,共73页。全局变量全局变量在所有函数之外定义的变量在程序中定义它的位置以后都有效自动初始化为0从程序运行起即占据内存,程序运行过程中可随时访问,程序退出时释放内存 在定义点之前或在其他文件中引用,应该进行如下声明: extern 类型名 变量名;使函数之间的数据交换更容易,也更高效但是并不推荐使用因为谁都可以改写全局变量,所以很难确定是谁改写了它尽量少用全局变量。不得不用时,要严格控制对它

11、的改写第42页,共73页。静态变量(static)一个函数的内部变量在函数退出后失效。再次进入函数,变量值重新初始化把此变量定义为static,则变量的值可以保存到下次进入函数static int i;静态变量和全局变量都是静态存储类型自动初始化为0从静态存储区分配,生存期为整个程序运行期间但作用域不同第43页,共73页。float Add(int x, int y)return (x+y);main() int a=3,c=5; float b=c-a; printf(%3.0fn, Add(a+b,(int)b-a);第44页,共73页。float Add(int x, int y)ret

12、urn (x+y);main() int a=3,c=5; float b=c-a; printf(“%-3.0fn”, Add(a,Add(c,(int)b-a);第45页,共73页。第6章 数组C语言大学实用教程第46页,共73页。内容提要数组类型;向函数传递一维数组和二维数组;常用算法:排序、查找、求最大最小值等;用字符数组存取字符串;使用字符串处理函数处理字符串保存大量同类型的相关数据如矩阵运算,表格数据等 第47页,共73页。数组的定义与初始化数组定义后的初值仍然是随机数,一般需要我们来初始化int a5 = 12, 34, 56 ,78 ,9 ;int a5 = 0 ;int a

13、= 11, 22, 33, 44, 55 ;数组大小最好用宏来定义,以适应未来可能的变化#define SIZE 10int aSIZE;数组大小定义好后,将永远不变第48页,共73页。数组的使用数组的下标都是从0开始对数组每个元素的使用与普通变量无异可以用任意表达式作为下标,动态决定访问哪个元素for (i=0; iSIZE; i+) ai = 2 * i;下标越界是大忌!使用大于最大下标的下标,将访问数组以外的空间。那里的数据是未知的,可能带来严重后果sizeof可以用来获得数组大小第49页,共73页。只能逐个对数组元素进行操作(字符数组例外)输入方法:int a10,i;输入第i个数组元

14、素:scanf(%d,&ai);输入整个数组元素:for (i=0;i10;i+) scanf(%d,&ai);输出方法:输出第i个数组元素:printf(%d,ai);输出整个数组元素:for (i=0;i10;i+) printf(%d,ai);一维数组的输入和输出第50页,共73页。输入某个班级所有同学的学号和成绩。算法:1、输入学生人数2、从键盘依次输入学号和成绩,分别存入两个数组中(1)计算平均分(2)查找最高分(3)将成绩从低到高排序(4)计算及格率和优秀率第51页,共73页。数组名作函数参数用数组名作参数,就是将数组的首地址传递给函数实参数组与形参数组占用同一段内存在函数中可对形

15、参数组元素修改的结果,会影响结果主调函数中的实参数组第52页,共73页。简单变量作函数参数 第53页,共73页。数组作函数参数 第54页,共73页。二维数组的定义和引用 二维数组定义的一般形式为类型说明符 数组名常量表达式常量表达式;例如:定义a为34(3行4列)的数组,b为510(5行10列)的数组。如下:float a34,b510;不能写成 float a3,4,b5,10;第55页,共73页。二维数组的定义 二维数组中的元素在内存中的排列顺序是:按行存放,即先顺序存放第一行的元素,再存放第二行的元素 一维数组在内存中的存放下图表示对a34数组存放的顺序 第56页,共73页。可以用下面4

16、种方法对二维数组初始化数据类型 数组名 常量表达式1常量表达式2初始化数据;(1) 分行给二维数组赋初值。如: int a34=1,2,3,4,5,6,7,8,9,10,11,12; (2) 可以将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值。如:int a34=1,2,3,4,5,6,7,8,9,10,11,12;二维数组的引用第57页,共73页。(3) 可以对部分元素赋初值。如 int a34=1,5,9; 1 0 0 05 0 0 0 9 0 0 0也可以对各行中的某一元素赋初值,如int a34=1,0,6,0,0,11; 1 0 0 00 6 0 00 0 0 11 1

17、0 0 05 6 0 0 0 0 0 0也可以只对某几行元素赋初值。如:int a34=1,5,6; 第58页,共73页。(4)如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。如:int a34=1,2,3,4,5,6,7,8,9,10,11,12;它等价于:int a4=1,2,3,4,5,6,7,8,9,10,11,12;在定义时也可以只对部分元素赋初值而省略第一维的长度,但应分行赋初值。如:int a4=0,0,3,0,10;0 0 3 00 0 0 00 10 0 0 7.2.3二维数组的引用第59页,共73页。二维数组的输入和输出数组的输入和输出只能逐个对数组元素进行操作(字符数组例外)int b23,i,j;输入方法:输入第i行第j列元素:scanf(“%d”,&aij);输入整个数组元素:for (i=0;i2;i+) for(j=0;j3;j+) scanf(“%d”,&aij);输出方法:输出第i行第j列元素:printf(“%d”,aij);输出整个数组元素:for (i=0;i2;i+) for(j=0;j字符串2,函数值为一正整数。(3) 如果字符串1str2) printf(yes);而只能用if(strcmp(str1,str2)0)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论