预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共57页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第八章主要内容模块化程序设计基本思想 (自顶向下,逐步分解)分析工具:例:C是模块化程序设计语言算法实现函数基本概念1、主函数main()【函数定义】函数类型函数名(形参表) 形参类型阐明 { 阐明部分 语句部分 }【函数调用1】主、子函数之间关系【函数申明】例函数申明举例printstar() {printf("**********"); } main() {inta; a=printstar(); printf("%d",a); }例函数返回值类型转换【函数调用2】有参函数调用过程main() { inta,b,c,s; scanf(“%d,%d,%d”,&a,&b,&c); s=sum(a,b,c); printf(“sm=%d\n”,s); }参数传递形式包括:main() {inti=2,p; p=f(i,++i); printf("%d",p); } intf(inta,intb) {intc; if(a>b)c=1; elseif(a==b)c=0; elsec=-1; return(c); }7程序执行流程:函数嵌套调用voidstar(int); voidline(); main() {star(20);} voidstar(intd) {inti; for(i=1;i<d;i++) if(i>10)line(); elseprintf(“*”);} voidline() {printf("-");}函数递归调用举例函数递归调用例题()变量存储属性 变量是对程序中数据存储空间抽象 (变量名、变量值、变量类型、变量地址,变量存储属性)存储属性涉及内容:【存储属性分类】动态变量例不同函数中同名变量例:例:例:2、存储器变量(register):静态变量static例:例:外部变量(全局变量) 定义:在函数外定义,可为本文献所有函数共用floatmax,min; floataverage(floatarray[],intn) {inti;floatsum=array[0]; max=min=array[0]; for(i=1;i<n;i++) {if(array[i]>max)max=array[i]; elseif(array[i]<min)min=array[i]; sum+=array[i]; } return(sum/n); } main() {inti;floatave,score[10]; /*Input*/ ave=average(score,10); printf("max=%6.2f\nmin=%6.2f\n average=%6.2f\n",max,min,ave); }例外部变量扩充到同一c程序其它源文献中/*ch7_17.c*/ inta=3,b=5; max(inta,intb) {intc; c=a>b?a:b; return(c); } main() {inta=8; printf("max=%d",max(a,b)); }inti; main() {voidprt(); for(i=0;i<5;i++) prt(); } voidprt() {for(i=0;i<5;i++) printf(“%c”,’*’); printf(“\n”); }★5、函数作用域和存储类别本章小结第九章编译预处理源程序编译前预加工如if(x==YES)printf(“correct!\n”); elseif(x==NO)printf(“error!\n”); 展开后:if(x==1)printf(“correct!\n”); elseif(x==0)printf(“error!\n”);带参数宏定义 普通形式:#define宏名(形参表)宏体#defineMAX(x,y)(x)>(y)?(x):(y) ……. main() {inta,b,c,d,t; ……. t=MAX(a+b,c+d); …… } 宏展开:t=(a+b)>(c+d)?(a+b):(c+d);带参宏与函数区别7.2文献包括 功效:一个源文献可将另一个源文献内容所有包括进来 普通形式:#include“文献名” 或#include<文献名>被包括文献内容 源文献(*.c) 头文献(*.h)思考例文献包括举例