




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,1,第2讲程序阅读技巧,.,2,多读、读好程序可以:,提高对语法的记忆、理解和使用提高对常用算法的理解和使用提升程序设计和编程能力提高做题效率,如看程序写结果、程序填空、上机程序改错和程序填空,.,3,一、程序的一般阅读方法,1.随时记录变量值的变化情况对于数组、指针和函数参数最好辅以形象的示意图。步骤:从main()开始阅读每定义一个变量就记录其值及含义根据程序的执行流程,对变量值的变化随时记录更改直到main()结束,.,4,2.对于程序的执行流程要正确把握ifelse嵌套结构switch结构循环结构各种结构的嵌套,.,5,(1)ifelse结构条件的正确解读:非0为真,0为假如x=5和x=5不一样x!=0和x等价else和前面最近的未配对的if配对,.,6,例.有以下程序main()inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%dn”,a,b,c,d);程序输出A)0,1,2,0B)0,0,0,3C)1,1,2,0D)编译有错,.,7,(2)switch结构根据整形表达式的值进行多分支选择case只起语句标号的作用,内部语句按顺序执行case不满足才看defaultcase语句和default语句顺序任意搭配break真正实现多分支,.,8,例.#includemain()ints;scanf(%d,运行时,若输入123450,则输出结果是A)6566456B)66656C)66666D)66666560,.,9,(3)循环结构循环要素:循环入口、循环条件、循环体和循环条件的改变。break和continue的含义循环的嵌套,.,10,例:若变量已正确定义,有以下程序段i=0;doprintf(%d,i);while(i+);printf(%dn,i)其输出结果是A)0,0B)0,1C)1,1D)程序进入无限循环,.,11,例:以下程序段中的变量已正确定义for(i=0;i4;i+,j+)for(k=1;k3;k+);printf(*);程序段的输出结果是A)*B)*C)*D)*,.,12,练习2011年3月一(20)有以下程序段inti,n;for(i=0;i8;i+)n=rand()%5;switch(n)case1:case3:printf(%dn,n);break;case2:case4:printf(%dn,n);continue;case0:exit(0);printf(%dn,n);以下关于程序段执行情况的叙述,正确的是A)for循环语句固定执行8次B)当产生的随机数n为4时结束循环操作C)当产生的随机数n为1和2时不做任何操作D)当产生的随机数n为0时结束程序运行,返回操作系统,产生随机数,.,13,rand()%100结果是随机数除以100后所得的余数,即限定随机的范围是在099之间;使用rand()函数需添加头文件:#include,1.rand()函数功能:是一个可以生成随机数的函数随机数,函数返回的随机数在0RAND_MAX(32767)之间;,2.srand()函数功能:用来设置随机数的种子,一般与rand()结合使用。否则直接用rand()的话,每次运行程序的产生的随机数都相同。,n=rand()%5;产生04的随机数,随机函数介绍,.,14,二、包含函数的程序阅读,1.函数调用的一般过程在发生函数调用时,函数中的变量(包括形参)并不占用内存。只有发生函数调用时,才分配内存单元。将实参的值传递给形参,类型不一致时,按形参类型自动强制转换。当执行return语句或函数执行完,函数调用返回。被调函数返回时,形参被撤消,不影响实参的值。,.,15,#includeintadd(int,int);voidmain()inta,b,c;scanf(%d%d,inta,b,c;,/例值参传递,函数值传递机制,.,16,#includeintadd(int,int);voidmain()inta,b,c;scanf(%d%d,scanf(%d%d,/例5值参传递,函数值传递机制,.,17,#includeintadd(int,int);voidmain()inta,b,c;scanf(%d%d,c=add(a,b);,/例5值参传递,函数值传递机制,.,18,#includeintadd(int,int);voidmain()inta,b,c;scanf(%d%d,intadd(inti,intj),/例5值参传递,函数值传递机制,.,19,#includeintadd(int,int);voidmain()inta,b,c;scanf(%d%d,2,4,i+;j+;,/例5值参传递,函数值传递机制,.,20,#includeintadd(int,int);voidmain()inta,b,c;scanf(%d%d,i,j,2,4,return(i+j);,/例5值参传递,3+5,函数值传递机制,.,21,#includeintadd(int,int);voidmain()inta,b,c;scanf(%d%d,i,j,2,4,return(i+j);,/例5值参传递,函数值传递机制,.,22,#includeintadd(int,int);voidmain()inta,b,c;scanf(%d%d,i,j,8,2,4,c=add(a,b);,/例5值参传递,函数值传递机制,.,23,#includeintadd(int,int);voidmain()inta,b,c;scanf(%d%d,8,c=add(a,b);,/例5值参传递,函数值传递机制,.,24,#includeintadd(int,int);voidmain()inta,b,c;scanf(%d%d,8,输出,c=8,printf(c=%dn,c);,/例5值参传递,函数值传递机制,.,25,2.指针作函数参数的用法形参指针变量实参是指针变量或地址修改形参并不能改变实参只能通过对形参指针的间接访问修改形参指针指向的对象,实现函数外变量值的修改。辅以变量示意图来理清变量值的变化。,.,26,5,9,5,5,9,COPY,#includeswap(intx,inty)inttemp;temp=x;x=y;y=temp;voidmain()inta,b;scanf(%d,%d,例:函数实现变量值交换,值传递,运行结果:5,9,.,27,swap(int*p1,int*p2)intp;p=*p1;*p1=*p2;*p2=p;main()inta,b;int*pointer_1,*pointer_2;scanf(%d,%d,5,9,(main),5,9,COPY,5,例:函数实现变量值交换,地址传递,运行结果:95,.,28,#includevoidf(intn,int*r)if(n%3=0)*r=n+/3;elseif(n%5=0)*r=n+/5;voidmain()intm=6,p=10;f(m,例程序运行后的输出结果是:(),*r,函数调用时:m到将值传递给n,n定义为普通变量p将地址传递给r,r定义为指针变量,函数调用,函数调用结束,2,7,函数调用结束:传值的m没有改变传地址的p在函数f中所作的改变保留了下来。*r相当于直接对p操作,.,29,3.递归函数的调用过程函数的递归调用是嵌套调用的一种特例递归函数有3个要素递归形式(算法)递归条件(缩小问题规模)递归终止条件(基本情况),.,30,函数调用用栈管理栈是先进后出的数据结构,函数调用时入栈操作:建立被调用函数的栈空间保护调用函数运行状态和返回地址传递参数控制权交给被调用函数,函数返回时出栈操作:返回值保存在临时空间恢复调用函数运行状态释放栈空间根据地址返回调用函数,函数嵌套调用,.,31,嵌套调用示例,main函数,调用a函数,结束,a函数,调用b函数,b函数,.,32,intfac(intn)intf;if(n0)fun(x/2);printf(%d,x);main()fun(7);printf(n);程序运行后的输出结果是A)137B)731C)73D)37,.,37,三、字符串数组,1.字符数组与字符指针的区别charstr10=“hello”;,c0c1c2c3c4c5c6c7c8c9,char*str=“hello”;,str,.,38,charname59=“gain”,“much”,“stronger”,“point”,“bye”;,char*name5=“gain”,“much”,“stronger”,“point”,“bye”;,2.字符串数组的两种实现形式,二维数组存储空间固定字符指针数组相当于可变列长的二维数组,指针数组元素的作用相当于二维数组的行名但指针数组中元素是指针变量二维数组的行名是地址常量,.,39,练习:有以下程序fun(charp10)intn=0,i;for(i=0;i7;i+)if(pi0=T)n+;returnn;main()charstr10=“Mon”,“Tue”,“Wed”,“Thu”,”Fri”,”Sat”,”Sun”;printf(“%dn”,fun(str);程序执行后的输出结果是A)1NB)2C)3D)0,.,40,练习:有以下程序#includemain()voidf(charp10,intn)/*字符串从小到大排序*/chart10;inti,j;for(i=0;i0)strcpy(t,pi);strcpy(pi,pj);strcpy(pj,t);main()charp510=“abc”,”aabdfg”,”abbd”,”dcdbe”,”cd”;f(p,5);printf(“%dn”,strlen(p0);程序运行后的输出结果是A)2B)4C)6D)3,.,41,练习:有以下程序#includevoidfun(char*p)+p;printf(%sn,*p);main()char*a=Morning,Afternoon,Evening,Night;fun(a);程序的运行结果是A)AfternoonB)fternoonC)MorningD)orning,.,42,练习:有以下程序#includemain()char*a=abcd,ef,gh,ijk;inti;for(i=0;i4;i+)printf(%c,*ai);程序运行后的输出结果是A)aegiB)dfhkC)dfhkD)abcdefghijk,.,43,练
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园伴舞基础知识培训内容课件
- 2025年丰都县教育系统招聘教师考试笔试试题(含答案)
- 2025管理人员安全质量培训考试题库及参考答案
- 2025年煤矿一通三防知识考试题库多选题(含答案)
- 烟花爆竹经营培训试题及答案
- 消毒供应中心物品清洗消毒及质量要求试题(附答案)
- 2025建筑设备租赁及周转材料采购合同
- 2024年国家公务员申论考试试题及答案
- 2024年核心制度考试试题(含答案)
- 2025年度标准场地租赁合同(含绿化养护服务)
- DSP原理及应用课件
- 中国共产主义青年团团员发展过程纪实簿
- 医院高危药品分级目录
- 抖音直播手册
- 责任书冷库安全责任书
- Docker容器技术实战项目化教程PPT完整全套教学课件
- 术后切口裂开的应急预案
- 读《交办的技术》心得感悟
- 药事管理与法规杨世民第2版第六章PPT
- 三菱伺服MRJ4故障处理方法
- 操作规程电脑绣花机安全操作规程
评论
0/150
提交评论