欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载  

    C语言课件第04章.ppt

    • 资源ID:2143328       资源大小:175.51KB        全文页数:77页
    • 资源格式: PPT        下载积分:8
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要8
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言课件第04章.ppt

    第4章 语句和控制流,一个完整的C程序代码可以存放在一个或多个C源文件中。每一个C源文件可以包含若干预处理命令和C函数, 一个C函数只能包含在一个C源文件中。整个C程序只有 一个主函数(名为main)。而C函数又由数据说明和执行语句构成。 语句是指示计算机完成某项任务的完整命令。程序或函数的功能是由一系列语句实现的。 C语言属于第三代语言,是过程性语言。 从理论上讲,结构化程序设计只要有顺序、选择和循环三种基本结构就可以了。表4-1列出了C语言中各种语句及其示例。它分为4类,即:简单语句、选择语句、循环语句和转移语句。,4.1 表达式语句 4.2 空 语 句 4.3 返 回 语 句 4.4 复 合 语 句 4.5 if 语 句 4.6 switch语句 4.7 while语句 4.8 for 语 句 4.9 dowhile语句 4.10 break语句 4.11 continue语句 4.12 goto语句 4.13 循 环 嵌 套,4.1 表达式语句,由表达式构成的语句称作表达式语句。其一般形式为: 表达式; 例如: a5; xab*10; i; printf(“ Input your data ! n“); 最常用的表达式语句是赋值语句和函数调用语句。 分号是一个语句中不可缺少的组成部分。,4.2 空 语 句,C语言中的空语句就是只有一个分号的语句: ; 空语句不执行任何动作。 但从语法上看,它起一个语句的作用。 while(getchar()! ' n' );,4.3 返 回 语 句,C语言中返回语句有两种形式,即: return; return 表达式;, 第二种形式的返回语句在程序中经常遇到,它不仅把控制权返回给主调函数,而且还把表达式的值返回。 为了表达清晰,易于理解,往往把返回语句中的表达式用圆括号括起来,形式为: return(表达式); return (n1);,4.4 复 合 语 句,在C语言中,复合语句又称为分程序(block),它是由一对花括号括起来的若干语句组成的。例如: count; i; xtemp10; totaltotalx; printf(“ Totald n “,total); 从语法上看,复合语句是作为一个语法整体出现的。 在编写程序时要注意,复合语句中最后一条语句后面的分号不能省略,否则会造成语法错。,4.5 if 语 句,4.5.1 if语句的形式 第一种形式是: if(表达式) 语句,if语句的第二种形式是: if(表达式) 语句1 else 语句2,例4-3:判定输入的整数是否是13的倍数。 /* Whether a number is multiple of 13 or not */ #include void main() int number,rm; printf(“Input your number. n“); scanf(“d“,&number ); rmnumber13; if ( rm0 ) printf(“It's true. n“); else printf(“It's false.n“); ,4.5.2 if语句的嵌套形式 在if语句中又包含一个或多个if 语句的情况,称作if语句的嵌套。 1“语句1”是if-else结构 if ( 表达式1) if ( 表达式2) 语句1 else 语句2 else 语句3,if ( score60 ) if ( score90 ) printf(“Excellent!n“); else printf(“Fair.n“); else printf(“Failure!n“);,如果一般形式中的“语句1”是if语句的简化形式,就出现了如下式所示的情况: if(表达式1) if(表达式2) 语句1 else 语句2 else与上面哪个if配成一对呢?在C语言中约定,else总是与前面最近的if配对。 为了保证else是与第一个if配对,必须用花括号将第二个简化形式的if语句括起来。,2“语句2”是if-else结构 else-if嵌套结构的一般形式是: if(表达式) 语句1 else if(表达式) 语句2 else if(表达式3) 语句3 . . . else 语句n,在使用if语句的嵌套结构时,应注意: 合理地安排判定条件,既符合给定问题在逻辑功能上的要求,又要增加可读性。 注意else子句与if子句的配对约定,即:else与它前面最近的一个if配对。如果if子句中的语句又是嵌套的if语句的简化形式,应注意加花括号。 如果是多重的else-if结构,为了便于书写,可采用上面的形式,即第一个if与下面各个else左对齐,上下都在同一列上,显得层次清晰,易于阅读和理解。,例4-6:求一元二次方程ax2bxc0的根。 如果系数a和b同时为0,则原方程退化,不再是方程了; 如果a是0,而b不是0,则原方程退化成一次方程,只有一个根,其值是c/b; 如果a不是0,而c是0,则原方程有两个根,其值分别是b/a和0; 如果a和c都不为0,则可利用求根公式计算:,#include #include void main() double a,b,c; /*方程的系数*/ double dsc; /* 判别式的值*/ double re,im; /* 实部和(可能的)虚部*/ printf(“Input values of A,B,C n“); scanf(“lflflf“,&a,&b,&c);,if(a0.0)&&(b0.0) printf(“The equation is degenerate.n“); else if(a0.0) printf(“Single root:xfn“,c/b); else if(c0.0) printf(“Two roots:x1ftx2fn“,0.0,b/a); else reb/(2.0*a); dscpow(b,2.0)4.0*a*c; imsqrt(fabs(dsc)/(2.0*a);,if(dsc0.0) printf(“Two roots:x1=%ftx2=%fn“,reim,reim); else printf(“Two complex roots:n“); printf(“x1ffitx2ffin“,re,im,re,im); ,4.6 switch语句,switch语句的简单语法结构形式如下: switch(表达式) 语句 switch是关键字,紧跟其后的“表达式”的值必须是整型的,一般来说,switch语句的语法结构如下: switch(表达式) case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句n default:语句n1 ,例如: switch(opt) case '':printf (“dn“,v1v2 ); break; case '':printf (“dn“,v1v2 ); break; case ' * ':printf (“dn“,v1*v2 ); break; case ' / ':if( v2 !0) printf (“dn“,v1/v2 );,else printf ( “Division by zero. n“); break; case ' ':if( v2 !0) printf (“dn“,v1v2 ); else printf (“Modulus by zero. n“); break; default:printf ( “Unknown operator. n“ ); break; ,对switch语句的特性和使用还要说明以下几点: 执行该语句时,先计算switch后的表达式,其结果必须是整型量。它依次与每一个case之后的常量表达式比较,如果出现匹配,就转去执行相应的语句。 case后面必须是整数或一个字符常量(也是整型量),或者是可以得到整型量的一个常量表达式。不允许这种常量表达式中包含有变量或函数调用。 在一个switch语句中不允许出现两个或更多的情况常量具有同样的值。, 如果有关键字default,那么,在给定表达式的值与所有case之后的情况常量都不匹配的情况下,就转去执行default 之后的语句。 但应强调两点:第一,default不一定出现在switch 结构的最后,其实,它可以出现在中间,甚至出现在所有case之前。第二,如果没有default这一部分,也没有出现与情况常量相匹配的情况,那么,这个switch语句实际上就成了一个空语句,什么也不做。 case及后面的常量表达式,实际仅起标号作用。表达式的值与某个情况常量一旦匹配,那么,在执行下面语句的过程中,只要不遇到break语句,就一直执行下去,而不再判别与别的情况常量是否匹配。,下面是一个例子,用于说明switch语句的功能和特性。 #include void main() int reply; while(1) printf(“ Enter a value between 1 and 10,0 to exit:“); scanf(“d“,&reply);,switch(reply) case 0: exit(0); case 1: case 2: case 3: case 4: case 5: printf(“ You entered 5 or below . n“); break;,case 6: case 7: case 8: case 9: case 10: printf(“ You entered 6 or higher . n“); break; default: printf(“ Between 1 and 10,please ! n“); break; /* end of switch */ /* end of while */ ,4.7 while语句,C语言提供了三种循环语句,即:while、for和do- while。 while语句的语法形式如下: while(表达式)语句,例4-8:利用参考级数 可以求出的近似值。很显然,如果要求的精度越高,则计算的项数越多。我们可以指定一个精度要求,如10-7。当最后一项的绝对值小于该精度时,就认为达到要求了。 /* Evaluating the PI with while */ #include #include ,void main() int sign; double pi,n,temp; n1.0; temp1; sign1; pi0;,while(fabs(temp)1e7) pi temp; n 2; signsign; tempsign/n; pi *4; printf(“PIfn“,pi); ,在使用while语句时要注意: 循环条件设置要合理 构成while无限循环的最简单形式是: while(1) 如果循环体的动作是由多个语句完成的,那么,要用花括号把它们括起来,以复合语句的形式出现。,4.8 for 语 句,for语句的一般语法形式是: for(表达式1;表达式2;表达式3) 语句,for语句等价于下列形式的while结构: 表达式1; while(表达式2) 语句 表达式3; ,例4-10:求一个等差数列前n项的和。等差数列的一般形式是: a1,a2,an 其中,ai1aid (i1,2 ,n1) d称为公差。 求前n项和的基本办法是逐项相加,即:sa1a2an 因为从第二项开始,每一项恰是前一项加上d。这样,知道第一项和d的值以及所求项数n,就可求出前n项的和。,/* Calculating sum of n terms,with for */ #include void main() int a,d,n,i; int ai,sum0;,printf(“Type in:a?td?tn?n“); scanf(“ddd“,&a,&d,&n); aia; for(i1;in;i) sum ai; ai d; printf(“Sumdn“,sum); ,在使用for语句时,应注意以下几点: 与while循环一样,for循环的条件测试总是在进入循环体之前进行的。 for语句不仅可以用于循环次数能直接确定的情况,也可用于无法直接确定循环次数、但在满足一定条件时就可终止循环的情况。,例4-12:用for语句改写例4-8。 /* Evaluating the PI with for */ #include #include void main() int sign; double pi,n,temp; n1.0; temp1;,sign1; pi0; for(temp1;fabs(temp)1e7;tempsign/n) pi temp; n 2; signsign; pi *4; printf(“PIfn“,pi); , 除了上述一般形式的for循环外,在使用中往往会遇到以下几种略有变化的形式。 循环变量可以多于1个。 for(i0,jN;i;,j ) csi; sisj; sjc; 循环终止条件可由一个较复杂表达式的值来确定。 for(i0;si!c && si! '0';i);, 在for语句中,初值、终值及步长可以省略其中一个、两个或者全部,但是其中的分号(;)不能省略。 a如果省略for语句一般形式中的“表达式1”,那么,循环变量的初值应在for语句之前给定。例如: i5; for(;i100;i ) sum 1.0/i; b如果省略for语句一般形式中的“表达式2”,则执行该for语句时,不判别循环的终止条件。这样,也就认为循环条件始终为真,循环将永远执行下去,从而构成无限循环。,c如果省略for语句一般形式中的“表达式3”,则循环变量的增量应在循环体内实现。 d如果省略for语句一般形式中的三个语句,则成为以下形式: for(;) 语句 这就相当于下面的while语句: while(1) 语句 此时,循环条件永远为真,从而无休止地执行循环体。为了终止循环,就要在循环体中加入break语句或者goto语句等。,例4-14:数列。 1,1,2,3,5,8,13,21, 是著名的菲波那奇(Fibonacci)数列,其通项递推公式为: 其中表示项数(3),即从第三项起,每一项都是它前面两项之和。,#include void main() long a,b; int i,c,n; for(;) printf(“n?*0 for exit.n“); scanf(“d“,&n); if(n0) break; cn;,if(c20) c; a1;b1; for(i1;ic/2;i) a b; b a; printf(“NO. d ist“,n); if(n20) printf(“ldn“,b); else printf(“ldn“,a); , 循环语句是可以嵌套的。就是说,在循环体内还可以有循环语句。,4.9 dowhile语句,do-while语句是C语言中另一种结构形式的循环语句。其语法形式是: do 语句 while(表达式); 例4-16:把输入的整数按反方向输出。例如,输入的数是12345,要求输出结果是54321。,/* reversing the digits of a number */ #include void main() int number,digit; printf(“Enter an integer.n“); scanf(“d“,&number); do digitnumber10; printf(“d“,digit); number /10; while(number ! 0); printf(“n“); ,在使用do-while语句时应注意: do-while语句是先执行循环体“语句”,后判别循环终止条件。 在书写格式上,循环体部分要用花括号括起来,即使只有一条语句也如此。do-while语句最后以分号结束。 通常情况下,do-while语句是从后面控制表达式那里退出循环。但它也可以构成无限循环,此时要利用break语句或 return语句直接从循环体内跳出循环。,4.10 break语句,它的语法形式很简单,仅由关键字break和后随的分号组成,即: break; 它的功能是:从switch语句或者包含它的最内层循环语句中跳出。因此,它的用途有两个方面: 在switch语句中,终止某个情况常量后面动作的执行,从而退出该switch语句。 迫使一个循环语句(包括for、while、do-while语句)立即终止,程序从该循环语句后面的第一条语句开始继续向下执行。这样,通过使用break语句,就不必等到循环条件起作用,就使循环提前结束了。,例4-18:把316这个数表示为两个数的和,其中一个数是13的倍数,另一个数是11的倍数。 #include void main() int i; for(i1;i) if(!(316i*13)11) break; printf(“dd316n“,i*13,316i*13); 如果在break语句用于嵌套的循环语句中,它只能从包含它的最内层循环中跳出,并且只能跳出一重循环。如图4-9所示。,4.11 continue语句,continue语句的形式也十分简单: continue; 它使控制转移到包含它的最内层的while、do-while或for循环的末尾,然后重新开始下一轮循环。,例4-20:印出1100之间不能被3整除的数,10个数为一行。 #include void main( ) int i0; int j0;,while(i100) if( i 30 ) continue; printf(“d “,i ); j; if( j 100 ) printf(“n“); printf(“n“); 在使用continue语句时要注意它与break语句的区别:,一般说来,只要它的功能可以用单个if测试所代替、又不增加嵌套深度,就尽量用if而不用continue。,4.12 goto语句,goto语句(包括break、continue等语句)不是理论上程序控制结构所必需的。但是在某些场合下,goto语句却是解决问题的最简单易行的一种方法。使用时要严加控制,即不能滥用。 goto语句的语法形式也很简单: goto 标识符; 其中,标识符指明要跳转到的目标。而goto语句所要跳转到的目标语句是一种标号语句,其一般构成形式是: 标识符:语句,例如: repeat:printf ( “ Input your number. n “ ); scanf(“d“,&number ); if ( number 0 ) goto repeat; ,通常,goto语句可以用于以下两种情况: 利用goto语句可实现循环。 i; loop1: printf (“d n “,i ); i; if ( i100 ) goto loop1;, 通常利用goto语句实现从深层嵌套循环中直接退出来。 for() for() while() if()goto err; err:printf(“ Error! n “ );,在使用goto语句时还应注意: goto的标识符与对应的标号语句必须在同一函数中;并且在标号语句中,标识符要出现在相应语句之前,标识跳转的目标。 在语法上,C语言并没有禁止从循环体外面goto到循环内部。但这样的代码经编译后,在运行时会出现麻烦,使循环过程变得无法预测,因此要避免这样使用。 在同一函数内,标号语句的标识符必须是惟一的。,4.13 循 环 嵌 套,循环语句可以嵌套。就是说,在一个循环体内还可以包含另一个完整的循环语句。这种嵌套可以有多层,从而构成多层循环。,例4-21:整元换零钱的问题。把1元兑换成1分、2分、5分的硬币,共有多少种不同换法? #include void main() int i,j,m; m0;,for(i0;i20;i) for(j0;j(100i*5)/2;j) if(m100) printf(“n“); m; printf(“dtdtdn“,i,j,1005*i2*j); printf(“nmdn“,m); ,

    注意事项

    本文(C语言课件第04章.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开