第7章教案_第七章教案
第7章教案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“第七章教案”。
《C程序设计》课教学方案 教师:序号:12 授课时间
授课班级
上课地点
学习内容
第7章用函数实现模块化程序设计
课时
教学目标
专业能力
了解函数的定义及调用方法 掌握如何对被调用函数进行声明 了解变量的存储方式和生存期
方法能力
理解模块化程序设计的概念,善于利用函数减少重复编写程序段的工作量
社会能力
提高逻辑思维能力 目标群体
普专
教学环境
多媒体教室
教学方法
理论教学与举例分析
时间安排
教学过程设计
第一节
7.7数组作为函数参数 7.7.1数组元素作函数实参
例7.9 输入10个数,要求输出其中值最大的元素和该数是第几个数。解题思路:
定义数组a,用来存放10个数
设计函数max,用来求两个数中的大者
在主函数中定义变量m,初值为a[0],每次调用max函数后的返回值存放在m中
用“打擂台”算法,依次将数组元素a[1]到a[9]与m比较,最后得到的m值就是10个数中的最大者
#include int main(){ int max(int x,int y);
int a[10],m,n,i;
printf(“10 integer numbers:n“);
for(i=0;i
scanf(”%d“,&a[i]);
printf(”n“);for(i=1,m=a[0],n=0;i
{ if(max(m,a[i])>m)
{ m=max(m,a[i]);
n=i;
}
}
printf(“largest number is %dn”,m);
printf(“%dth number.n“,n+1);} 7.7.2数组名作函数参数
除了可以用数组元素作为函数参数外,还可以用数组名作函数参数(包括实参和形参)用数组元素作实参时,向形参变量传递的是数组元素的值 用数组名作函数实参时,向形参传递的是数组首元素的地址
例7.10 有一个一维数组score,内放10个学生成绩,求平均成绩。解题思路:
用函数average求平均成绩,用数组名作为函数实参,形参也用数组名 在average函数中引用各数组元素,求平均成绩并返回main函数 #include int main(){ float average(float array[10]);
float score[10],aver;int i;
printf(“input 10 scores:n”);
for(i=0;i
scanf(“%f”,&score[i]);
printf(“n”);
aver=average(score);
printf(“%5.2fn”,aver);
return 0;}
float average(float array[10]){ int i;
float aver,sum=array[0];
for(i=1;i
sum=sum+array[i];
aver=sum/10;
return(aver);} 7.7.3多维数组名作函数参数
例7.13 有一个3×4的矩阵,求所有元素中的最大值。
解题思路:先使变量max的初值等于矩阵中第一个元素的值,然后将矩阵中各个元素的值与max相比,每次比较后都把“大者”存放在max中,全部元素比较完后,max 的值就是所有元素的最大值。#include int main(){ int max_value(int array[][4]);
int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};
printf(“Max value is %dn”,max_value(a));
return 0;} int max_value(int array[][4]){ int i,j,max;
max = array[0][0];
for(i=0;i
for(j=0;j
if(array[i][j]>max)
max = array[i][j];
return(max);}
第二节
7.8局部变量和全局变量 7.8.1 局部变量
定义变量可能有三种情况: 在函数的开头定义
在函数内的复合语句内定义 在函数的外部定义
在一个函数内部定义的变量只在本函数范围内有效 在复合语句内定义的变量只在本复合语句范围内有效 在函数内部或复合语句内部定义的变量称为“局部变量” 7.8.2 全局变量
在函数内定义的变量是局部变量,而在函数之外定义的变量称为外部变量 外部变量是全局变量(也称全程变量)全局变量可以为本文件中其他函数所共用
有效范围为从定义变量的位置开始到本源文件结束 7.9变量的存储方式和生存期
7.9.1动态存储方式与静态存储方式
从变量的作用域的角度来观察,变量可以分为全局变量和局部变量
从变量值存在的时间(即生存期)观察,变量的存储有两种不同的方式:静态存储方式和动态存储方式
静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式 动态存储方式是在程序运行期间根据需要进行动态的分配存储空间的方式 7.9.2 局部变量的存储类别 1.自动变量(auto变量)局部变量,如果不专门声明存储类别,都是动态地分配存储空间的调用函数时,系统会给局部变量分配存储空间,调用结束时就自动释放空间。因此这类局部变量称为自动变量
自动变量用关键字auto作存储类别的声明 2.静态局部变量(static局部变量)希望函数中的局部变量在函数调用结束后不消失而继续保留原值,即其占用的存储单元不释放,在下一次再调用该函数时,该变量已有值(就是上一次函数调用结束时的值),这时就应该指定该局部变量为“静态局部变量”,用关键字static进行声明 3.寄存器变量(register变量)一般情况下,变量(包括静态存储方式和动态存储方式)的值是存放在内存中的 寄存器变量允许将局部变量的值放在CPU中的寄存器中 现在的计算机能够识别使用频繁的变量,从而自动地将这些变量放在寄存器中,而不需要程序设计者指定
7.9.3 全局变量的存储类别
全局变量都是存放在静态存储区中的。因此它们的生存期是固定的,存在于程序的 整个运行过程
一般来说,外部变量是在函数的外部定义的全局变量,它的作用域是从变量的定义
处开始,到本程序文件的末尾。在此作用域内,全局变量可以为程序中各个函数所引用。1.在一个文件内扩展外部变量的作用域
外部变量有效的作用范围只限于定义处到本文件结束。如果用关键字extern对某变量作“外部变量声明”,则可以从“声明”处起,合法地使用该外部变量
2.将外部变量的作用域扩展到其他文件
如果一个程序包含两个文件,在两个文件中都要用到同一个外部变量Num,不能分别在两个文件中各自定义一个外部变量Num 应在任一个文件中定义外部变量Num,而在另一文件中用extern对Num作“外部变量声明” 在编译和连接时,系统会由此知道Num有“外部链接”,可以从别处找到已定义的外部变量Num,并将在另一文件中定义的外部变量num的作用域扩展到本文件 3.将外部变量的作用域限制在本文件中
有时在程序设计中希望某些外部变量只限于被本文件引用。这时可以在定义外部变量时加一个static声明。
用static 声明一个变量的作用是:(1)对局部变量用static声明,把它分配在静态存储区,该变量在整个程序执行期间不释放,其所分配的空间始终存在。
(2)对全局变量用static声明,则该变量的作用域只限于本文件模块(即被声明的文件中)。
作业
课后题第11题
教学反馈