c语⾔中选择结构的作⽤,C语⾔中选择结构的使⽤探讨
摘要:C语⾔作为学⽣学习计算机程序设计语⾔的⼊门语⾔,对于顺序、循环和分⽀结构的学习和掌握是⾮常重要的。选择结构作为C语⾔中常⽤的⼀种基本结构,学⽣在进⾏学习时往往会困惑于怎样使⽤选择结构、如何表达实际问题中的条件等。该⽂主要讲解了选择结构中的if语句和switch语句的使⽤条件以及他们之间不同的执⾏过程,并通过实例讲解了他们之间的区别和联系。
关键词:选择结构;表达式;顺序执⾏;流程图;算法设计
1选择结构的地位和作⽤
选择结构适⽤于某个操作需要满⾜⼀定的前提条件的情况,在现实⽣活中,需要进⾏判断和选择的情况是很多的。选择结构作为程序设计中基本且重要的⼀种结构被⼴泛使⽤,任何⼀门计算机语⾔都会使⽤到选择结构。但是由于学⽣学习时的认知背景以及在讲解选择结构时的案例选择等⽅⾯的因素,使得学⽣在学习这部分内容时往往缺乏深⼊的理解和思考,导致在遇到实际问题时出现困惑、不知道如何使⽤选择结构来解决实际中遇到的问题。
作为结构化程序设计中三种基本结构其中之⼀,选择结构既不像顺序结构那样规则简单,也不像循环结构那样涉及循环变量的改变和循环体的设计,它是⼀种相对循序结构更为简单、相对顺序结构较为复杂
的、在解决问题的过程中较为常见的⼀种结构。因此,学⽣需要对这种结构进⾏较为深⼊的理解才能在实际使⽤中灵活应⽤、得⼼应⼿。
使⽤计算机语⾔在表⽰算法过程时要与接近⾃然语⾔的含义表达⼀致,使得语句简洁、表达语义充分,选择结构也不例外。因此在使⽤选择结构的时候,要尽可能地使得每条语句有具体的使⽤背景和含义,有其背后的理论依据。
本⽂以C语⾔作为基本语⾔来讲解选择结构的适⽤条件以及if语句与switch语句的⽐较和使⽤问题。
2选择结构的使⽤
选择结构有两种基本的实现形式:if语句和switch语句。if语句常⽤于实现两个分⽀的选择结构,switch语句常⽤于多个分⽀的选择结构。其中,if语句的基本形式如下:
if(表达式)语句1;
【else语句2;】
其中,表达式就是⼀种判断,if语句的执⾏顺序是先判断表达式是否成⽴,若表达式成⽴,则执⾏语句1,否则执⾏else后⾯的语句2并结束if语句的执⾏。表⽰else部分根据需要可以有也可以没有,表达式的判断⼀般是关系表达式(也就是⽐较⼤⼩的表达式),也可
以是逻辑表达式或算术表达式等。
switch语句注意事项:switch后⾯圆括号中的表达式的类型,在Visual C++6.0中只允许为整型、字符型或枚举类型。case后⾯常量表达式的值必须互不相等,其类型应该与switch后⾯表达式的类型相容。case和常量表达式之间要有空格。case和default可以出现在任何位置,习惯上将default放在switch结构的底部。每个case语句的结尾不要忘了加break,否则将导致多个分⽀重叠;多个case可以执⾏同⼀语句序列,只在最后⼀个case结束的地⽅加⼀个break。不要忘记最后的de-fault分⽀,即使程序真的不需要default处理,也应该保留语句:default:break;以防程序中出现异常表达式。
switch语句的执⾏过程和if语句不同,在执⾏switch语句时,直接执⾏表达式与case后⾯的标号相同的标签处,顺序执⾏switch语句中的语句,直到遇到break语句才结束switch语句的执⾏。
3选择结构应⽤举例
在使⽤选择结构的时候主要是对涉及表达式中的变量进⾏处理。对于switch语句中的表达式⽐较常⽤的就是整型类型,这⾥主要以整型类型为例进⾏讲解。在具体使⽤的时候也主要是对表达式中的变量进⾏设置初值和处理。对于表达式的使⽤,if语句和switch有⽐较明显的区别,if语句在使⽤表达式的时候,使⽤关系表达式判断变量处于某个区间的情况⽐较多,⽐如对于5
if(x>5&&x流程图转换为ns图
⽽switch语句不能直接对区间进⾏判断,它主要是对某些固定的整数进⾏判断⽐如对于5
下⾯以⼀个实例来说明if语句与switch语句在具体使⽤时候的区别和联系。
要求输⼊⼀个整数n,判断它能否被2、3、5整除,并输出能否被其中的⼀个或多个整除。
该问题可以通过选择结构来解决,具体的,既可以通过if语句来解决,⼜可以通过switch语句来解决。通过分析,可知对于⼀个整数能否被2、3、5整除,⼀共分为8种情况(因为对于每⼀个相除的结果都有能够整除和不能整除两种情况,所以⼀共有2^3=8种结果)。通过if语句解决该问题的流程图如图1。
相⽐if语句的简洁易懂,switch语句在使⽤的时候不太直观,但其执⾏效率更⾼,对于具有多个分⽀的情况,使⽤switch语句往往能够提⾼程序的执⾏效率。对于该问题的解决,在使⽤switch语句时,其中的结果表达式需要经过处理,因为switch中的结果表达式只能表⽰为具体的某个整数,也就是需要将结果表达式的数据表⽰为某⼏个具体的整数。通过switch语句来解决这个问题,需要将8种结果转换为具体的数值来进⾏解决,由于每种情况只有两种状态,所以我们可以使⽤3位的⼆进制来表⽰每种情况,即:000、001、010,、011、100、101、110、111,⼆进制中的每⼀位对应能否被2、3、5是否整除的结果,结果为0表⽰能够整除,否则不能整除。由于每个⼆进制数都对应⼀个⼗进制数,我们在表⽰数据的时候通常都使⽤⼗进制数来表⽰,所以在处理数据的时候需要将这些⼆进制数据处理成⼗进制数进⾏处理,得到的⼗进制数分别为0、1、2、3、4、5、6、7。在处理n对2、3、5求余数的时
候,只需要将对应⼆进制位置处理为0或者1即可。由于不同的位置所对应的位权不同,所以可以将对n对2求余的结果处理成0、1;n对3求余的结果处理成0、2;n对5求余的结果处理成0、4,通过这个处理后,将3个处理结果相加就得到了对应每种情况的⼀整数,然后对每⼀种整数情况进⾏对应的处理即可。
通过switch语句解决该问题的流程图如下:
对于该问题的处理,还可以写出通过if的嵌套结构实现的算法或者通过switch的嵌套结构实现的算法,⽐较⽽⾔,上述给出的通过switch语句给出的算法是更为简单和简洁的算法设计过程,这⾥对于其他的算法过程不再详细说明。
4结论
If语句多⽤于变量区间的判断(⽐如a>=5,a
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论