11-27

用函数实现模块化程序设计

函数的嵌套调用

函数的递归调用

数组元素做函数参数

数组名做函数参数

三、局部变量 全局变量

变量的存储方式和生存期

关于变量的声明和定义

内部函数和外部函数

有效范围为从定义变量的位置开始到本源文件结束。

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声明一个变量的作用是:

  1. 对局部变量用static声明,把它分配在静态存储区,该变量在整个程序执行期间不
    释放,其所分配的空间始终存在。
  2. 对全局变量用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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值