用函数实现模块化程序设计
函数的嵌套调用
函数的递归调用
数组元素做函数参数
数组名做函数参数
三、局部变量 全局变量
变量的存储方式和生存期
关于变量的声明和定义
内部函数和外部函数
有效范围为从定义变量的位置开始到本源文件结束。
int a ,i ,char c1,c2; 局部变量
{int b,c} 全局变量主调函数外部
开辟存储空间 定义
不开辟存储空间 声明
一个一维数组,内放10个学生成绩,写一个函数,当主函数调用此函数后,能求出平均分、最高分和最低分。
#include <stdio.h>
float Max=0,Min=0; // 定义全局变量Max,Min
int main()
{ float average(float array[ ],int n);
float ave,score[10];
int i;
printf("Please enter 10 scores:");
for(i=0;i<10;i++)
scanf("%f",&score[i]);
ave=average(score,10);
printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",Max,Min,ave);
return 0;
}
float average(float array[ ],int n) // 定义函数,有一形参是数组
{int i;
float aver,sum=array[0];
Max=Min=array[0];
for(i=1;i<n;i++)
{if(array[i]>Max)Max=array[i];
else if(array[i]<Min)Min=array[i];
sum=sum+array[i];
}
aver=sum/n;
return(aver);
}
sum=arry0
i=0
sum=sum+arry[0]
变量的存储方式和静态存储方式 局部变量和全局变量extern
数据类型
存储类别 静态存储 动态存储
考察静态局部变量的值
#include<stdio.h>
int main()
{
int f(int);//函数声明
int a=2,i;//自动局部变量
for(i=0;i<3;i++)
printf("%d\n",f(a));
return 0;
}
int f(int a)
{
auto int b=0;//自动局部变量
static int c=3;//静态局部变量
b=b+1;
c=c+1;
return (a+b+c);
}、
7
8
9
程序区
静态存储区 //静态局部变量
动态存储区
输出1到5的阶乘
#include <stdio.h>
#include <conio.h>
int main(){
int fac(int n);
int i;
for(i=1;i<=5;i++)
printf("%d!=%d\n",i,fac(i));
getch();
return 0;
}
int fac(int n){
static int f=1;
f=f*n;
return f;
}
用static
声明一个变量的作用是:
- 对局部变量用
static
声明,把它分配在静态存储区,该变量在整个程序执行期间不
释放,其所分配的空间始终存在。 - 对全局变量用
static
声明,则该变量的作用域只限于本文件模块(即被声明的文
件中)。
extern调用函数,求3个整数中的大者
#include<stdio.h>
int main()
{
int max();
extern int A,B,C; //把外部变量A,B,C的作用域扩展到从此处开始
printf("please input three integer numbers:\n");
scanf("%d%d%d",&A,&B,&C);
printf("max=%d\n",max());
return 0;
}
int A,B,C; //定义外部变量A,B,C
int max()
{
int m;
m=(A>B)?A:B;
if(m<C)
{
m=C;
}
return m;
}