学习-c课件24学时_第1页
学习-c课件24学时_第2页
学习-c课件24学时_第3页
学习-c课件24学时_第4页
学习-c课件24学时_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章作业:p108

p1082,3,4,5,6,7,9,10好好利用假期,巩固前五章!!!前五章跟着课程进度读教材内容>80%前五章的例题(经典题),自己做,或换算法前五章的选择、填空作业存疑问者上机找答案前五章的编程题未做的部分前五章的常见错误列表和正文中的问题(如p52两处)上机试答案,写到书上网上、图书馆其它书上的不同题目(争优)上机题没语法错,但结果不对,用debug查逻辑错如何选择变量的类型:①没任何要求与限制的通常用整型(如for循环变量i,j,k是整型);②当数为实数(0.23444)或数的值域(范围)较大时,通常选float或double型。如变量r代表税率0.05(5%错),例5-4等求和时的1/2,1/3,1/4…等等每一项都应该用实型变量,否则容易溢出或整除为0③键盘输入的数据类型随着所赋值的变量的类型而变化;想办法验证结果的正确性!

p84题2你的程序对不?至少试几次?题4如何试?题6如何试?P100例5-12的结果如果是N=46sum=1035就错了,如何检测自己题目结果的对错?理论高度:教材p167程序测试!另参考程序测试书籍第5章编程进阶5.1复杂的循环结构5.2典型题目的编程5.3程序的动态调试5.1复杂的循环结构5.1.1循环的嵌套当一个循环体内又包含另一个完整的循环结构时,称为循环嵌套或多重循环

执行过程:外循环执行一次(循环变量取一个值),内循环要执行一遍完整循环。

运行时间短运行时间长i=1;t=a;s=0while(i<=n){

s=s+t;

t=t*10+a;

i++;}s=0;for(i=1;i<=n;i++){t=0;for(j=1;j<=i;j++)t=t*10+a;s=s+t;}

注意:多重循环费时间用现代语言描述就是:公鸡一只五元,母鸡一只三元,小鸡三只一元,问一百元买一百只鸡,应该怎么买?【例5-1】中国古代数学问题之百钱买百鸡问题(《张邱建算经》):今有鸡翁一,值钱伍;鸡母一,值钱三;鸡雏三,值钱一。凡百钱买鸡百只,问鸡翁、母、雏各几何?#include<iostream.h>voidmain(){ inti,j,k; for(i=0;i<=20;i++) for(j=0;j<=33;j++) { k=100-i-j;

if(k%3==0) { if(i*5+j*3+k/3==100) cout<<"公鸡:"<<i<<'\t'<<"母鸡:"<<j<<'\t'<<"小鸡:"<<k<<endl; } }}实数相等比较不宜用直接判断!1.break语句循环语句正常退出是通过循环条件的判断来进行的。有时,在循环体中,也可以通过使用break语句来立即终止循环的执行,直接跳出循环语句。其形式为:

break;5.1.2break语句和continue语句 #definePI3.1415926 voidmain() {intr;

floatarea;

for(r=1;r<=10;r++)

{

area=PI*r*r;

if(area>100)break;

cout<<"r:"<<r<<"area is:"<<area<<endl;

} }例5.2计算r=1到r=10时的圆面积,直到面积area大于100为止。运行结果:

r:1areais:3.1415930

r:2areais:12.566370

r:3areais:28.274334

r:4areais:50.265480

r:5areais:78.539818说明:从上面的for循环可以看到:当area>100时,执行break语句,提前终止执行循环,即不再继续执行其余的几次循环。continue和break语句的区别:continue语句只结束本次循环,继续下一次循环,而不是终止整个循环的执行;break语句则是打断、结束循环,不再进行条件判断。生活中有很多无限循环的现象,比如计算机一直开着,windows系统一直工作着……,比如编写一个mp4播放器,通常要无限循环地播放一批歌曲……,在编写代码时,都需要正常地编写无限循环,这和常说的“死循环”不太一样,死循环通常指“死”在无谓的循环里,无法终止循环去做正常的事情。三种循环语句都可以处理成无限循环,这样的代码在编写的时候一定要小心,注意条件的控制,否则就可能真成了“死循环”。5.1.3无限循环的应用voidmain(){ inti=1; floatsum=0; while(1)//这里看起来是无限循环,

{sum=sum+1./i; if(sum>10)break;//循环结束的条件 i++; }cout<<“第”<<i<<“项时,级数和的值大于

10。”<<endl;}例5-4求调和级数加到第几项时,级数和的值大于10。用公式求出π的近似值,要求用前50项。绝对经典例题!代表多项式求和一大类题目!5.2典型题目的编程5.2.1累加与累乘,如例4-8、例4-9和例5-4

voidmain(){

inti,s;

floatn,t,pi;

t=1;pi=0;n=1.0;s=1;

for(i=1;i<=50;i++){

pi=pi+t;

//将当前项值加到结果近似值上

n=n+2;

//准备处理下一项分母

s=-s;

//处理符号

t=s/n;

//计算新的当前项值

}

pi=pi*4;

cout<<“pi=”<<pi<<endl;}经典例题现实中有很多问题的解“隐藏”在多个可能中。所谓“穷举搜索法”,也叫“枚举法”就是将问题所有可能的答案一一列举,并对每一个可能解进行判断,从中得到正确的答案。该法对于人手工操作来说是单调而繁琐的,但是对于高速、高精度的计算机来说,却可以通过牺牲时间(实际计算时间短)来换取答案的正确性和全面性。5.2.2穷举搜索法voidmain(){inti,n=0; for(i=101;i<=160;i++) {if(i%10==4||i/10%10==4)continue;cout<<i<<‘\t’;n++;

if(n%5==0)cout<<endl; }}【例5-3】:某宾馆有60个房间,编号是从101到160。某客人入住宾馆,他不喜欢4这个数字,请编程列出他可以住的房间号,并按每5个房间号一行进行输出。循环控制5::43三位数的整数,如何用/或%取出其个位?十位?百位?准备上机程序代码时要认真琢磨P46图3-2和图3-3牵扯一类编程题!!!如53页例3-659页题4和题8???5.2.3数位提取问题voidmain(){ intdata,gewei; cout<<"Inputanintegerpls:";

cin>>data; do {gewei=data%10;

cout<<gewei; data=data/10; }while(data!=0);//循环结束的判断}[例5-7]将任意键入的五位以内的正整数按逆序输出,例如,输入123,输出321。取出个位除掉个位后的数在数学公式中,有一类递推类的数列,通过初始值和递推公式(通项公式)可以推导出任意项的值及前N项的和,前面讲到求累加和或累乘的时候,用到的就是这个方法,这类公式在C语言中很容易通过迭代法实现。递推可以分为正向递推和逆向递推。5.2.4递推与迭代voidmain(){ intf0=0,f1=1,fn,n,sum,i; cin>>n;

sum=f0+f1; for(i=2;i<=n;i++)

{fn=f1+f0; cout<<“斐波那契数列第”<<i<<“项是 "<<fn<<endl;

sum=sum+fn; f0=f1;//更新新的前两项值

f1=fn;

}}[例5-9]求斐波那契数列第n项的值和前n项的和。F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n>=2)5.3程序的动态调试程序错误:语法错误,逻辑错误静态查错:在程序出错后,从头开始细致读程序,人为想象计算机如何一步步执行的,找出程序中的逻辑问题。动态调试:正确产生了*.exe文件之后,在程序运行过程中,通过一行程序或一段程序的运行结果,查找程序的逻辑错误。F10(Stepover):单步执行指令,按一次执行一行语句,执行函数调用时,不进入体内跟踪。停止调试程序,可以使用Debug菜单的“StopDebugging”命令。

单步跟踪:用“心和手”来进行,跟踪者一定要跟随计算机的运行过程,用一组预先设计好的数据来一步步跟踪计算机运行过程,发现程序中的逻辑错误。每执行一步就停下来,观察各变量的值是否符合程序设计要求!思考:符合----该步正确,下一步……不符合----错误所在!!!P98图5-4F10F10F10【例5-12】求最小的正整数N及前N项的和,使得1+2+3+…+N>=1000。Main(){intn,sum;n=1;sum=0;while(sum<1000){sum+=n;n++;//++n;n=n+1;}cout<<“满足1+2+3+…+N>=1000的最小的N是”<<n-1<<“其和为”<<sum;}例5-12求最小的正整数N及前N项的和,使得1+2+…+N>=1000

Main(){intn,sum;n=1;sum=0;while(sum<1000);{sum=sum+n;n++;//++n;n=n+1;}cout<<“满足1+2+3+…+N>=1000的最小的N

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论