函数参数与结构体练习优秀课件.ppt
《函数参数与结构体练习优秀课件.ppt》由会员分享,可在线阅读,更多相关《函数参数与结构体练习优秀课件.ppt(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、函数参数与结构体练习第1页,本讲稿共30页2.为什么会出现if-else不匹配?这种错误的原因可能比较复杂;总的原则是:(1)有一个else必有一个if,所以首先在数量上要匹配(2)逻辑关系要合理;若执行的是复合语句,不要漏掉复合语句标志。例如:if(xy)t=a;a=b;b=t;else t=m;编译时就会提示出错信息,正确的写法:if(xy)t=a;a=b;b=t;else t=m;(3)若条件不成立时要求执行的语句有多条,else后必须为复合语句。例如:if(xy)t=a;a=b;b=t;else t=m;m=n;n=t;C程序中常见问题-if语句第2页,本讲稿共30页C程序中常见问题-
2、定长数组与变长数组定义定长数组:定义定长数组:int a5;变长数组:变长数组:int n;int an;定义数组并初始化数组元素:定义数组并初始化数组元素:int a5=1,2,3,4,5;访问数组元素(写、读):访问数组元素(写、读):for(i=0;i 5;i+)ai=i*2;for(i=0;i 5;i+)printf(%d,ai);变长数组:变长数组:int n=20;int an;C99标准规定:定义数组时,其尺寸可以不确定,但不是所有的编译器都支持该特性第3页,本讲稿共30页关于函数关于函数l函数是具有名字的语句序列,使用函数可改善程序的结构,也用于将函数是具有名字的语句序列,使用
3、函数可改善程序的结构,也用于将多处重复使用的代码编写为函数,减少代码量多处重复使用的代码编写为函数,减少代码量l函数定义和函数调用函数定义和函数调用l形式参数与实际参数形式参数与实际参数l参数传递参数传递l实际参数向形式参数传值实际参数向形式参数传值l实参与形参个数相等,类型一致,按顺序一一对应实参与形参个数相等,类型一致,按顺序一一对应l函数的返回值函数的返回值l局部变量与全局变量局部变量与全局变量l变量的作用域与生存期变量的作用域与生存期lstaticstaticlexternextern第4页,本讲稿共30页#include long sum(int a,int b);long fact
4、orial(int n);void main()int n1,n2;long a;scanf(%d,%d,&n1,&n2);a=sum(n1,n2);printf(a=%1d,a);long sum(int a,int b)long c1,c2;c1=factorial(a);c2=factorial(b);return(c1+c2);long factorial(int n)long rtn=1;int i;for(i=1;ib)swap(a,b);if(ac)swap(a,c);if(bc)swap(b,c);printf(%d%d%d,a,b,c);return 0;第7页,本讲稿共30
5、页传值调用传值调用l函数调用执行时,将函数调用执行时,将实际参数变量的地址传实际参数变量的地址传递给形式参数递给形式参数void swap(int*x,int*y)int t;t=*x;*x=*y;*y=t;main()int a,b,c;a=3;b=8;c=2;if(ab)swap(&a,&b);if(ac)swap(&a,&c);if(bc)swap(&b,&c);printf(%d%d%d,a,b,c);第8页,本讲稿共30页数组作为函数参数数组作为函数参数l数组作为参数有两种形式数组作为参数有两种形式l数组元素作为实参,与一般变量相同;数组元素作为实参,与一般变量相同;l形参为数组,实
6、参为数组名形参为数组,实参为数组名lint num5=79,11,27,26,43;int num5=79,11,27,26,43;num4num2num3num0num17911272643l数组元素是一个变量第9页,本讲稿共30页数组元素作为函数参数数组元素作为函数参数l数组元素等同于一个一般变量,作为实参时,数组元素等同于一个一般变量,作为实参时,是将数组元素的值传给形参是将数组元素的值传给形参void change(int x)printf(before:%dn,x);x=x+10;printf(after:%dn,x);int main()int i;int num6=43,18,9
7、,13,55,7;change(num2);for(i=0;i6;i+)printf(%dt,numi);return 0;第10页,本讲稿共30页数组名作为函数参数数组名作为函数参数l数组名可以作为实参,传递的是数组空间的数组名可以作为实参,传递的是数组空间的首地址首地址 int i,j,temp,a5=43,18,9,13,55;for(i=0;i 4;i+)for(j=0;j aj+1)temp=aj;aj=aj+1;aj+1=temp;/*end if*/*end for i*/void sort(int a,int n)/*数组数组a的尺寸为的尺寸为n*/int i,j,temp;f
8、or(i=0;i n-1;i+)for(j=0;j aj+1)temp=aj;aj=aj+1;aj+1=temp;/*end if*/*end for i*/int main()int i;int num6=43,18,9,13,55,7;sort(num,6);for(i=0;i6;i+)printf(%dt,numi);return 0;第11页,本讲稿共30页数组名作为函数参数数组名作为函数参数(续续)l多维数组作为实参和形参多维数组作为实参和形参int max_Value_Matrix(int a4,int m,int n)int i,j,line,col;max=a00;line=0
9、;col=0;for(i=0;i m;i+)for(j=0;j max)max=aij;line=i;col=j;printf(%d,%d,line,col);return max;l例如:找出二维数组中的最大元素,输出其下标void main()int i,j,max,num34;for(i=0;i3;i+)for(j=0;j4;j+)numij=rand();printf(%dt,numij);printf(n);max=max_Value_Matrix(num,3,4);printf(%dt,max);第12页,本讲稿共30页结构体变量作为函数参数结构体变量作为函数参数(续续)l结构体变
10、量作为函数的实参和形参结构体变量作为函数的实参和形参int GetDateId(DATE date)static unsigned int day_of_month13=0,31,28,31,30,31,30,31,31,30,31,30,31;int i,date_id=0;for(i=0;i 2&IsLeapYear(date.year)date_id+;return date_id;typedef struct int year,month,day;DATE;void main()DATE new_date;int days;int GetDateId(DATE date);new_da
11、te.year=2008;new_date.month=11;new_date.day=26;days=GetDateId(new_date);printf(%d,days);printf(n);第13页,本讲稿共30页结构体数组结构体数组编写一程序,对于某班的50名学生,输入各学生的姓名、学号、高数、英语和程序设计课程成绩(都是百分制成绩),并按照总分降序排列输出成绩表。1.定义描述每个学生信息的结构体类型 2.定义存储所有学生信息的结构体数组 3.输入 4.排序 5.输出第14页,本讲稿共30页内存布局代码区静态数据区栈区(stack)堆区(heap)代码区静态数据区(变量)栈区(stac
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 参数 结构 练习 优秀 课件
限制150内