首页 理论教育C语言双分支程序设计技巧

C语言双分支程序设计技巧

【摘要】:双分支if语句的执行过程如图3.5所示。任意输入3个整数,求出它们中的最大值。从键盘上输入一个英文字母,若输入的是大写字母则转换为小写字母输出;若输入的是小写字母则转换为大写字母输出。

双分支选择if语句的结构形式为:

语句的执行过程为:首先计算作为条件的表达式(exp)值;然后对计算出的表达式值进行逻辑判断,若表达式值不为0(逻辑真),则执行结构中的语句(sentence1)后执行if结构的后续语句;若表达式值为0(逻辑假),则执行结构中的语句(sentence2)后执行if结构的后续语句。双分支if语句的执行过程如图3.5所示。

与使用if语句类似,使用if…else语句实现双分支结构程序时也需要注意下面两点:

图3.5 if语句的执行流程

①作为条件的表达式可以是任何能够求出0值或非0值的表达式。

②if结构或else结构后语句部分都可以是C语言的任何合法语句。

【例3.4】 任意输入3个整数,求出它们中的最大值。

对应简单的双分支if语句,C语言中提供了一个特殊的条件运算符(?:)。条件运算符是C语言中唯一的一个三元运算符,使用条件运算符构成的条件表达式形式如下:

exp1?exp2:exp3

条件表达式的执行过程是:首先计算表达式exp1的值,若exp1的值为非0(真),则计算出表达式exp2的值作为整个条件表达式的值;若exp1的值为0(假),则计算出表达式exp3的值作为整个条件表达式的值。

例如,下面两种语句结构表示了相同的功能:(www.chuimin.cn)

条件运算符的优先级别高于赋值运算符但低于关系运算符和算术运算符,结合性为右结合。例如,条件表达式a>b?a:c>d?c:d相当于a>b?a:(c>d?c:d)。

【例3.5】 从键盘上输入一个英文字母,若输入的是大写字母则转换为小写字母输出;若输入的是小写字母则转换为大写字母输出。

上面程序中,表达式'a'-'A'计算的是小写英语字母'a'和对应大写英文字母'A'之间的差距(ASCII码值的差距),即97-65。在ASCII表中,任意一对大小写英文字母之间的差距都是相同的,可以表达为'a'-'A',或者直接用整数32表示。当大写字母转换为对应小写字母时,仅需将其值加32;当小写字母转换为对应大写字母时,仅需将其值减32。例如,上面程序中用于转换字母的语句也可以写为:

ch=ch>='A'&&ch<='Z'?ch+32:ch-32;