您好,欢迎访问三七文档
《C程序设计》课教学方案教师:序号:12授课时间授课班级上课地点学习内容第7章用函数实现模块化程序设计课时2教学目标专业能力了解函数的定义及调用方法掌握如何对被调用函数进行声明了解变量的存储方式和生存期方法能力理解模块化程序设计的概念,善于利用函数减少重复编写程序段的工作量社会能力提高逻辑思维能力目标群体普专教学环境多媒体教室教学方法理论教学与举例分析时间安排教学过程设计第一节7.7数组作为函数参数7.7.1数组元素作函数实参例7.9输入10个数,要求输出其中值最大的元素和该数是第几个数。解题思路:定义数组a,用来存放10个数设计函数max,用来求两个数中的大者在主函数中定义变量m,初值为a[0],每次调用max函数后的返回值存放在m中用“打擂台”算法,依次将数组元素a[1]到a[9]与m比较,最后得到的m值就是10个数中的最大者#includestdio.hintmain(){intmax(intx,inty);inta[10],m,n,i;printf(“10integernumbers:\n);for(i=0;i10;i++)scanf(%d,&a[i]);printf(\n);for(i=1,m=a[0],n=0;i10;i++){if(max(m,a[i])m){m=max(m,a[i]);n=i;}}printf(“largestnumberis%d\n,m);printf(“%dthnumber.\n“,n+1);}7.7.2数组名作函数参数除了可以用数组元素作为函数参数外,还可以用数组名作函数参数(包括实参和形参)用数组元素作实参时,向形参变量传递的是数组元素的值用数组名作函数实参时,向形参传递的是数组首元素的地址例7.10有一个一维数组score,内放10个学生成绩,求平均成绩。解题思路:用函数average求平均成绩,用数组名作为函数实参,形参也用数组名在average函数中引用各数组元素,求平均成绩并返回main函数#includestdio.hintmain(){floataverage(floatarray[10]);floatscore[10],aver;inti;printf(input10scores:\n);for(i=0;i10;i++)scanf(%f,&score[i]);printf(\n);aver=average(score);printf(%5.2f\n,aver);return0;}floataverage(floatarray[10]){inti;floataver,sum=array[0];for(i=1;i10;i++)sum=sum+array[i];aver=sum/10;return(aver);}7.7.3多维数组名作函数参数例7.13有一个3×4的矩阵,求所有元素中的最大值。解题思路:先使变量max的初值等于矩阵中第一个元素的值,然后将矩阵中各个元素的值与max相比,每次比较后都把“大者”存放在max中,全部元素比较完后,max的值就是所有元素的最大值。#includestdio.hintmain(){intmax_value(intarray[][4]);inta[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};printf(“Maxvalueis%d\n”,max_value(a));return0;}intmax_value(intarray[][4]){inti,j,max;max=array[0][0];for(i=0;i3;i++)for(j=0;j4;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题教学反馈(注:单元格可合并、拆分)
本文标题:第7章教案(2)
链接地址:https://www.777doc.com/doc-2198425 .html