第7章_用函数实现模块化程序设计讲解.ppt
文本预览下载声明
函数调用中的数据传递 (7.3.2,7.3.4) 例5 函数返回值的不正确引用。 函数调用的执行过程 (7.3.3) 函数调用的执行过程 系统为形参分配存储单元。 实参将值传给对应的形参。 执行被调函数至return语句或函数结束处。 返回至主调函数调用处,若有返回值,同时将函数值带回调用处。 函数调用中的数据传递 (7.3.2,7.3.4) 例6 判断一个整数是否是素数,是则输出Yes,否则输出No。 - 函数的嵌套调用 (7.4) 例7 输入一个正整数m,求1~ m范围内的所有素数。 函数的嵌套调用 (7.5) 例8 用弦截法求方程 f(x)=x3-5x2+16x-80=0 的根。 (1) 取两个不同点x1,x2,若f(x1)和f(x2)异号,则(x1,x2)区间内必有一个根。若f(x1)与f(x2)同号,则改变x1,x2,直到f(x1)和f(x2)异号。注意x1、x2的值不应差太大,以保证(x1,x2)区间内只有一个根。 (2)求连接(x1,f(x1))和(x2,f(x2)) 的线段(弦)与x轴的交点(x,0)。 (3) 若f(x)与f(x1)同号,则根必 在(x,x2)区间内,令x1=x。若 f(x)与f(x2)同号,则根在(x1,x) 区间内,令x2=x。 (4) 重复步骤 (2) 和 (3) , 直到 |f(x)|<ε 为止, ε为一个 很小的数( 例如 10-6E. 此时认为 f(x)≈0), x为根 。 函数的嵌套调用 (7.5) N-S流程图: 函数的嵌套调用 (7.5) 函数的嵌套调用 (7.5) 数组作为函数参数 (7.7) 数组元素作函数实参 单向的值传递 例10 两个数组大小比较 a和b为有10个元素的整型数组,比较两数组对应元素。变量n, m, k分别记录a[i]b[i], a[i]==b[i],a[i]b[i]的个数。最后, 若nk, 认为数组ab 若nk, 认为数组ab 若n=k, 认为数组a=b 数组作为函数参数 (7.7) 内部函数和外部函数 (7.11) //File4.c(文件4) #include stdio.h void print_string(char str[ ]) { printf(%s\n,str); } 运行结果: abcdefgc? (输入str) c? (输入要删去的字符) abdefg (输出已删去指定字符的字符串) 例 7.20 * * * * * * * 变量在某一时刻存在,则这时属变量的“生存期”(从给变量分配内存至所分配内存被系统收回的时间间隔 例7.12 简单选择排序 #include stdio.h //例7.12 int sort(int array[ ],int n) { int i,j,k,t; for(i=0;in-1;i++) { k=i; for(j=i+1;jn;j++) if(array[j]array[k]) k=j; if(k!=i) { t=array[i]; array[i]=array[k]; array[k]=t; } } return 0; } int main( ) { int a[10],i; void sort(int [ ],int); for(i=0;i10;i++) scanf(%d,a[i]); sort(a,10); for(i=0;i10;i++) printf(%5d ,a[i]); printf(\n); return 0; } 0 1 2 3 4 5 6 7 8 9 a 49 68 57 32 9 99 27 13 76 88 array 数组作为函数参数 (7.7) 例12 字符串的复制 #include stdio.h //例12 #define LEN 100 int main( ) {void strcopy(char [ ],char [ ]); char s1[LEN],s2[LEN]; printf(Input string s2:\n); gets(s2); strcopy(s1, s2); printf(String s1 is:\n); p
显示全部