C程序设计课件第3章C语言程序的控制结构

上传人:M****1 文档编号:578928592 上传时间:2024-08-25 格式:PPT 页数:95 大小:3.78MB
返回 下载 相关 举报
C程序设计课件第3章C语言程序的控制结构_第1页
第1页 / 共95页
C程序设计课件第3章C语言程序的控制结构_第2页
第2页 / 共95页
C程序设计课件第3章C语言程序的控制结构_第3页
第3页 / 共95页
C程序设计课件第3章C语言程序的控制结构_第4页
第4页 / 共95页
C程序设计课件第3章C语言程序的控制结构_第5页
第5页 / 共95页
点击查看更多>>
资源描述

《C程序设计课件第3章C语言程序的控制结构》由会员分享,可在线阅读,更多相关《C程序设计课件第3章C语言程序的控制结构(95页珍藏版)》请在金锄头文库上搜索。

1、第3章C语言程序的控制结构C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构本章导读本章包括知识点:算法的描述方法数据的输入输出函数调用格式if语句及switch语句的使用3种循环结构break、continue和goto语句的作用常用算法:如递推法、穷举法等C程序的基本风格C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构3.1算法3.1.1 3.1.1 算法的概念算法的概念3.1.2 3.1.2 算法的表示方法算法的表示方法C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的

2、控制结构3.1.1算法的概念著名的计算机科学家沃思(NikiklausWirth)曾经提出过:数据结构+算法=程序数据结构(datastructure):即对数据的描述和组织形式。算法(algorithm):对操作或行为的描述,即操作步骤。广义地说,算法就是做某一件事的步骤或程序。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构计算机解题的算法大致包括这两大类算法:非数值运算算法和数值运算算法。算法特性算法特性 :有有穷穷性性。算算法法的的步步骤骤必必须须是是有有限限的的,每每个个步步骤骤都都在有限的时间内做完,执行有限个步骤后终止。在有限的时间内做

3、完,执行有限个步骤后终止。确确定定性性。算算法法中中每每一一步步骤骤都都必必须须有有明明确确定定义义,不不允允许许有有模模棱棱两两可可的的解解释释,不不允允许许有有多多义义性性。例例如如:“如如果果成成绩绩大大于于等等于于9090分分,则则输输出出A A;如如果果成成绩绩小小于于等等于于9090分分,则则输输出出B”B”,当当成成绩绩为为9090分分时时,既既会会输输出出A A,又会输出,又会输出B B,这就产生了不确定性。,这就产生了不确定性。有有效效性性。算算法法的的每每一一步步操操作作都都应应该该能能有有效效执执行行。如一个数被如一个数被0 0除就是无效不可行的,应避免。除就是无效不可行

4、的,应避免。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构算法特性没有输入或有多个输入。例如:求1+2+3+100时,不需要输入任何信息就能求出结果;而要求1+2+3+n时,必须从键盘输入n的值,才能求出结果。有一个或多个输出。算法的目的是为了求解,“解”就是算法的输出。没有输出的算法是没有意义的。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构3.1.2算法的表示方法常用方法有:自然语言、传统流程图、NS流程图、伪代码等1用自然语言表示算法用自然语言表示算法自自然然语语言言就就是是人人们们日日常常使使用

5、用的的语语言言,可可以以是是汉汉语语、英英语语或或其其他他语语言言。用用自自然然语语言言表表示示算算法法,通通俗俗易易懂懂,但但文文字字冗冗长长,在在表表达达上上不不够够严严格格,引引起起理理解解上上的的歧歧义义性性,不不易易转转化化为为程程序序,描描述述复复杂杂的的算算法法不不很很方方便便。因因此此,除除了了很很简简单单的的问问题题外外,一一般般不不用用自自然然语语言言描描述算法。述算法。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构用自然语言表示的求1+2+3+6的算法如下:算法1:S1:计算1+2得到3;S2:将第一步中的运算结果3与3相加得

6、到6;S3:将第二步中的运算结果6与4相加得到10;S4:将第三步中的运算结果10与5相加得到15;S5:将第四步中的运算结果15与6相加得到21。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构算法2:S1:定义循环变量i=1,用于保存和的变量s,并置初值为0;S2:判断i的值是否小于等于6,若是则执行S3,否则跳转到S4执行;S3:将i的值累加到s,然后变量i自身加1,转到S2执行;S4:输出s的值。算法1是最原始的方法,最为繁琐,步骤较多,当加数较大时,比如1+2+3+10000,再用这种方法是行不通的;算法2是比较简单的算法,且易于在计算机上

7、执行操作。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构2用传统流程图表示算法流程图是一个描述程序的控制流程和指令执行情况的有向图,用流程图表示算法,直观形象,易于理解。美国国家标准化协会(ANSI)规定了一些常用符号如图所示C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构用传统流程图描述计算1+2+3+6的算法C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构3用NS结构化流程图表示算法1973年美国学者I.Nassi和B.Schneiderman提出了一种新型

8、流程图NS结构化流程图,这种流程图一方面取消了带箭头的流程线,这样算法被迫只能从上到下顺序执行,避免了算法流程的任意转向,适于结构化程序设计;另一方面,这种流程图节省篇幅,因而很受欢迎。用用NS流程图描述的计算流程图描述的计算1+2+3+6的算法的算法 C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构4用伪代码表示算法伪代码使用介于自然语言和计算机语言之间的文字和符号来描述算法。它使用起来灵活,无固定格式和规范,无图形符号,只要写出来自己或别人能看懂就行,由于它与计算机语言比较接近,便于向计算机语言算法(即程序)过渡。用伪代码描述的用伪代码描述的1+

9、2+3+6算法如下:算法如下:begin /*算法开始算法开始*/1=i0=swhile i6 s+i=s i+1=i print send /*算法结束算法结束*/在在程程序序设设计计中中读读者者可可根根据据需需要要和和习惯任意选用。习惯任意选用。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构3.2C语句的分类C语言的语句可分为5大类:l控制语句l函数调用语句l表达式语句l复合语句l空语句C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构1控制语句控制语句用来实现对程序流程的选择、循环、转向和返回等进行控

10、制。C语言中共有9种控制语句,包括12个关键字,可以分为以下几类:l选择语句:ifelse和switch(包括case和default)。l循环语句:for、while和dowhile。l转向语句:continue、break和goto。l返回语句:return。本章的3.5、3.6和3.7中将陆续介绍这些控制语句。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构2函数调用语句函数调用语句是由一个函数调用加一个分号构成的语句。它的一般形式是:函数名(实参表);例如:例如:printf(“This is a C Program”); /*用于输出双引号

11、中的字符串*/c=getchar(); /*用于从键盘读入一个字符*/m=max(a,b,c); /*用于求取a、b、c三者之间的最大值并将结果赋给m*/C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构3表达式语句由一个表达式加上一个分号构成。由一个表达式加上一个分号构成。如:如:A+; x=1; p+=q*4+5; y=42?6:1; C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构 用一对花括号,把若干条语句括起来,用一对花括号,把若干条语句括起来,就形成了一条复合语句。形式如下:就形成了一条复合语句。

12、形式如下:4复合语句复合语句复合语句的形式为:复合语句的形式为: 语句语句1;语句;语句2;语句语句n;例如:例如:z=x+y; z+; u=z/100; printf(“%f”,u); 花括号中的语句,可以是简单语句、空语句、花括号中的语句,可以是简单语句、空语句、复合语句、流程控制语句,所有这些语句括在一起,复合语句、流程控制语句,所有这些语句括在一起,在语法上看成是一条语句,执行时顺序执行花括号在语法上看成是一条语句,执行时顺序执行花括号中的每条语句。复合语句多用于流程控制语句中。中的每条语句。复合语句多用于流程控制语句中。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序

13、的控制结构语言程序的控制结构5空语句仅仅以分号“;”作为标识。空语句的形式为:;/*空语句*/空空语语句句本本身身没没有有实实际际功功能能,只只是是表表示示什什么么操操作作都都不不做做。设设置置空空语语句句的的目目的的,一一是是在在未未完完成成的的程程序序设设计计模模块块中中,暂暂时时放放一一条条空空语语句句,留留待待以以后后对对模模块块逐逐步步求求精精实实现现时时再再增增加加语语句句;二二是是实实现现空空循循环环等等待待;三三是实现跳转目标点等。是实现跳转目标点等。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构例如:intmax(inta,int

14、b)/*求两个整数的最大值*/;/*此处的空语句表示在以后添加内容,保证当前的程序正常运行*/C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构例如:实现空循环while(getchar()!=n);/*此语句表示只要从键盘输入的字符不是回车键则重新输入*/例如:实现跳转到目标点inti=0,sum=0;ex:;sum+=i+;if(x100)gotoex;空语句出现的位置是有限制的。预空语句出现的位置是有限制的。预处理命令、函数头和花括号处理命令、函数头和花括号“”之之后都不允许出现空语句。后都不允许出现空语句。注意注意C C程序设计课件程序设计课件

15、_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构3.3输入和输出语句3.3.1 字符的输入和输出字符的输入和输出3.3.2 格式化输入和输出格式化输入和输出C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构C语言不提供输入和输出语句,输入和输出通过调用C的标准库函数来实现。C的标准函数库中提供许多用于标准输入和输出的库函数(附录D),使用这些标准输入和输出库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文件中。在调用标准输入输出库函数时,文件开头应有以下预编译命令:#include或#include“stdio.

16、h”其中,h为head之意,std为standard之意,i为input之意,o为output之意。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构3.3.1字符的输入和输出l计算机的控制台是键盘和显示器,从控制台输入和输出字符的最简单的函数是getchar()和putchar()。1 1getchargetchar函数函数使用格式使用格式:变量:变量getchar( );功功能能:从从键键盘盘读读入入一一个个字字符符,返返回回该该字字符符的的ASCII值值,可可以以将将该该结结果果赋赋值值给给字字符符变变量量或或整整型型变变量量,并并自自动动将将用

17、用户户击击键键结结果果回回显到屏幕上。显到屏幕上。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构2putchar函数使用格式:putchar(变量);功能:把字符写到屏幕的当前光标位置。例例3.1演示如何使用演示如何使用getchar()和和putchar()函数。函数。#include main( ) char c; c=getchar( ); /*从键盘读入一个字符,按回车从键盘读入一个字符,按回车键结束输入,该字符被存入变量键结束输入,该字符被存入变量c*/ putchar(c); C C程序设计课件程序设计课件_ _第第3 3章章C C语言

18、程序的控制结构语言程序的控制结构getchar函数无参数,它从标准输入设备(键盘)上读入一个字符,直到输入回车键才结束,回车前的所有输入字符都会逐个显示在屏幕上。函数值为从输入设备输入的第1个字符,空格、回车和Tab都能被读入。putchar函数的参数是待输出的字符,这个字符可以是可打印字符,也可以是转义字符。例如:putchar(x42);/*输出字母B*/putchar(0x42);/*直接用ASCII码值输出字母B*/注意注意C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构3.3.2格式化输入和输出l前面的getchar和putchar函数形式

19、简单,使用方便,但只能输入输出一个字符,且不能定制输入输出格式。格式化输入输出函数既能输入输出各种类型的数据,又能定制输入输出格式。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构例3.2从屏幕上输出一个整数。#includemain()inta,b;a=10;b=20;printf(outputaandb:);/*输出双引号中的字符串*/printf(a=%d,b=%dn,a,b);/*输出a和b的值*/输出结果是:输出结果是:output a and b:a=10,b=20C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构

20、语言程序的控制结构1printf函数l格式:printf(格式控制字符串);或printf(格式控制字符串,输出表列);l功能:向计算机系统默认的输出设备输出若干个任意类型的数据。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构例如:格式转换说明符例如:格式转换说明符printf(a=%d ,b=%dn,a,b);普通字符输出表列普通字符输出表列一般情况下,格式控制字符串包括两种数据,一种是一般情况下,格式控制字符串包括两种数据,一种是普通字符,这些字符在输出时照原样输出;另一种是普通字符,这些字符在输出时照原样输出;另一种是格式转换说明符,用于控制

21、要输出的内容以何种方式格式转换说明符,用于控制要输出的内容以何种方式进行输出显示,格式转换说明符由进行输出显示,格式转换说明符由“%”“%”开始,并以一个开始,并以一个格式字符结束。格式字符结束。 C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构表31printf函数的格式转换说明符C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构说明:“输出表列”是需要输出的一些数据。可以是表达式,各个数据之间用逗号隔开。以下的printf函数都是合法的:printf(Iamastudent.n);printf(%d,3+

22、2);注意:输出数据的数据类型与格式转换说明符必须顺序匹配,否则会引起输出错误。如:printf(%d,%f,3.89,6);错误!一般情况下,格式转换说明符与输出项个数相同。如果格式转换说明符的个数大于输出项的个数,则多余的格式将输出不定值。如果格式转换说明符的个数小于输出项的个数,则多余的输出项不输出。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构例3.3有以下程序#includemain()inta666,b=888;printf(%dn,a,b);程序的输出结果是()。A)错误信息B)666C)888D)666,888思考:如果将输出思考:

23、如果将输出语句改为语句改为 printf(“ %d,%dn”, a); 输输出结果会怎样?出结果会怎样?C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构格式转换说明符的完整形式如下:%-0m.nl或h格式字符C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构例3.4printf函数修饰符的使用。#include main() int a=123; float y=456.78; char ch=A; char s=Programing; /*s为字符数组为字符数组*/ printf(%7d,%-4d,%04d

24、n,a,a,a); printf(%f,%8f,%8.1f,%.2f,%.2en,y,y,y,y,y); printf(%3cn,ch); printf(%sn%12sn%8.5sn%2.5sn%.3sn,s,s,s,s,s); C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构程序输出结果说明:在说明:在Visual C+中,调用中,调用printf函数时,函数时,float类型类型的参数是先转化为的参数是先转化为double类型再传递的,所以类型再传递的,所以%f可以可以输出输出float和和double两种类型的数据,不必用两种类型的数据,不必用

25、%lf输出输出double类型的数据。类型的数据。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构2scanf函数格式:scanf(格式控制字符串,地址表列);功能:从标准输入设备(键盘)输入若干个任意类型的数据。例如:例如:scanf(%d,%f”, &a,&b); 地址表列地址表列格式控制字符串格式控制字符串 分隔符分隔符C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构表33scanf函数的格式转换说明符C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构地址表列

26、是由若干变量的地址组成的列表,参数之间用逗号隔开。函数scanf要求必须指定用来接收数据的地址,否则,虽然编译程序不会出错,但会导致数据不能正确地读入指定的内存单元。对普通变量而言,可以在变量前使用“”符号,用于取变量的地址,而对于指针变量而言,直接使用指针变量名称即可。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构表34scanf函数的修饰符注:注:scanf函数没有精度函数没有精度.n修饰符,即用修饰符,即用scanf函数输函数输入实型数据时不能规定精度。入实型数据时不能规定精度。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序

27、的控制结构语言程序的控制结构输入数据的分隔符的指定:一般以空格、TAB或回车符作为分隔符(在格式控制符之间为空格、TAB或无任何符号时);其他字符作为分隔符:格式控制字符串中两个格式控制符之间的字符为上述三种字符以外的字符时,输入数据时要原样输入。例如,输入语句“scanf(“%d,%d”,&a,&b);”,要想在输入数据后使a=3,b=4,则应输入“3,4”。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构例3.5格式输入输出的使用。#includemain()inta,b,k;floats,f;charc1,c2,m10;scanf(%d,%d,

28、%f,%s,&a,&b,&s,m);/*m是数组名,表示地址*/scanf(%3d%*4d%f,&k,&f);scanf(%*c%3c%2c,&c1,&c2);printf(a=%d,b=%d,s=%f,m=%sn,a,b,s,m);printf(k=%d,f=%f,c1=%c,c2=%cn,k,f,c1,c2);C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构程序运行时的输入输出结果C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构注意从键盘输入数据的个数应该与函数中输入表列的项数相同,当两者不相同时作如下

29、处理:如果输入数据个数少于scanf函数要求的个数时,函数将等待输入,直到满足要求或遇到非法字符为止。如果输入数据个数多于scanf函数要求的个数时,多余的数据将留在缓冲区作为下一次输入操作的输入数据。在输入数据时,遇到以下情况时认为该数据结束。l遇到空格,或按回车键或按TAB键;l按指定的宽度结束,如“%3d”,只取3列;l遇到非法输入。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构3.4顺序程序控制结构l顺序结构是结构化程序设计的三种基本结构中最简单的一种程序组织结构,其特点是完全按照语句出现的先后顺序依次执行。BAAB(a)传统流程图)传统流

30、程图 (b)NS流程图流程图 程序自上而下执行,先执行程序自上而下执行,先执行A A块,再执行块,再执行B B块。块。 C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构顺序结构的程序主要由4部分组成:变量说明部分。数据输入部分。运算部分。运算结果输出部分。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构例3.6将任意小写字母转换为对应的大写字母并输出。#includemain()charc;c=getchar();c=c-32;putchar(c);程序运行时,若输入:程序运行时,若输入:h 则输出:则输出

31、:H思考:如何判断输入的字符思考:如何判断输入的字符是否为小写字母?(将在是否为小写字母?(将在3.5中讲解)中讲解)C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构例3.7从键盘输入两个变量的值,交换这两个变量的值,并输出。l分析:假如我们将输入的两个变量定义为x和y,如果通过“x=y;y=x;”来实现交换,则当执行“x=y;”时,将y的值复制给x,此时x和y的值相等,x原来的值丢失,再执行“y=x;”时,将新的x值复制给y,结果x和y的值相等,都为原来y的值。为了不使x原来的值丢失,必须在执行“x=y;”之前,先把x的值放到一个临时变量(temp

32、)中保存起来,在执行了“x=y;后”,再把保存在临时变量中的值赋给y(通过“y=temp;”来实现)。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构程序代码:#includemain()intx,y,temp;scanf(%d,%d,&x,&y);printf(Beforechange:x=%dy=%dn,x,y);temp=x;x=y;y=temp;printf(afterchange:x=%dy=%dn,x,y);思考:如果不用临时变量,能否使两个变量得到交思考:如果不用临时变量,能否使两个变量得到交换呢?换呢?C C程序设计课件程序设计课件_

33、 _第第3 3章章C C语言程序的控制结构语言程序的控制结构例3.8从键盘任意输入一个三位数,要求输出这个数的逆序数。如:输入123,输出321。l分析:要输出逆序数,则要将原数的个位、十位和百位数分离出来,再用“个位*100+十位*10+百位”求出逆序数。个位数字可用对10求余得到,如123%103;最高位百位数字可用对100整除得到,如123/1001;中间位的数字既可通过将其变换为最高位再整除的方法得到,如(1231*100)/102;也可通过将其变换为最低位再求余得到,如(123/10)%10=2。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制

34、结构程序源代码如下:#includemain()intx,y,b0,b1,b2;/*变量声明*/printf(Pleaseenteranintegerx:);/*提示用户输入一个整数*/scanf(%d,&x);/*输入一个整数*/b0=x%10;/*求最低位*/b1=(x/10)%10;/*求中间位*/b2=x/100;/*求最高位*/y=b0*100+b1*10+b2;/*求逆序数*/printf(y=%dn,y);/*输出逆序数*/C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构程序的运行结果如下:Pleaseenteranintegerx:1

35、23y=321思考:是否还有其他方法分离个位、十位和百位数?思考:是否还有其他方法分离个位、十位和百位数?C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构3.5选择程序控制结构l对于要先做判断再选择的问题就要使用选择结构(也称为分支结构)。选择结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。如:在数学中,要计算如:在数学中,要计算x x的绝对值,根据绝对值定义,的绝对值,根据绝对值定义,当当x=0x=0时,其绝对值为时,其绝对值为x x,而,而x0x0时其绝对值是为时其绝对值是为-x-x。 选择结构分支条件通常用关系表达式或

36、逻辑表达式来表示,实选择结构分支条件通常用关系表达式或逻辑表达式来表示,实现程序流程的语句由现程序流程的语句由C C语言的语言的ifif语句或语句或switchswitch语句来完成语句来完成 C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构图图38 选择结构流程图选择结构流程图图图3 38 8表示,当条件表示,当条件P P为真(成立)时执行为真(成立)时执行A A框,否则框,否则执行执行B B框。无论框。无论P P是否成立,只能执行是否成立,只能执行A A框或框或B B框之一,框之一,不可能既执行不可能既执行A A框又执行框又执行B B框。无论走哪

37、条路径,在执框。无论走哪条路径,在执行行A A框或框或B B框之后,都脱离本选择结构。框之后,都脱离本选择结构。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构3.5.1if语句1单分支结构2双分支结构3多分支结构C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构1单分支结构if形式:if(表达式)语句S图图39单分支结构的流程图单分支结构的流程图C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构l执行过程:系统首先计算表达式的值,如果表达式结果不为0,则执行语句S,

38、否则跳过语句S,继续执行其后的其他语句。说明:说明:“if”“if”是是C C语言的关键字;语言的关键字;“表达式表达式”可以任意合法的可以任意合法的C C语言表达式,可以是关系表达式或逻辑表达式,也可语言表达式,可以是关系表达式或逻辑表达式,也可以是任意的数值类型(包括整型、实型、字符型等);以是任意的数值类型(包括整型、实型、字符型等);表达式两侧的括号不能省略。表达式两侧的括号不能省略。语句语句S S可以是一条语句,也可以是任意合法的复合可以是一条语句,也可以是任意合法的复合语句,其位置比较灵活,可以直接出现在语句,其位置比较灵活,可以直接出现在ifif同一行的后同一行的后面,也可以出现

39、在面,也可以出现在ifif的下一行。的下一行。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构例3.9写出以下程序执行后的输出结果#includemain()inta=4,b=3,c=5,t=0;if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;printf(%d%d%dn,a,b,c);输出结果为:输出结果为:5 0 3 C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构l分析:程序第一行在定义a、b、c、t四个变量的同时进行了初始化。接下来第一个if语句的表达式ab为假(0),if其

40、后的语句“t=a;”不执行,值得注意的是“a=b;b=t;”不属于if的语句,将被执行,执行后a值为3,b值为0;然后第二个if语句的表达式ac为真,则执行语句“t=a;”,t值变为3,接着执行“a=c;”,a值变为5,再接着执行“c=t;”,c值变为3;因此,输出结果为:503。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构例3.10计算并输出一个整数的绝对值。分析:计算一个整数的绝对值的关键就是判断该数是否小于0。#include main()int x,y;scanf(%d,&x); /*输入一个整数输入一个整数*/y=x; /*x大于等于大

41、于等于0时时,y=x*/if(x0)y=-x; /*若若xb) max =a;else max=b;将例将例3.10用双分支结构实现,程序代码如下:用双分支结构实现,程序代码如下:#include main() int x,y; scanf(%d,&x); /*输入一个整数输入一个整数*/ if(x0) y=-x; /*若若x0成立成立,y=-x,否则否则y=x*/ else y=x; printf(y=%dn,y);C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构例3.11从键盘读入一个字符,以与原来不同的形式进行输出。l分析:该题的意图是实现英文

42、字符的输入输出,所谓与与原来不同的形式是指原来输入的是小写字母,则转换为对应的大写字母并输出;原来输入的是大写字母则转换为对应的小写字母并输出。程序实现的步骤是:程序实现的步骤是:从键盘输入一个英文字符;从键盘输入一个英文字符;判断该英文字符的大小写,并转换成对应的字母;判断该英文字符的大小写,并转换成对应的字母;输出转换后的英文字符。输出转换后的英文字符。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构l该题的关键问题是怎样将判断字符的大小写状态和实现转换。有两种方式实现:一种是根据ASCII码进行判断和转换,小写字母比对应的大写字母的ASCII码

43、大32。另一种方式是利用字符处理函数isupper(ch)判断ch是否为大写字母,是则返回1,否则返回0;islower(ch)函数判断ch是否为小写字母,是则返回1,否则返回0;toupper(ch)函数将ch转换为大写,tolower(ch)函数将ch转换为小写。注意,使用这四个函数需要包含头文件ctype.h。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构用第一种方式实现的程序如下:#includemain()charch;ch=getchar();/*从键盘输入一个英文字符*/if(ch=a&ch=z)/*判断ch是否为小写字母*/ch=c

44、h-32;/*ch为小写字母,将其转换为大写*/elsech=ch+32;/*ch为大写字母,将其转换为小写*/putchar(ch);/*输出ch*/C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构运行时,输入:a输出:A思考:用字符处理函数怎样实现程序?思考:用字符处理函数怎样实现程序?C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构3多分支结构if-else-if形式:if(表达式1)语句S1elseif(表达式2)语句S2elseif(表达式n)语句Snelse语句Sn+1C C程序设计课件程序设计

45、课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构图图3 311 11 双分支结构的流程图双分支结构的流程图C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构l执行过程:if-else-if结构实际上是由多个if-else结构组合而成的,系统首先计算表达式1,其值为真(不为0)时,执行语句S1;否则,计算表达式2,其值为真(不为0)时,执行语句S2;如果if后的所有表达式都不为真,则执行语句Sn+1,并结束整个分支结构。选择结构执行完成后继续执行

46、其后的其他语句。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构例3.12从键盘输入x的值,并通过如下的数学关系式求出相应的y值。分析:该题的意图是根据输入的分析:该题的意图是根据输入的x值,判断值,判断x所属的所属的区间,求出区间,求出y值并输出。程序实现的步骤是:值并输出。程序实现的步骤是:从键盘输入一个数;从键盘输入一个数;判断判断x所属的区间,求出所属的区间,求出y值;值;输出结果。输出结果。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构#includemain()intx,y;scanf(%d,

47、&x);if(x0)y=-1;elseif(x=0)y=0;elsey=1;printf(y=%dn,y);注意:在表示相等条注意:在表示相等条件时,必须用件时,必须用“=”,不能用不能用“” ” C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构例3.13根据输入的成绩等级打印出评语,等级与评语的对应关系如下表:分析:该题通过输入成绩的分析:该题通过输入成绩的等级(等级(0 04 4级),转换为对级),转换为对应的评语,是典型的多分支应的评语,是典型的多分支结构,可以用结构,可以用if-else-ifif-else-if结结构实现。具体实现步骤为:构

48、实现。具体实现步骤为:输入成绩等级的数字;输入成绩等级的数字;对输入的数字进行判断,对输入的数字进行判断,得到对应的评语;得到对应的评语;输出结果。输出结果。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构#includemain()intgrade;printf(Pleaseinputgrade:);scanf(%d,&grade);if(grade=4)printf(Excellent);elseif(grade=3)printf(Good);elseif(grade=2)printf(Average);elseif(grade=1)printf

49、(Poor);elseif(grade=0)printf(Failing);elseprintf(Illegalgrade);C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构4if语句的嵌套if语句的嵌套是指if或else子句中又包含一个或多个if语句。内层的if语句既可以嵌套在if子句中,也可以嵌套在else子句中。内嵌内嵌if语句的一般形式如下:语句的一般形式如下:ifif(表达式(表达式1 1) ifif(表达式(表达式2 2)语句)语句1 1 else else 语句语句2 2else else if(if(表达式表达式3) 3) 语句语句3

50、 3 else else 语句语句4 4C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构嵌套的if语句的几种变化形式只在if子句中嵌套if语句,形式如下:if(表达式1)if(表达式2)语句1else语句2else语句3C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构只在else子句中嵌套if语句,形式如下:if(表达式1)语句1elseif(表达式2)语句2else语句3C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构不断在else子句中嵌套if语句形成多层嵌套

51、,形式如下:if(表达式1)语句3语句1elseif(表达式n-1)if(表达式2)语句n-1语句2elseelse语句nif(表达式3)C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构可以用if-else-if语句形式表示,看起来层次比较分明。if(表达式1)语句1elseif(表达式2)elseif(表达式n-1)语句2语句n-1elseif(表达式3)else语句3语句nC C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构例3.14从键盘输入三个正整数,找出其中的最大数,并输出这个数。流程图如下:流程图如

52、下:C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构#includemain()inta,b,c,max;scanf(%d%d%d,&a,&b,&c);if(ab)if(ac)max=a;elsemax=c;elseif(bc)max=b;elsemax=c;printf(max=%d,max);C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构注意注意if与else的配对关系。内嵌结构中,else总是与它上面最近的、未配对的if配对,组成一对if-else语句。如果if与else的数目不一样,为了避免在if

53、与else配对时出错,建议读者使用“”来限定内嵌if语句的范围。如下形式的嵌套语句:if(表达式1)if(表达式2)语句1else语句2这里,“”限定了内嵌if语句的范围,因此else与第一个if配对。思考:如果没有思考:如果没有“”,else与哪个与哪个if配对?配对?C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构例3.15设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句if(ab)if(c=d)y=0;elsey=1;该语句所表示的含义是()。A)B)C)D)C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构

54、语言程序的控制结构3.5.2switch语句l当问题的分支较多(一般大于3个),用if-else-if结构解决时由于分支过多,结构冗长,程序逻辑关系不清晰,通常使用开关语句(switch语句)来简化程序设计。开关语句就像多路开关一样,使程序控制流程形成多个分支,根据一个表达式可能产生的不同结果值,选择其中的一个或几个分支语句去执行。因此,它常用于各种分类统计、菜单等程序设计。 C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构switch语句的一般形式switch(表达式)case常量表达式1:语句1;break;case常量表达式2:语句2;brea

55、k;case常量表达式n:语句n;break;default:语句n+1;break;C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构switch结构流程图执行过程:执行过程:计算计算switch后圆括号内表达式的值,然后用该值逐个与后圆括号内表达式的值,然后用该值逐个与case后的常量表达式后的常量表达式值进行比较。当找到相匹配的值时,就执行该值进行比较。当找到相匹配的值时,就执行该case后面的语句。若所有后面的语句。若所有case中中的常量表达式的值都没有与表达式的值匹配的,就执行的常量表达式的值都没有与表达式的值匹配的,就执行default后

56、面的语句。后面的语句。执行完一个执行完一个case后面的语句后,如果遇到后面的语句后,如果遇到break语句,则跳出语句,则跳出switch语句;语句;如果没有如果没有break语句,程序转到下一个语句,程序转到下一个case处继续执行,并不再进行判断。处继续执行,并不再进行判断。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构说明:switch、case、default、break均是关键字。上述格式中花括号括起来的部分称为switch语句体。switch语句体中可以没有break语句和default部分。switch后的表达式可以是整型或字符型,

57、不能为实型。每一个case后面的常量表达式的值必须互不相同,常量表达式中不能有变量。default最多只有一个,位置任意。各个case和default的出现次序不影响执行结果。多个case可以共用一组执行语句。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构例3.16若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是()。A)switch(x)case1.0:printf(“*n”);case2.0:printf(“*n”);B)switch(int)x);case1:printf(“*n”);case2:pri

58、ntf(“*n”);C) switch (a+b) case 1 : printf(“*n”); case 2+1: printf(“*n”); D) switch (a+b) case 1 : printf(“*n”); case c : printf(“*n”); C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构例3.17将例3.13用switch语句实现。#includemain()intgrade;printf(Pleaseinputgrade:);scanf(%d,&grade);switch(grade)case4:printf(Exce

59、llent);break;case3:printf(Good);break;case2:printf(Average);break;case1:printf(Poor);break;case0:printf(Failing);break;default:printf(Illegalgrade);break;思考:如果每个思考:如果每个case语句之后没语句之后没有有break语句,程序运行的输出语句,程序运行的输出结果有何变化?结果有何变化?C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构3.5.3案例研究:个人所得税计算例3.18依法纳税是每个公民

60、应尽的义务,我国于1980年9月颁布施行个人所得税法,开始征收个人所得税,同时确定了个税800元的起征点。25年来,我国职工工资收入和居民消费价格指数都有较大提高,加之近年教育、住房、医疗等改革的深入,消费支出明显增长,早已超过了个人所得税法规定的每月800元的减除费用标准。2005年10月27日第十届全国人民代表大会常务委员会第十八次会议将个人所得税起征点进行了调整,由800元调至1600元。2008年3月开始上调到此标准,目前是月收入超过2000元起征。全月应纳税所得额(月收入减去三险一金)与税率对照表(此表对实际用表作了简化处理)如下表所示。C C程序设计课件程序设计课件_ _第第3 3

61、章章C C语言程序的控制结构语言程序的控制结构C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构算法1:用单分支if语句编程。算法2:用if-else双分支结构在if子句中嵌入if语句的形式编程。算法3:用if-else-if结构,在else子句中嵌入if语句的形式编程。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构说明:由于if或else子句中只允许有一条语句,因此,需要多条语句时必须用复合语句,即把需要执行的多条语句用一对大括号括起来,否则出错。if子句中内嵌if语句时,因为else子句总是与距离它最近

62、的且没有配对的if相结合,而与书写的缩进格式无关,所以如果内嵌的if语句没有else分支,即不是完整的if-else形式时,极易发生配对错误。为了避免这类错误的发生,有两种有效方法:一是将if子句的内嵌if语句用一对大括号括起来,如上例算法2程序;二是尽量采用在else子句中内嵌if语句的形式编程,如上例中算法3程序。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构程序测试l对程序所有的5个分支的情况分别进行测试,检验程序中的每条路径是否都能按预定要求正确工作,这种测试方式称为白盒测试。测试中所用的数据称为测试用例。选取测试用例的原则是:尽量让测试数据覆盖程序的每条语句、每个分支和每个判断条件。C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构C C程序设计课件程序设计课件_ _第第3 3章章C C语言程序的控制结构语言程序的控制结构

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号