《C语言程序》复习课件

上传人:lcm****801 文档编号:89054490 上传时间:2019-05-16 格式:PPT 页数:37 大小:263.50KB
返回 下载 相关 举报
《C语言程序》复习课件_第1页
第1页 / 共37页
《C语言程序》复习课件_第2页
第2页 / 共37页
《C语言程序》复习课件_第3页
第3页 / 共37页
《C语言程序》复习课件_第4页
第4页 / 共37页
《C语言程序》复习课件_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《《C语言程序》复习课件》由会员分享,可在线阅读,更多相关《《C语言程序》复习课件(37页珍藏版)》请在金锄头文库上搜索。

1、第一部分 数组,在C程序中声明一个变量,只能用于存储一个数据。有时程序中需要存放一组数据,这就需要声明一个数组。 数组: 数组必须先定义,后使用。最常用的是二维以下的数组,尤其是一维数组。,一维数组的定义和初始化 定义格式: 元素类型名 数组名常量表达式 说明: (1) 元素类型名指定该数组各元素的数据类型。 (2) 用方括号括起来的常量表达式的值表示该数组含数组元素的个数, 即数组长度。 注意:引用时,数组元素的下标从0开始。 如: int m20; 表示整型数组m有20个元素:m0,m1,m19。 float x 10; 表示实型数组x有10个元素:x0,x1,x9。,一维数组元素的引用

2、数组元素的引用格式: 数组名下标 (1)下标为整型表达式,它确定了引用元素的序号 (2)下标从0开始编号, 最大等于定义的数组长度减1 在程序中数组元素等价于一个同类型的变量。 注意:数组引用时千万不得越界。 例如: void main() int m10=1,2,3,4,5,6,7,8,9,0; m9=m3*6; /* 正确, m9的值为24 */ m6=m10; /* 不正确, m10下标越界 */ printf ( “%d %d %d %dn“, m4,m5,m6,m9); ,给数组元素读值、输出、处理的方法通常采用循环结构实现,循环控制变量作为数组下标,对数组元素逐个进行操作。 例如:

3、将数组m的十个元素输出,for (i=0;i10;i+) printf(“%4d”,mi);,将十个数据从键盘输入存入数组m中,for(i=0;i10;i+) scanf(“%d”,注意:数组m的输入输出这样做是错误的 scanf(“%d”,m); printf (“%d”,m);,使用数组的常见错误是下标越界,对于这种错误C的编译系统不检测错误,也没有警告,但结果往往不正确。,例1:输入十个整数,选择出其中的最大数。 (1)将最大数存放在一个整型变量max中; (2)将最大数放在数组的最前端。 (注意:不能将原来数组的第一个元素覆盖),#include void main() int i,a

4、10,max; printf(“input 10 numbers:n“); for(i=0;imax) max=ai; printf(“max number is %d“,max); ,(1),#include void main() int i,a10,t; printf(“input 10 numbers:n“); for(i=0;ia0) t=ai; ai=a0; a0=t; printf(“max number is %d“,a0); ,(2),例2:输入十个整数,按照从大到小的顺序排列。 排序基本思想: 从全部10个数中选出最大的,将其放在最前端; 从第2-10个数中选出最大的,将其

5、放在第二位置; 从第3-10个数中选出最大的,将其放在第三位置; 从第9-10个数中选出最大的,将其放在第9个位置;,#include void main() int i,j,a10,t; printf(“input 10 numbers:n“); for(i=0;iai) t=ai; ai=aj; aj=t; printf(“from big to small:n“); for(i=0;i10;i+) printf(“ %4d“,ai); ,第二部分 函数,模块化程序设计 基本思想:将一个大的程序按功能分割成一些小模块, 特点: 各模块相对独立、功能单一、结构清晰、接口简单 控制了程序设计的

6、复杂性 提高软件的可靠性 缩短开发周期 避免程序开发的重复劳动 易于维护和功能扩充 开发方法: 自上向下,逐步分解,分而治之,函数分类 从用户角度 标准函数(库函数):由系统提供 用户自定义函数 在程序中要调用某个库函数,则要用预处理命令 #include将该函数所在的头文件包含到程序中,用户自定义函数的定义与调用 1.函数定义 类型说明 函数名(含类型说明的形式参数表) 说明部分 执行部分 ,int add(int x, int y) int z; z=x+y; return(z); ,例:输入两个正整数m,n(mn),计算从m个元素中任取n个元素的组合数。计算公式为:,long fac(i

7、nt x) int i; long f =1; for(i=1;i=x;i+) f=f*i; return (f); ,在该问题的求解中,需要三次计算阶乘值:如果有一个函数可以提供求阶乘的功能,调用三次就可以解决问题了。可以自行编写求阶乘的函数。 函数编写如下:,主调函数与被调函数 main函数是一个程序的执行入口 程序的执行是从main函数开始的 其它函数必须由main函数调用才能得到执行。,main,a,b,c,d,e,f,函数调用关系示意图,函数值的返回 在函数体中,对形式参数接收的数据进行具体操作,并应该在函数体的最后将处理结果返回给主调函数。返回处理结果必须采用return语句完成。

8、 return语句的形式: return (表达式); 或 return 表达式; return语句执行后,程序将退出被调函数,被调函数携带函数值返回主调函数,在主调函数中继续执行。,int add(int x,int y) int z; z=x+y; return(z); ,2.函数调用 函数调用是使函数实际执行的过程。 格式: 函数名(实在参数表) long fac(int x); /* 函数原型说明 */ main() int m,n,c; printf(“input m,n:“); scanf(“%d%d“, ,函数的调用过程 函数调用过程是使函数得到执行的过程,有以下步骤: (1)根

9、据函数名找到被调函数,若没找到,系统将报告出错信息。 (2)计算实在参数的值。 (3)将实在参数的值传递给形式参数。 (4)中断在主调函数中的执行,转到被调函数的函数体中开始执行。 (5)遇到return语句或函数结束的花括号时,返回主调函数。 (6)从主调函数的中断处继续执行,参数的结合问题 在函数调用时,将实参值传给对应的形参 注意 (1)实参的个数和形参的个数应该相等 (2)实参与形参的应该在顺序上一一对应, (3)实参的类型一般应该与对应形参的类型相同 (4)C语言中实参与形参的结合是一种传值方式 将实参的值拷贝一份传递给对应的形参 (5)如形参的值发生改变,不影响实参的值。,第三部分

10、 结构体,1 结构体的引入 存放一个班学生的成绩可以定义数组,但是如果要存放一个同学的学号、性别、姓名、成绩等信息,如何定义数据类型。 常常把这些关系密切但类型不同的数据项组织在一起,即“封装”起来,并为其取一个名字,在C语言中,就称其为结构体(有些高级语言称之为记录)。所以,结构体通常是由不同数据类型的成员组成, 结构体的引入为处理复杂的数据结构提供了有力的手段。,2 结构体类型的定义 结构体类型属于用户自定义类型,必须先定义后使用。 结构体类型定义的一般格式: struct 结构体名 结构体成员表; ; 注:大括号中的结构体成员表包含若干成员,每一个成员都具有如下的定义形式: 数据类型标识

11、符 成员名;,例如:对一个学生的描述,其结构体类型定义如下: struct stud_type long num; /* 学号 */ char sex; /* 性别 */ char name10; /* 姓名 */ float score; /*成绩*/ ;,3 结构体变量的引用 在C语言程序中,不准许对结构变量整体进行输入输出等操作,而只能分别对其各个成员进行此类操作。 引用结构体变量成员的一般形式: 结构体变量名.成员名 例如: struct stud_type student1,student2; student1.num=196103; student1.sex=m; strcpy(s

12、tudent1.name,“wang“); student1.score=98; printf(“%ld %c %d %s”,student1.num,student1.sex, student1.score,student1.name);,5 结构体数组 结构体数组的定义 定义如下: struct stud_type long num; char sex; char name10; float score; ; struct stud_type student3; 由此就定义了一个结构体数组student,它有3个 元素,每个元素都是struct stud_type类型。,student1,

13、student2,name,num,sex,score,num,sex,name,score,注意: 不能把结构体数组元素作为一个整体直接进行输入或输出。 如 printf (“%d“,student0); 或scanf(“%d“,&student0); 只能以单个成员为对象进行输入输出,如: scanf(“%s %ld “, student0.name,student0.num); printf (“%s%ldn“, student0.name, student0.num);,例:从键盘输入10名学生信息,每个学生有姓名、学号、成绩,要求按学生成绩降序排列,并输出学生成绩排行榜。,#defi

14、ne N 10 #include struct stud_type char name10; int num; int score; ;,void main() int i,j,k; struct stud_type stuN,t; printf(“n请输入 %d 个学生的姓名 学号 成绩 n“, N); for(i=0;iN;i+) scanf(“%s%d%d“,stui.name , ,for(i=0;istui.score) t=stui; stui=stuj; stuj=t; ,注:结构体变量整体可以相互赋值,但注意相互赋值的两个结构体变量必须是同一个结构体类型.,/* 对学生信息按照

15、成绩进行排序 */,第四部分 指针,存储地址的数据类型就是指针类型 能直接对内存单元通过地址进行操作 学习时应特别细心, 多动脑、多对比、多上机,程序中: int i; float k;,内存中每个字节有一个编号-地址,i,k,编译或函数调用时为其分配内存单元,变量是对程序中数据 存储空间的抽象,指针:一个变量的地址 指针变量:专门存放变量地址的变量叫指针变量,2000,指针,指针变量,变量的内容,变量的地址,整型变量,一. 指针变量的定义与引用,定义格式: 基类型名 *指针变量名; char *p1; int *p2; float *p3;,指针变量赋值 int i,*i_point; i_point=,指针变量的引用 *i_point=1;,两个与指针有关的运算符 &:取地址运算符,取其右边变量的地址。 如: &a 取变量a的地址。 *:指向运算符(“间接访问”运算符) 访问右边指针变量所指向的变量。 如:*p 是指针变量p所指向的变量。,直接访问与间接访问 直接访问:按变量名存取变量值 间接访问:通过存放变量地址的变量去访问变量,例 i=3; -直接访问,3

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号