资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C语言程序设计高级篇第一讲 跑马灯程序设计:函数参数传递、指针引入 双C工作室主要内容一、针对上机出现的一些问题进行分析讲解 二、电表计时计费系统:引入函数的参数传递( 一般的值传递,数组的传递等); 三、修改跑马灯程序:引入指针;练习简单的指 针操作; 四、选个题五、习题选做。一、实验六上机问题总结1.大括号“”,配对使用 ; 2.for(;),if()等之后除非是要进行“空操作”,否则 不能直接跟上“;”号; 3.循环的嵌套,不只有while() ,for(;)这种方式 ; 4.函数的概念还没有; 5.单步调试,注意查看viewdebug windowswatch窗 口,在这个窗口输入你想要看的变量名。自己动脑解决问题、自己调整!一段子程序来实现某个功能; 在C语言中将常用的功能模块编写成函数;二、电表计时计费系统 1.管理员子系统图1 电表计时计费系统:管理员子系统实现了特定的功能实现了特定的功能开 始管理员操作模块管理员身份验证模块结 束是管理员不是管理员(1)管理员身份验证模块bool administerVerify(char admname,int admpassword) 一维数组作为参数传递(2)管理员身份操作模块void administerOperate(int restElectricMONTH,int electricBillMONTH) 二维数组作为参数传递三、有趣的问题1.有一对兔子,从出生后第3个月起每个月都生一堆兔子。小兔子长到第3个月后每个月又生一堆兔子。假设所有兔子都不死,请 问第十个月兔子的总数是多少?第一百个月呢? (1)问题分析第几个月小兔子 对数中兔子 对数老兔子 对数兔子总数110012010131012411135212563238753513821兔子繁殖的规律(2)绘制流程图 (3)源代码 #include void main() long int f1,f2; int i; int numberMouths; f1=1;f2=1; printf(“请输入您想要知道的月份:“); scanf(“%d“, for(i=1;iy?x:y; return (z); 空函数: 类型说明符 函数名() 思考:其作用?函数的使用一般形式:函数名(实参列表)调用方式: 1.函数语句:delay(); 2.函数表达式: c=2*max(a,b); 3.函数参数:m=max(a,max(b,c);void main()int a,b,c,m;int max(int x,int y);scanf(“%d,%d,%d”,m=max(a,max(b,c);printf(“The max number is %dn”,m); 注意: 使用某函数之前,要在调用该函 数的主函数(或其他函数)进行 该函数的声明。函数参数1.形式参数:定义函数时函数名后面括号中的变量。 2.实际参数:调用某个函数时,该函数名后面括号中的 变量。 void main()int a,b,c,m;int max(int x,int y);scanf(“%d,%d,%d”,m=max(a,max(b,c);printf(“The max number is %dn”,m); int max(int x,int y) int z; z=xy?x:y; return (z); 形式参数(形参)实际参数(实参 )函数参数传递1.值传递:单向传递,只由实参传给形参,传递的是值。int max(int x,int y) int z; z=xy?x:y; return (z); #include void main()int a=5,b=3,c=9,m;int max(int x,int y);m=max(a,max(b,c);printf(“a=%d, b=%d, c=%d , max=%d n”,a,b,c,m); 3939ybxa3399ycxb图 参数传递图调用函数在内存中,实参,形参 放在不同的单元2.地址传递:(1)数组作为函数参数,传递的是数组首元素地址。#include void main() float average(float array); float score10,aver; int i; printf(“intput 10 scores:n“); for(i=0;i void main() void swap(int x,int y); int a,b; printf(“please input 2 number as(a,b):“); scanf(“(%d,%d)“, swap(a,b);printf(“a=%d, b=%d n“,a,b); void swap(int x,int y) int z; z=x; x=y; y=z; #include void main() void swap(int* x,int* y); int *p_a,*p_b; int a,b; printf(“please input 2 number as(a,b):“); scanf(“(%d,%d)“, p_a=p_b= swap(p_a,p_b);printf(“a=%d, b=%d n“,a,b); void swap(int* x,int* y) int z; z=(*x); (*x)=(*y); (*y)=z; return ; 让我们先看看这 两个程序执 行出来的差 别吧?指针定义根据变量名与地址 的对应关系,找到变量a 的地址2000,然后从由 2000开始的两个字节中 取出数据,进行输出。思考:数据在内存中如何存储,如何读取?区分:内存单元的地址与内存单元的内容这两个概念。如: int a=3; Printf(“%d”,a); 2000a指针:一个变量的地址成为该变量的“指针”。如:地址2000是变量a的指针。#include void main() int a,b; int *pointer_1,*pointer_2; a=100;b=10; pointer_1= pointer_2= printf(“%d,%dn“,a,b); printf(“%d,%dn“,*pointer_1,*pointer_2); 指针变量定义1.指针变量:有一个变量专门用来存放另一个变量的地址( 即指针),则称它为“指针变量”。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号