C语言:函数.ppt

合集下载

C语言课件:第八章 函数

C语言课件:第八章 函数

所有函数都是平行的,相互独立不能嵌套,但可以相 互调用。 C 函数分标准函数(库函数)和自定义函数。 C 函数本身分有参函数和无参函数。
2
8.2 函数定义的一般形式
1.无参函数的定义形式 类型标识符 函数名( ) { 说明部分 ; 语句; } 2.有参函数的定义形式 类型标识符 函数名(形式参数表) 形式参数说明; { 说明部分 ; 语句; }
例: 用函数调用实现字符串的复制。 void copy_string(from , to) char from[ ], to[ ]; 声明形参from, to为字符数组 { int i = 0 ; while ( from[i] != „\0‟ ) { to[i] = from[i]; i++ ; } to[i] = „\0‟ ; 运行结果: string_a = I am a teacher. } 实参以数组名将数组a, b的起 string_b = I am a teacher. 始地址传递给形参 from 和 to main( ) {char a[ ] = “I am a teacher.” ; char b[ ] = “you are a student.” ; copy_string(a, b); printf( “string_a = %s\nstring_b = %s\n”,a,b); }
7
若函数中没有return语句,则该函数被调用后也会带 回不确定的值。如: { int a, b, c ; a = printstar( ); 均为处理字符串的函数 且均没有 return 语句。 b = print_message( ); c = printstar( ); printf(“%d,%d,%d\n”,a,b,c); } 输出的a, b, c的值将是各个被处理的字符串的长度。

《c语言函数》PPT课件

《c语言函数》PPT课件
其它函数: 可以互相调用函数、自调用函数,不能调用main()。
精选课件ppt
4
2、使用参数 入口参数: 主调函数向被调函数传递的数据------实参、形参。
出口参数: 被调函数向主调函数传递的数据------返回值。
精选课件ppt
5
§7.2 函数的定义 问题: 1、被调函数如何使用主调函数中的数据。 2、假设被调函数有办法使用主调函数中的数据,如何保证 被调函数和主调函数中数据类型的一致。
在函数中允许有多个return语句,但每次调用只能有一个 return 语句被执行, 因此只能返回一个函数值。
精选课件ppt
15
2、函数值(回传值)的类型与被调用函数的类型说明
函数调用语句 被调函数类型 回传值类型
在定义函数时,需要指定函数的类型:
例如:
int max(x,y);
doubel a(c1,c2); 等等
1、被调函数为库函数 对库函数的调用不需要再作说明, 但必须把该函数的头
文件用include命令包含在源文件前部。
精选课件ppt
23
2、用户自定义的函数 一般应该在主调函数中对被调函数的返回值的类型做说明。 对被调函数的说明也有两种格式,
一种为传统格式,其一般格式为: 类型说明符 被调函数名();
9
调用结束:形参临时单元被释放,形参数据失效,实参数 据不变。这就是所谓的单值传递。
函数的形参和实参具有以下特点:
(1)、形参变量只有在被调用时才分配内存单元,在调用 结束时, 即刻释放所分配的内存单元。因此,形参只有在 函数内部有效。 函数调用结束返回主调函数后则不能再使 用该形参变量。
精选课件ppt
}
精选课件ppt

C语言程序设计第8章 函数简明教程PPT课件

C语言程序设计第8章 函数简明教程PPT课件

8.1 函数的概念与定义
程序运行情况如下: Enter a and b:10 20
The max is 20
计算机科学与技术学院—— C语言程序设计
8.1 函数的概念与定义
(2)函数名类似于其它的标识符,其命名规则也与其它 标识符相同。 (3)形式参数列表(formal parameter list)用来描述 函数所需要的参数个数及其类型,它的基本形式为: (类型名1 参数名1, 类型名2 参数名2, …, 类型名n 参 数名n) 如上例中的(int x, int y)。函数的参数是函数与它的主 调函数之间发生数据交换的一个通道,即被调函数通过参 数的方式建立起它与主调函数之间所需的信息交换的一种 途径。如果函数没有形式参数,则在定义时括号内可以为 空,但最好写上void。
计算机科学与技术学院—— C语言程序设计
8.1 函数的概念与定义
函数Max()的返回值由函数体中的return语句获得。 函数也可以没有返回值类型,此时,我们最好把没有返 回值类型的函数定义成void类型,这时,函数体中的 return语句可以不写,也可以只写上return语句: return; 。
C程序的这种组成结构,反映了一种结构化程序设计的思想。 一个程序可以分解为多个模块,每个模块可以实现一定的功能。 如果一个模块过于复杂,就可以进行再分解,直到分解出来的 模块足够简单,可以方便实现为止。这种结构化的程序设计思 想,体现出一种“分而治之”(devided and conquer)的哲 学理念,也是我们日常处理事情的一种典型方法。
程序设计者,只在库函数不能满足需要的时候,才需要自己 来创建所需要的函数(自定义函数)。读者学完本章之后, 就应该能自定义一些自己所需要的函数并能正确使用它们, 当然也要学会正确使用系统提供的大量的标准库函数。有 关库函数的详细情况和使用方法可以参考附录和其它相关 资料。

C语言函数.ppt

C语言函数.ppt

递归的优缺点
优点:为某些编程问题提供了最简单的解 决办法
缺点:递归算法会很快的耗尽计算机的内 存资源,难于维护和阅读
本讲内容
基本函数概念 函数的递归 局部变量和全局变量 变量的存储类别
局部变量和全局变量
局部变量
在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也 就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变 量的。这称为“局部变量”
从用户使用的角度看,函数有两种: 标准函数,即库函数。这是由系统提供的,用户不必自己定义这 些函数,可以直接使用它们。应该说明,每个系统提供的库函数 的数量和功能不同,当然有一些基本的函数是共同的 用户自己定义的函数,以解决用户的专门需要
从函数的形式看,函数分两类 无参函数。在调用无参函数时,主调函数并不将数据传送给被调 用函数,一般用来执行指定的一组操作。无参函数可以带回或不 带回函数值,但一般以不带回函数值的居多 有参函数。在调用函数时,在主调函数和被调用函数之间有参数 传递,也就是说,主调函数可以将数据传给被调用函数使用,被 调用函数中的数据也可以带回来供主调函数使用。
编写和使用一个简单的函数
带参数的函数
定义带参数的函数(形式参数)
函数定义以下面的ANSI C函数头开始
ANSI C也接受ANSI之前的形式,但将其视 为废弃不用的形式
调用带参数的函数(实际参数)
使用实际参数对形式参数赋值 实际参数可以是常量、变量或一个复杂的
表达式
调用带参数的函数(实际参数)
float fl(int a) {int b,c; … }
a,b,c有效
Char f2(int x,int y)
{int i,j; … }
x,y,i,j有效

第5章 函数与带参数宏 《C语言程序设计及应用教程》课件-PPT课件

第5章 函数与带参数宏  《C语言程序设计及应用教程》课件-PPT课件

5.2 函数的嵌套与递归调用
函数的嵌套调用
不允许嵌套定义,函数间平行的、独立。 C中的函数:
允许嵌套调用。
main( ) 调用函数a 结束
a函数
调用函数b
b函数
【例5-7】 输入两个整数,求平方和
#include <stdio.h>
int fun1(int x,int y)
int fun1(int x,int y);
斐波那契数列");
for(i=0;i<N;i++)
{
printf("%d\t",iF[i]);
if((i+1)%10==0)
printf("\n");
}
printf("\n");
}
int Sum(int iF[],int n); void main() { int i,Fibonacci[N],m,n; //生成斐波那契数列 CreateFibonacci(Fibonacci); //输出斐波那契数列 PrintFibonacci(Fibonacci); //求数列前n项的和 printf(" 请输入要求和的项数 n(n<%d): ",N); scanf("%d",&n); m=Sum(Fibonacci,n); printf("\n 斐波那契数列前 %d项的和:%4d\n",n,m);}
第5章 函数与带参数宏 ?C语言 程序设计及应用教程?课件
5.1 函数的声明、定义与调用
5.1.1 函数的声明与定义 5.1.2 函数调用 5.1.3 函数参数传递 5.1.4 主函数中的参数

《C语言函数》课件

《C语言函数》课件
总结词
文件操作函数用于创建、打开、读取、写入和关闭文件等 操作。
要点二
详细描述
C语言标准库提供了许多文件操作函数,如fopen()用于打 开文件,fclose()用于关闭文件,fread()用于读取文件内容 ,fwrite()用于写入文件内容等。这些函数通常需要包含 stdio.h头文件以正确使用。
详细描述
C语言提供了许多字符串函数,用于处理字符串数据。这些函数包括连接字符串、比较字符串、查找 子串等。它们通常在string.h头文件中定义,使用时需要包含该头文件。
字符串函数应用案例
• 示例:连接两个字符串
字符串函数应用案例
01
```c
02
int main() {
03
char str1[50] = "Hello, ";
• 示例:计算圆的面积和周长
数学函数应用案例
```c int main() { double radius, area, circumference;
数学函数应用案例
circumferencea = M_PI * pow(radius, 2);
radius = 5.0;
printf("无法打开文件n");
return 1; // 返回错误代码 1 表示打 开文件失败
文件操作函数应用案例
} else {
while ((ch = fgetc(file)) != EOF) { // 从文件中读取字符 并输出到控制台,直到到达
文件末尾(EOF)为止。
putchar(ch); // 使用 putchar() 函数将字符输出到 控制台。
01
03 02
数学函数应用案例

C语言函数篇讲解ppt课件

C语言函数篇讲解ppt课件

b函数结束
精选版课件ppt
20
main( ) { int x,y,sum;
x=5; y=6; sum=add(x,y); printf(“%d”,sum); }
add(int a ,int b) { int z;
z=a+fun(b); return z; } 运行结果:
41
精选版课件ppt
汉诺塔问题 ( Hanoi)
数调用任意多次。 4. 从用户角度看,函数分为两种:
① 标准函数:即库函数,由系统提供。
② 用户自定义函数:用户自己定义的。 5. 从函数形式看,函数分为两种:
①无参函数。
②有参函数。
精选版课件ppt
3
6.2 函数定义的一般形式
一 函数定义的一般形式
列表
类型标识符 函数名(类型1 形参1,类型2 形参2,…) { 声明部分 语句 }
二 说明:
1.所有函数在定义时都是互相独立的,即不能嵌套定义; 2.类型标识符:说明了函数返回值的类型,当返回值为
int时,可省略不写; 3.函数名:遵循标识符的命名规则;同一个函数中函数名
必须唯一;
精选版课件ppt
4
4.形参:只能是变量,每个形参前要有类型名;当定义的 函数没有形参时叫作“无参函数” ;
a 10 20 b
alter(a, b);
printf(“a=%d,b=%d\n”,a,b); x 1200 }
210 y
alter(int x, int y) { int t;
t=x; x=y; y=t; }
总结:形参的值发生 改变,并不能 影响实参。
精选版课件ppt
9
三 函数的返回值

《C语言程序设计(第五版)》课件-第7章函数

《C语言程序设计(第五版)》课件-第7章函数

int main()
{ int a,yn=0;
while(yn==0)
{ printf("Input a number(0—9): mp;a); fun(a);
/*调用函数,a为实参*/
printf("If continue, please input 0, otherwise input 1:");
C语言程序设计
第7章 函数
7.2 函数的定义
根据有无参数,可以将函数分为无参函数和有参函数两种形式:
1.无参函数
定义形式如下:
类型标识符 函数名( )/*函数的首部*/

声明部分
/*函数体*/
执行部分

类型标识符用来说明函数返回值的类型,也称为函数的类型。若 省略类型标识符,则默认返回值类型为整型;当函数无返回值时,可 以指定函数的类型为void。
(5) 函数定义时,旧版的C语言中,函数首部中的形参列表仅包 含形参,形参的类型另起一行来说明;而新版的C语言中,函数首部 中的形参列表包含形参的类型和形参名。
例如,“int max(int x , int y)”为新版的函数定义方式。 而以下代码为旧版的函数定义方式: int max (x, y) int x, y; 一般来说,在新版的C语言中以上两种定义方式都能使用。
{ int j,k,flag=1; k=sqrt(p); for (j=2;j<=k;j++)
说明: prime函数用于判断参数p是否为素数,形参
if (p%j==0) {flag=0; break; }
p接收main函数传来的实参 i的值,prime函
return flag; }

《c语言函数》PPT课件

《c语言函数》PPT课件

printf("*"); printf("*"); printf("*"); printf("*"); printf("*");
函数——完成某一特定特定功能的模块,是程序设计的
基本单位。
“一个程序应该是轻灵自由的,它的子过程就象串在一
根线上的珍珠。” Geoffrey James的《编程之道》

函数声明 函数定义 函数调用
“声明”(declaration)——作用是把函数名、函数参数的个数和参数
的类型等信息通知编译系统,以便在遇到函数调用时,编译系统能够正确 识别并检查调用是否合法。
void print(int n);
在函数声明中也可以不写形参名,而只写形参的类型。
编译系统只检查参数个数和参数类型,而不检查参数名。 函数声明——函数原型(function prototype)
z=x>y?x:y; return z; }
(#4)in不cl返ud回e 函<数st值di的o.函h>数,可以明确定义为“空类型”,类型说明符为 “voiidd”main()
{
void printstar(); //对printstar函数进行声明
明 printsvtoaird(3)print_message(); //对print_messge函数进行声
函数声明 函数定义 函数调用
“定义”(defination)——是指对函数功能的确立,
包括指定函数名、函数值类型、形参名称及其类型、函数
体等。
它是一个完整的、独立的函数单位。
v{oid prifinontrt((iii;=n1t;in<)=n;i++形能) 参省pr名略in不tf("*");

C语言完整函数教程

C语言完整函数教程
最新课件
提纲
24
5.2.3 函数的调用
• 函数是一段封装的代码,能完成预定好的、独 立的任务,能被其他函数所调用。那么,如何 调用一个函数?
• 函数的调用和执行的实质是控制转移,调用函
数时,将控制转到被调用的函数,被调函数执
行结束时,则将控制转回主调函数,继续执行
后续的操作 。 主主程函序数
①②
子子函程数序1
Y
素数 N
– 求一个整数的逆数:该 功能在判断一个整数是 否回文数中也被用到;
输出num num=num+1
– 判断一个数是否素数: 该功能在对整数进行素 数分解中用到。
求可逆素数
最新课件
4
5.1 子程序设计
• 能否将完成上述独立功能的代码包装成一个单 元,并且可以供其他代码来调用?--答案是可 以使用子程序
int x;
4. 把收转的换参后数的个实际数参、数参(数实类参)的
}
for (x = 1; x <= 10; x++)实参 printf(“%4d”,square(2 * x)); 5. 形参 函数调用 6.
值型送和入参形数式顺参数序(,形编参译)器中。
运用行函调数用原函型数中校的验语函句数;调 用是否正确。
最新课件 3
5.1 子程序设计
numß 1000;
num≤9999 判断num是否素数
Y
num是素数 N
计算num的逆数reverseNum
• 本程序中判断素数的代码 会出现两次;
• 判断素数、求整数逆数这 两个功能是独立的功能, 且在多个程序中都有可能 用到:
判断reverseNum是否素数
reverseNum是

C语言输入输出函数介绍.ppt

C语言输入输出函数介绍.ppt
6 吉林大学珠海学院计算机系
格式输入输出函数
❖ 格式输入函数scanf() ❖scanf (<格式控制字符串>,<输入地址列表>); ❖ <格式控制字符串>是用双引号括起的一个字符串
常量,里面列出输入数据的格式说明和分隔符 ❖ <输入地址列表>列出存放输入数据的变量地址 ❖例如 scanf ("%d%d",&a, &b)
C语言输入输出函数
❖ 标准输入输出函数都包含在头文件stdio.h中 #include “stdio.h ” 或 #include <stdio.h>
❖TC系统允许在使用printf()和 scanf()两个函数 时不加“#include”命令,但是VC++6.0确不可以 不写#include <stdio.h>
7 吉林大学珠海学院计算机系
格式输入输出函数
❖ scanf()函数中最常用格式符
格式符
说明
应用示例
含义
d 十进制int型 scanf(“%d”,&x); 输入212,x=212
f 十进制double型 scanf(“%f”,&f); 输入6.28,f=6.280000
c 单个字符
scanf(“%c”,&ch); 输入A,ch=’A’
❖ 字符输入函数getchar() <变量> = getchar (); 等待键盘输入,按回车换行键结束,返回输入 的第1个字符,没有参数
❖ 字符输出函数putchar() 调用形式:putchar (c) 在显示器上输出一个字符,其中c通常是一个 已经赋值的字符型变量,或是一个字符常量

C语言(函数)省公开课获奖课件市赛课比赛一等奖课件

C语言(函数)省公开课获奖课件市赛课比赛一等奖课件

函数旳定义
函数定义旳一般形式为: 类型标识符 函数名(类型 形式参数, 类型 形式参数,…) {
申明部分 执行部分 }
阐明:
类型标识符用来定义函数类型,即指定函数返回值旳类型。 函数类型应根据详细函数旳功能拟定。默认类型标识符为 int类型。
函数值经过return语句返回。函数执行时一旦遇到return 语句,则结束目前函数旳执行,返回到主调函数旳调用点。
【例7.8】 调用函数返回两个数中旳较大者。
#include <stdio.h> int max(float x,float y)
{ float z; z=x>y?x:y; return(z);
} void main()
{float a,b; int c; scanf("%f,%f",&a,&b); c=max(a,b); printf("较大旳是%d\n”,c); }
【例7.5】 分析下列程序旳运营成果。(值传递方式)
#include <stdio.h>
void swap(float x,float y) /* 定义互换变量x,y值旳函数 */
{ float temp;
temp=x; x=y; y=temp;
printf("x=%.2f y=%.2f\n",x,y);
main函数
fa函数
fb函数
调用fa函数
结束
调用fb函数
fa函数结束
fb函数结束
7.4.2 函数旳递归调用
递归调用:一种函数直接或间接地调用此函数本身。
用递归求解问题旳过程分为两个阶段: 1.递推阶段:将原问题不断地转化成子问题。逐渐从未知向已

C语言函数省公开课一等奖全国示范课微课金奖PPT课件

C语言函数省公开课一等奖全国示范课微课金奖PPT课件
f=1; //0
or 1阶乘为1;
else f=fac(n-1)*n;
//n阶乘等于n-1阶乘乘n;
return f; //返
回n阶乘值
}
11第11页
#include<stdio.h>
float fac(int n)
void main()
{ //自定义fac函数求n阶乘
{
float f; if(n<0)
int fac(int n) {
static int f=1; f*=n; return f; }
17第17页
#include<stdio.h> void main() { int fac(int); int i; for(i=1;i<=5;i++)
printf("%d!=%d\n",i,fac(i)); }
//自定义是f什ac么函变数量求,n阶他乘们
float作f用; 范围分别是什 么?
if(n<0) printf("Error!\n");//
x<0时,数据无效;
else if(n==0||n==1)
f=1; //0
or 1阶乘为1;
else f=fac(n-1)*n;
//n阶乘等于n-1阶乘乘n;
return f; //返
上讲回顾
▪ 结构化程序设计思想及方法; ▪ 函数原型申明; ▪ 函数定义; ▪ 函数形参、实参; ▪ 函数调用;
1第1页
本讲关键点
▪ 函数嵌套; ▪ 函数递归调用; ▪ 局部变量、全局变量; ▪ 变量存放类别;
2第2页
函数嵌套调用
▪ 函数定义相互平行、独立。

四川大学《c语言程序设计》课件-第5章 函数

四川大学《c语言程序设计》课件-第5章 函数

用void定义参数 ,表示没有参数
void 函数名(void)
{ 声明语句序列 可执行语句序列 return ;
}
return语句后无需 任何表达式
【例】 计算整数n的阶乘n!
/* 函数功能: 用迭代法计算n!
返回值函数类入型口参数:函整数型名变量说n明表示阶乘的形阶参数表,函
函数返回值: 函返数回的n!功的能值
函数定义(Function definition)
返回值 类型
函数名标识符, 说明运算规则
参数表相当于 运算的操作数
类型 函数名(类型 参数1, 类型 参数2, ……)
{ 声明语句序列
可执行语句序列 return 表达式;
}
函数出口
返回运算的结果
函数定义(Function definition)
因变量
函数名
自变量
程序设计中的函数
程序设计中的函数不局限于计算 –计算类,如打印阶乘表的程序…… –判断推理类,如排序、查找……
问题的提出
读多少行的程序能让你不头疼? 假如系统提供的函数printf()由10行代码替换,那么你编过的程 序会成什么样子?
–实际上一个printf()有上千行代码 main()中能放多少行代码? 如果所有代码都在main()中,怎么团队合作? 如果代码都在一个文件中,怎么团队合作?
C程序的存储类别 – auto型(自动变量) – static型(静态变量) – extern型(外部变量) – register型(寄存器变量)
变量的存储类型( Storage Class)
变量的生存期(Lifetime )
The lifetime of a variable is the period of time during which memory is allocated to the variable

C语言( 函数) ppt课件

C语言( 函数)  ppt课件
return [ 返回值表达式 ] ; //[ ]表示可选
返回值表达式的类型一般应与返回类型一致,否 则以返回类型为准。
return语句后带返回值表达式时控制程序流程返 回调用点的同时带回一个值,语句“return;” 控制程序流程返回到调用点。
6 ppt课件
下面是若干函数定义的例子: void print()//无参函数,也没有返回值 {
每次输出都写一遍输出语句不是不可以, 但代码冗余大,有没有更好的方法?
思考并讨论:输入2个整数,求它们各自逆序之 后的和的逆序数。如输入123,456;求 321+654=975;975的逆序数579为所求结果。
2 ppt课件
5.1 函数概述
把相关语句组织在一起,并给它们注明相应的 名称,利用这种方法把程序分块,这种形式的 组合就称为函数。
printf("hello\n"); }
int max(int a, int b)//求两个整数的最大值 {
if (a>=b) return a; else return b; }
7 ppt课件
5.2.2 函数的声明 函数调用之前必须先进行函数声明,形式为:
“函数类型 函数名([形参列表]);”, 函数声明中形参名可以省略; 若函数定义在函数调用之前,则定义时的函数
12 ppt课件
int main() {
int a,b,c; scanf("%d%d",&a,&b); c = reverseNum(a) + reverseNum(b);//调用 printf("%d\n",reverseNum(c)); return 0; }
13 ppt课件
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
内部静态变量的概念:内部静态变量是在函数或分程序内定义,它的使用局 限于定义它的函数或分程序。
内部静态变量的定义格式: static 数据类型标识符 变量名表;
例如:static char buf[1024]; static int m,p;
12.21
C语言程序设计
内部静态变量的性质:
生命期(全局): 它的生命期是整个程序的执行过程,内部静态变量 的数据在函数(或分程序)的调用结束时并不消失,下次调用时可继 续使用原保留值。
例如:
float add(floatx, float y)
{ static float z; z=z+x+y;
//static 型变量在程序编译时,自动赋初值0。
return(z); }
//变量 z在函数结束时,并不释放,保留原值。
main( )
{ float s,x=2,y=3;
s=add(x,y); s=add(x,y); }
C语言程序设计
利用全局变量传递数据
例: 有一个一维数组,内放10个学生成绩,写一个函数,求
出平均分,最高分和最低分。
float Max=0,Min=0;
float average(float array[],int n)
{int i;
main];
{

auto int k; …
K的作用域
}
}
}
12.18
x,y 的作用域 i,j,c1,c2 的作用域
C语言程序设计
2、寄存器型变量(register型)
(1)寄存器变量的概念 寄存器变量是把变量的数据存放在计算机CPU的寄存器中的变量。
(2)寄存器变量的优点 数据操作速度快。 CPU对寄存器中数据的读写操作速度要远远快于对内
外部变量与局部变量同名
例:
int a=3,b=5;
a,b是外部变量。
max(int a, int b);
a,b是为局部变量。
{ int c;
c=a>b? a : b; return(c);
形参a,b作用范围
}
main( )
{ int a=8; printf(“%d ”,max(a,b));
局部变量a作用范围
12.4
C语言程序设计
汉诺塔问题
假设三个塔,第一个塔上有从小到大堆积的一叠金 属片,一次从一个塔搬运一片到另一个塔,只能从塔顶 搬运,不允许大的金属片压在小的金属片上,求解将金 属片全部搬运到第三个塔上的过程。
12.5
C语言程序设计
递归解决
❖步骤: 先将A上n-1片搬运到中间B塔上; 将A最后一片搬运到目标C塔上; 将B上n-1片借助A搬运到目标C塔上;
存中数据的读写操作速度。
(3)寄存器变量的适用场合 程序中使用频繁的变量,例如,在程序循环结构中,循环次数很多的循
环中,把循环变量定义为寄存器变量,可以大大提高程序处理的速度。
例: main( ) { register int i, sum; for(i=1,sum=0;i<=100;i++) sum=sum+i; printf(“sum=%d”,sum); }
写程序运行结果
#include<stdio.h> int sum(int x,int y) { int k; k=x+y; return k; } void main() { int i,s=0;
for(i=0;i<3;i++) { s=s+sum(2,3);
printf("%d\t",s); }
12.1
return (f );
}
12.2
C语言程序设计
y =fac(3);
以计算3!为例,调用 fac(3);
int fac( int n ) { int f;
if( n<=1 ) f=1; else f=n*fac(n-1); return (f ); }
n为3 f=3*fac(2);
n为2 f=2*fac(1 );
CPU
数据
寄存器
数据
数据
数据
12.19
C语言程序设计
(4)寄存器变量的性质 寄存器变量是局部的自动变量或形参。它的作用域、生命期局限在函数或分
程序内,函数或分程序执行结束时,寄存器变量就被释放,寄存器变量中的数 据消失。
(5)寄存器变量定义的格式 register 数据类型标识符 变量名表;
(6)寄存器变量存放数据的类型 寄存器变量存放数据的类型为:int型、 short型、 char型。寄存器变量不
能存放其它类型的数据。
12.20
C语言程序设计
3、静态型变量(static型)
概念
静态变量是静态存储分配的变量。即在运行时,在特定的存储区内为其 分配相应的存储空间;所分配的存储空间在整个程序运行中自始至终归该 变量使用,自始至终都不释放。
静态变量分内部静态变量和外部静态变量两种。 (1)内部静态变量
12.10
C语言程序设计
全局变量
在函数外定义的变量是外部变量,外部变量是全局变量。可以为本文 件中其他函数所共用。有效范围从定义位置开始到本源文件结束。
int p=1, q=5; int max(int x,int y) { …… } main() { int a,b; …… }
12.11
全局变量p、q的 作用范围
返回6(3*2) 返回2(2*1)
n为1 递推
f=1;
回归
返回1
12.3
C语言程序设计
程序代码
float fac(int n) { float f;
if(n==0 || n==1) return 1; return fac(n-1)*n; }
main() { int n;
float y; scanf("%d",&n); y=fac(n); printf("%d!=%ld\n",n,y); }
min=array[i];
ave=average(score,10);
sum=sum+array[i]; }
Printf(“max=%6.2f\nmin =%6.2f\naverage=%6.2f
aver=sum/n;
\n”,Max,Min,ave);
return(aver);
}
}
12.12
C语言程序设计
使用方法: auto int x; 称变量x为自动存储类型的变量,简称自动变量。 static float y; 称变量y为静态存储类型的变量,简称静态变量
12.16
C语言程序设计
1、自动型变量(auto型)
(1)概念
自动型变量是在函数内部定义的一种变量,它局限于该函数或所在的分程 序。故也称为局部变量。
❖递归终结条件: 当n=1时,直接搬运;
例如:A上有3个
1. A 2个
B
2. A 1个
C
3. B 2个
C
1.1 A 1分解 1.2 A
1.3 C
3.1 B 3分解 3.2 B
3.3 A
12.6
C B B
A C C
C语言程序设计
程序代码:
Void move(char x, char y)
{
printf(“%c---->%c\n”,x,y);
main k=1 x=10 y=20 other k=100 x=200 y=300 main k=1 x=10 y=20
printf(“k=%d x=%d y=%d\n",k,x,y);
}
12.8
C语言程序设计
变量是程序中最活跃的元素,因为它代表的是各种 类型的数据。
变量的作用域
从变量的使用范围(空间角度)来划分:
存放 static变量、 extern变量。
存放 auto变量、 register变量、函数的返回值、被调用函数的形参、 保存调用现场的数据。
12.15
C语言程序设计
8.9 变量的存储类别
变量有两个属性:
数据类型和数据的存储类型
C语言有四种存储类型,即:
• auto自动型。 • register寄存器型。 • static静态型。 • extern外部型或全局型。
12.17
C语言程序设计
例:
example(float x,float y)
{
//对于这一对花括号 i,j,c1,c2是内部变量。
int i,j;
char c1,c2;
{
//对于这一对花括号 i,j,c1,c2是外部变量。
double d1,d2; int m,n; int u,v;
d1,d2,m,n,u,v 的作用域
{ float ave,score[10];
Max=Min=array[0];
int i;
for(i=1; i<n; i++)
{ if(array[i]>max) max=array[i];for(i=0;i<10;i++);
else if(array[i]<min)
scanf(“%f”, &score[i]);
不同源文件中外部静态变量可以同名,各文件的外部静态变量有其自己的
存储空间,同名变量不会冲突。
file1
file2
(2)自动型变量的定义格式 [auto] 数据类型标识符 变量名;其中,auto可以省略。
auto int b,c=3;
(3)自动型变量定义的位置 自动型变量定义的位置在函数或分程序的开始位置。
相关文档
最新文档