C语言程序设计ppt-第5章函数与程序结构

合集下载

C语言程序设计教程(第5章 函数)

C语言程序设计教程(第5章 函数)

22
信息科学与工程学院
作用域(可用域)与生存期
C语言中定义的变量都有一个起作用的范 围,称为变量的作用域。 程序运行时,变量被创建和被删除的时间 段,称为变量的生存期。
23
信息科学与工程学院
局部变量和全局变量
在一个函数内部定义的变量是内部变量, 它只在本函数内部范围内有效。也就是说 只有在本函数内才能使用它们。这些变量 称为“局部变量”。 在函数之外定义的变量称为外部变量,也 称为全局变量,在文件内的所有函数都能 使用它。它的有效范围为从定义变量的位 置开始到文件的结束。
4
信息科学与工程学院
5.1 问题的提出
C语言程序是由什么构成的? 函数 什么是函数?
能完成特定功能的功能块; 一般有输入参数 和返回值; 一次定义,可以调用多次。
一个C语言程序为什么需要不同的函数?
一个函数过大难于编写和维护; 一个函数的程序不利于协作; 代码和功能共享的需要。
5
信息科学与工程学院
6. 函数调用举例分析(见下页)
15
信息科学与工程学院
实参到形参是单向值传递 例2 求两个整数中的最大值
int max(int x,int y) /*函数定义*/ { int temp; if (x>y) temp=x; else temp = y; COPY return temp; } void main() { int a,b; scanf("%d,%d",&a,&b); a = max(a,b); /*函数调用*/ printf("\n max= %d \n",a); }
2
信息科学与工程学院
第5章 函数
本章需要掌握的知识点: 函数定义 函数说明 函数调用 形参和实参的关系 变量的存储类别

C语言程序设计PPT课件 第5章 数组程序设计

C语言程序设计PPT课件 第5章 数组程序设计
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.4 数值型一维数组的初始化
例5-3 用一维数组生成Fibonacci数列的前20项,并输出。
#include<stdio.h> void main() {
long int fib[21]; int i; fib[1]=1; fib[2]=1; for(i=3;i<=20;i++)
{
if(str[i]>='0'&&str[i]<='9')
digital[j++]=str[i];
i++;
}
digital[j]='\0';
printf("Output: %s\n",digital);
}
C语言程序设计(第3版)张磊编著 清华大学出版社
/* program e5-6.c*/
5.2.1 字符##串iinncc的lluudd输ee<<入ssttrd输iniog出.h.h>>
}
for(i=0;i<N;i++) printf("%d ",a[i]);
}
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.4 数值型一维数组的初始化
数组的初始化,是在定义数组的时对数组的各个元素赋初值。 1. 全部元素的初始化 格式
数据类型 数组名[数组长度]={数组全部元素值表} 数据类型 数组名[]={数组全部元素值表} int a[6]={10,20,30,40,50,60}; float r[]={12.5,-3.11,8.6}; 2. 部分元素的初始化 格式 数据类型 数组名[数组长度]={数组前部元素值表} int b[10]={1,2,3}

C语言程序设计第五章

C语言程序设计第五章
通过编写程序,实现对数组的访问、修改 、排序等操作。例如,实现一个程序,将 一个数组中的所有元素进行排序,或者找 到数组中的最大值和最小值。
05 案例分析
案例一:条件语句在程序中的应用
总结词
条件语句是C语言中用于根据不同条件执行不同操作的语句,通过if、else if和else关键 字实现。
详细描述
编程练习二:循环语句应用
总结词
理解并掌握while和for循环的使用
详细描述
通过编写程序,实现重复执行某段代 码直到满足特定条件,或者根据需要 重复执行某段代码指定次数。例如, 计算1到100的累加和,或者打印出0 到99的所有偶数。
编程练习三:数组操作应用
总结词
理解并掌握数组的基本操作
VS
详细描述
详细描述
数组在程序中用于存储和处理同一种类型的 数据元素,例如存储一组学生的成绩、计算 一组数据的平均值等。数组操作包括数组的 声明、初始化、访问和修改等。通过循环语 句可以方便地遍历数组元素并进行处理。数 组操作在程序中具有广泛的应用,是C语言
中重要的数据结构和算法之一。
06 总结与展望
本章总结
详细描述
C语言中的数组是一种存储相同类型元素的线性数据结构。可以通过索引访问数 组元素,进行赋值、交换、排序等操作。同时,C语言还提供了字符串操作函数, 如strcpy、strcat、strlen等。
语法点三:数组操作
01
示例代码
02
```c
int array[10]; // 声明一个包含10个整数的数组
详细描述
循环语句在程序中用于重复执行一段代码, 例如打印1到10的数字、计算一定数量的累 加和等。循环语句可以嵌套使用,以实现更 复杂的循环结构和算法。循环语句通常与条 件语句结合使用,以控制循环的执行条件和 次数。

c语言(第五章选择结构) c语言 教学课件

c语言(第五章选择结构) c语言 教学课件
▪ 非闰年的判别:
• !((year%4==0 && year%100!=0)||year%400==0)或者:
• (year%4!=0 )||( year%100==0 && year%400!=0)
C语言程序设计
第五章 选择结构程序设计
5.3 if语句(条件选择语句)
• if语句的三种形式 ▪ 形式一: • 格式:
语句2
=0
表达式3 非0
语句3
=0 语句4
C语言程序设计
第五章 选择结构程序设计
• 例:
if (salary>1000) else if (salary>800) else if (salary>600) else if (salary>400) else index=0;
index=0.4; index=0.3; index=0.2; index=0.1;
if (x>0) printf(“%f”,x) ;
else printf(“%f”,-x);
(3)在if 和else 后面可以只含一个内嵌的语句,也可以有 多个操作语句,此时用花括号将几个语句括起来成为一 个复合语句。如:
if (x>y)
{ t=x ; x=y ; y=t ; }
C语言程序设计
第五章 选择结构程序设计
a=4;b=5;
!a
//值为0
a&&b //值为1
a||b
//值为1
!a||b
//值为1
4&&0||2 //值为1
5>3&&2||8<4-!0 //(5>3)&&2||(8<(4-(!0))) 值为1

C语言程序设计_05循环结构程序设计

C语言程序设计_05循环结构程序设计

5.2 DO…WHILE循环结构 5.2.1 DO…WHILE语句的格式 DO…WHILE语句的一般格式为: DO 语句 WHILE(表达式); DO…WHILE语句中的表达式表示循环的条件,可 以是任何表达式,常用的是关系表达式和逻辑表达 式。表达式必须加圆括号。语句是重复执行的部分, 称作循环体。
由亍循环体在表达式2乊后表达式3乊前执行所以把循环体语句放在表达式3的开头循环体语句不原来的i构成逗号表达式作为循环语句新的表达式3从而也就没有循环体语句了
第5章 循环结构程序设计
5.1 WHILE循环结构 5.2 DO…WHILE循环结构 5.3 FOR循环结构 5.4 与循环有关的控制语句 5.5 3种循环语句的比较 5.6 循环的嵌套 5.7 循环结构程序举例 本章小结
图5-6 FOR语句执行过 程
FOR语句的执行过程如图5-6所示。具体由以下几步 完成: (1)求表达式1。 (2)求表达式2,并判定其值为0或非0。若值为非0, 转步骤(3);否则结束FOR语句。 (3)执行语句,然后求表达式3。 (4)转向步骤(2)。 由FOR语句的执行流程可知,表达式1的作用是为循 环控制的有关变量赋初值,表达式2是循环控制条件, 表达式3用于修正有关变量,语句是重复执行部分。
【例5.7】输入20个数,求出其中的最大值与最小值。
5.3.3 FOR语句的各种变形 1.在FOR语句中省略表达式 FOR语句中的3个表达式可以部分或全部省略,下面 给出语句的4种基本变形。 (1)表达式1移至FOR语句前,但它后面的分号必 须保留。这时FOR语句的形式为: 表达式1; FOR(; 表达式2; 表达式3) 语句
(2)表达式3移至循环体语句之后,但它前面的分 号必须保留。FOR语句的形式为: FOR(表达式1; 表达式2;) { 语句; 表达式3; } 对于求P=5!的程序段,省略表达式3,将其放在循环 体中,则程序段写成:

C语言程序设计:第5章 循环结构

C语言程序设计:第5章 循环结构
执行过程: 先执行循环体语句,再检查 循环条件表达式的值是否为真, 如果为真则继续执行循环体语句, 否则结束循环。
12
do...while语句(cont...)
课堂练习: 1.输出1---n之间的数,其中n从键盘输入。
int main(void) {
//1.定义变量i和n //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:输出i的值 return 0; }
} 相当于 while(1) {
}
26
小结
❖for(i=m;i<n;i++)//循环次数:n-m次 ❖for(i=m;i<=n;i++)//循环次数:n-m+1次
27
循环语句的练习
课堂练习: 1.输出n---1之间的数,其中n>1且n从键盘输入。 2.计算1*2*3*...*n的值(n的阶乘n!), 其中n从键盘输入。 3.计算10- 1/2 - 1/3 -....1/n的值 以上练习分别以while、do...while、for语句实现
int main(void) {
//1.定义变量i,n,sum //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:累加i的值 //7.输出计算结果 return 0; }
24
for语句(cont...)
{
sum = sum + i;
if(sum > 100)break;

C语言完整 ppt课件

C语言完整 ppt课件
1.4.1 宏定义
用一个标识符来表示一个字符串,称为“宏”,标识符称为“宏名”。在 程序中 用宏名替代字符串称为“宏调用”。在编译预处理时,将对程序中所有出现的 “宏 名”,都用宏定义中的字符串代换,这个过程称为“宏展开”。
1.4.1.1 不带参数的宏定义
格式为:#define 标识符 字符串
1.4.1.2 带参数的宏定义
1-4
1.3 C程序上机步骤
C源程序编好后,要经过编辑、编译、连接, 生成可执行文件后,才可运行。
运行集成开发软件
编辑源程序
编译
有 有错? 无 连接
不正确
运行
结果正确? 正确
结束
1-5
1.4 编译预处理
编译预处理是指,在C编译程序对C源程序进行编译之前,由编译预处理程 序对源程序中的预处理命令进行处理的过程。
1.2.1 C语言程序举例
1.2.2 C语言程序的结构
1.2.2.1 函数是C语言程序的基本单位。
1.2.2.2 函数的一般结构
任何函数(包括main()函数)都是由函数首部和函数体两部分组成。
1. 函数首部: 函数首部即函数第一行,由函数类型、函数名和函数参数表三部分组成。
2. 函数体: 函数体为函数首部下面的花括号{……}内的部分。 函数体一般由声明部分和执行部分构成:声明部分定义所用到的变量,声明所调用的函数等; 执行部分有若干语句组成。
2.6.1 运算符及表达式简介 2.6.1.1 运算符
C语言中的运算符具有2个特点: ⑴ 运算符的优先级 C语言中,运算符的优先级共分为15级,1级最高,15级最低。 ⑵ 运算符的结合性 C语言中各运算符的结合性分为左结合性(从左到右)和右结合性(从右到左)。 2.6.1.2 表达式 表达式是由常量、变量、函数和运算符组成的式子。 表达式求值是按运算符的优先级和结合性规定的顺序进行的。

C语言程序设计-第5章--函数

C语言程序设计-第5章--函数

实参可以是常量、变量或表达式,但要求 它们必须要有确定的值,在调用时将实参 的值赋给形参。另外,实参和形参的类型 应相同或兼容。
— 31 —
5.2 函数的参数传递和返回值
➢ 5.2.2 函数的返回值
一般情况下,主调函数调用完被调函数后,都希望能够得到一 个确定的值,这就是函数的返回值。在C语言中,函数返回值 是通过return语句来实现的。return语句的一般形式有3种:
/*函数声明*/
/*调用逆序函数,将a的逆序值赋给b*/ /*调用逆序函数,将b的逆序值赋给c */
— 23 —
5.2 函数的参数传递和返回值
➢ 5.2.1 函数的形参与实参
{
int y=0,sign=1;
/*定义sign表示x的符号,定义变量y代表逆序数据*/
if(x<0)
/*当x小于0时取符号及取反*/
— 18 —
5.1 函数的定义和调用
➢ 5.1.2 函数的调用
另外,按函数在语句中的作用来分,可以有以下3种函数调用方式:
函数表达式
函数语句
函数作为实参
函数作为表达式中的一项出 现,以函数返回值参与表达 式的运算。
函数调用的一般形式加上分 号即构成函数语句。
函数作为另一个函数调用的 实际参数出现,即把该函数 的返回值作为实参进行传送。
#include<stdio.h> int main() {
int x=0,y; y=trans(x); printf("y=%d\n",y); printf("x=%d\n",x); return 0; } trans(int a) { a++; printf("a=%d\n", a); return a; }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言与程序设计
The C Programming Language
第5章 函数与程序结构
华中科技大学计算机学院 卢萍
10/6/2020
华中科技大学计算机学院C语言课程组
1
第5章 函数与程序结构
结构化编程和C程序的一般结构 函数的机制,包括函数定义、函数声明、函
数调用、变量的存储类型、参数数目可变的 函数等。
函数体内的rand是接口stdlib.h中的一个函数,它 返回一个非负并且不大于常量RAND_MAX的随机整 数,RAND_MAX的值取决于计算机系统。 MAX_NUMBER是用#define定义的符号常量,其 值为1000。当执行return语句时,其后表达式的值 被带回到调用函数中。
10/6/2020
10/6/2020
华中科技大学计算机学院C语言课程组
2
5.1 C程序的一般结构
5.1.1 结构化程序设计
结构化编程是一种解决问题的策略,它包括如下2条 编程标准:
(1) 程序中的控制流应该尽可能简单。
(2) 应该自顶向下地设计程序结构。
自顶向下设计也称为逐步细化,即把一个问题按功能
分解为若干子问题,如果子问题还较复杂,可将其继
#include <time.h>
#define MAX_NUMBER 1000
int GetNum(void) { … }
void GuessNum(int x ) { … }
10/6/2020 int main(vo华id中)科{技…大学}计算机学院C语言课程组
25
2.函数原型
函数定义出现在函数调用后 被调用函数在其它文件中定义 必须在函数调用之前给出函数原型。
10/6/2020
华中科技大学计算机学院C语言课程组
23
【例5.2】写一个函数IsPrime
IsPrime判断整数n是否为素数。如果n是素 数,则返回1;如果n不是素数,则返回0。
源程序\ex5_2.c 在一个函数中可以有多个return语句,此种
情况下的return语句通常被作为选择语句的 子句出现,最终被执行的只是其中的一个。因 为,一旦某个return语句被执行,控制立即 返回到调用处,其后的代码不可能被执行。
续分解,直到分解成为容易求解的子问题为止。分解
而来的每个子问题被称为模块,C中提供的函数机制
完成每个模块的编程任务,即用函数编写由分解而来
的子问题的代码。
10/6/2020
华中科技大学计算机学院C语言课程组
3
自顶向下的分解问题:
既然是一个游戏程序,就应该允许玩家反复玩 多次,直到不想玩为止。同时,将玩一次游戏 的任务分解成以下两个子任务:
10/6/2020
华中科技大学计算机学院C语言课程组
24
5.2.3 函数的声明
1.函数定义起函数声明的作用
要利用函数定义起函数声明的作用,在调用 函数之前,必须给出调用函数的函数定义。 例如,将main函数的定义放在最后。
#include<stdio.h>
#includΒιβλιοθήκη <stdio.h>#include <stdlib.h>
良好的编程风格是:在每个函数的顶端用“/*……*/”格式 增加函数头部注释,如例5.1所示。为了节省篇幅,本书后面 的例子采用简化的注释,希望读者写程序时按例5.1的格式写 头部注释。
为函数命名时,要选择有意义的名称,以增加程序的可读性, 还可避免过多地使用注释。Windows风格函数名用小写字母 命名,每个词的第一个字母大写,通常用“动词”或者“动 词+名词”(动宾词组)形式。
参数列表说明函数入口参数的名称、类型和个数, 它是一个用逗号分隔的变量名及其类型列表,它描 述了在调用函数时函数所接收的参数。一个函数可 能没有参数,在没有参数的情况下,参数列表说明 为void,否则必须明确地列出每一个参数的类型。
10/6/2020
华中科技大学计算机学院C语言课程组
20
在参数列表中定义的参数称为形式参数(简称形参),用以 强调它作为占位符的角色。形参是函数要处理的数据,在函 数调用时要将实际值传递给形参。在定义变量时,相同类型 的变量可以用一个数据类型关键字定义。但是,和变量定义 不同的是,每一个形参都必须有数据类型和名字。例如:
9
在函数的顶端用“/*……*/”格式包含的部分是函数 头部注释,包括函数名称、函数功能、函数参数、 函数返回值等内容,如有必要还可增加作者、创建 日期、修改记录(备注)等相关项目。虽然函数头 部注释在语法上不是必需的,但可以提高程序的质 量和可维护性,在程序设计时要遵从这一编程规范 。
GetNum是函数名,其后的void说明函数调用时不 接收任何参数,即没有入口参数,函数执行完应该 返回所产生的随机数,即该随机数是函数的出口参 数,函数名前的int说明出口参数的类型为整型。
函数参数:无
函数返回值:返回产生的随机数
****************************************************************/
int GetNum(void)
/* 注意:后面无分号 */
{
/* 函数开始的标志 */
int x;
printf("A magic number between 1 and %d has been chosen.\n",
double power(int x, int n) { … } /* 正确的函数参数定义 */
double power(int x, n) { … } /* 错误,n必须指定类型 */
int GetNum (void) { … }
/* 参数表为空的函数 */
GetNum (void) { … } /* C89中默认返回int,但C99不允许 */
10/6/2020
华中科技大学计算机学院C语言课程组
18
5.2.1 函数的定义
函数定义的一般形式为: 类型名 函数名(参数列表) {
声明部分 语句部分 }
10/6/2020
华中科技大学计算机学院C语言课程组
19
类型名说明函数返回值(即出口参数)的数据类型 (简称为函数的类型或函数值的类型),可以是除 数组以外的任何类型。当返回值类型为void,函数 将不返回任何值。
7
自顶向下的分解子任务(1)
① 调用标准库函数rand产生一个随机数; ② 将这个随机数限制在1~1000之间。 利用函数,可以实现程序的模块化,把程序中常用
的一些算法或操作编成通用的函数,以供随时调用, 大大简化主函数的流程,使程序设计简单和直观, 提高程序的易读性和可维护性。 把任务1设计成一个独立的函数,用函数 GetNum(void) 来实现.
华中科技大学计算机学院C语言课程组
10
自顶向下的分解子任务(2)
/* 子任务2的程序段 */ for(;;) {
输入猜测的数 if(猜对了) 结束 else if(小了) 输出太小的提示 else 输出太大的提示 } 将任务(2)也设计成一个独立的函数GuessNum
10/6/2020
华中科技大学计算机学院C语言课程组
10/6/2020
华中科技大学计算机学院C语言课程组
26
函数原型的一般形式
类型名 函数名(参数类型表); 参数类型表通常是用逗号隔开的形参类型列
表,而形参名可以省略。例如,
void GuessNum(int) ; 等价于
void GuessNum(int x ) ; 无参函数的函数原型参数表必须指定为void
11
函数 void GuessNum(int x)
源程序\ex5_1.c GuessNum是函数名,括号里的“int x”说
明该函数有一个入口参数x,其类型为整型, 表示被猜测的神秘数,游戏者如果猜对就直接 屏幕输出猜的次数,无具体值返回,即函数无 出口参数,所以将函数值的类型说明为void。 函数体内有1条for(;;)循环语句,一直循环到 执行return语句时结束。
10/6/2020
华中科技大学计算机学院C语言课程组
13
结构化程序设计的益处
使程序编制方便,易于管理、修改和调试。 增强了程序的可读性、可维护性和可扩充性,
方便于多人分工合作完成程序的编制。 函数可以公用,避免在程序中使用重复的代码。 提高软件的可重用性,软件的可重用性是转向
面向对象程序设计的重要因素。
表达式值的类型应该与函数定义的返回值类型一致, 如果不相同,就把表达式值的类型自动转换为函数 的类型 。
10/6/2020
华中科技大学计算机学院C语言课程组
22
函数返回的值,程序可以使用它, 也可以不使用它
while(…) { getchar(); c=getchar(); …
}
/* 返回值不被使用 */ /* 返回值被使用 */
10/6/2020
华中科技大学计算机学院C语言课程组
21
5.2.2 函数的返回值
return语句可以是如下两种形式之一:
(1)return ;
/* void函数 */
(2)return 表达式 ; /* 非void函数 */
void函数也可以不包含return语句。如果没有 return语句,当执行到函数结束的右花括号时,控 制返回到调用处,把这种情况称为离开结束。
(1)计算机产生一个1到1000的随机数供游 戏者猜测;
(2)游戏者猜数,直至猜对。
10/6/2020
华中科技大学计算机学院C语言课程组
6
主程序结构
do { 计算机产生一个1到1000的随机数 游戏者猜数,直至猜对 继续玩吗
} while (继续);
相关文档
最新文档