文档详情

第五章 选择结构的程序设计.docx

发布:2023-12-07约1.53万字共16页下载文档
文本预览下载声明

第五章选择结构的程序设计

第四章介绍的语句可以设计顺序结构程序,执行时,程序中的语句按其先后顺序执行。但实际问题并不这样简单。

例4-3中,一元二次方程ax2+bx+c=0的求解没有考虑b2-4ac0的情况。若b2-4ac≥0,方程有两个实根;若b2-4ac0,方程有两个复根,其实部和虚部分开计算。所以,方程求根要根据b2-4ac≥0是否成立而分别采用不同的计算方法。又如求x的绝对值,若x≥0,则x即为所求;若x0,则-x为x的绝对值。

根据某种条件的成立与否而采用不同的程序段进行处理的程序结构称为选择结构。通常选择结构有两个分支,条件为真,执行甲程序段,否则执行乙程序段。有时,两个分支还不能完全描述实际问题。例如,判断学生成绩属于哪个等级(A:90---100,B:80---89,C:60---79,D:0---59)根据学生的成绩的条件,分成4个分支,分别处理各等级分情况。例如,A级分的学生可获奖学金等。这样的程序结构称为多分支选择结构。

本章将介绍几个语句来实现选择结构程序设计。

上一

页 下一页

用if语句设计选择结构程序

C语言中的if语句有两种形式:简单if语句和if_else语句。

简单if语句

简单if语句形式:if(表达式)语句1

功能:计算表达式的值,若为真,则执行语句1;否则将跳过语句1执行if语句的下一条语句。如图5-1所示。

说明:括号中的表达式表示控制条件,表达式的值非零为真,零为假。语句1从语法上应是一条语句,若需要在此执行多条语句,必须用大括号将它们括起来,构成复合语句,这样,语法上它仍然是一条语句。

例5-1:求给定整数的绝对值。

求x绝对值的算法很简单,若x≥0,则x即为所求;若x0,则-x为x的绝对值。如图5-2所示。程序中首先定义整型变量x和y,其中y存放x的绝对值。输入x的值之后,执行y=x;语句,即先假

定x≥0,然后再判断x是否小于0,若x0,则x的绝对值为-x,将-x赋给y(y中原来的x值被冲掉了)

后输出结果。若x≥0,则跳过y=-x;语句,直接输出结果。此时y中的值仍然是原x的值。#includestdio.h

main()

{intx,y;scanf(%d,x);y=x;

if(x0)y=-x;

printf(x=%d,|x|=%d\n,x,y);

}

运行程序:输入:-5↙

输出:x=-5,|x|=5

例5-2:求4个数中的偶数之和。

#includestdio.hmain()

{inta,b,c,d,s;

printf(Pleaseinputa,b,c,d:\n);

scanf(%d,%d,%d,%d,a,b,c,d);s=0;/*存放和的变量先置初值0*/

if(a%2==0)s=s+a;/*能被2整除是偶数,依次检查各变量并将偶数累加到s中*/

if(b%2==0)s=s+b;if(c%2==0)s=s+c;if(d%2==0)s=s+d;

printf(a=%d,b=%d,c=%d,d=%d\n,a,b,c,d);printf(s=%d\n,s);

}

运行程序:

Pleaseinputa,b,c,d:

输入:12,35,6,11↙输出:a=12,b=35,c=6,d=11s=18

令变量s(存放和值)的初值为0,注意,这一步骤不能省略,否则不能保证s的初值为0。在累加之前,若s的初值不为0,则最终的和值中含有s的非0初值,得到错误结果。

求n个数的和可以采用两种算法:(以n=4为例)

①s=a+b+c+d

②s=0;

s=s+a;s=s+b;s=s+c;s=s+d;

第一种方法虽然简单明了,但有明显不足。在本例中,要求累加4个数中的偶数,第一种方法不能进行条件的判断,无法采用;又如,当n很大时,不可能把n个数依次写出。而第二种方法中,累加是分开执行的,因此可以在累加前进行条件的判断;在后续章节中可以看到,第二种方法结合循环和数组就可以解决n很大的求和问题。

上一页 下一页

用switch语句设计多分支结构程序

例5-8中已经遇到多分支选择结构,虽然用嵌套if语句也能实现多分支结构程序,但分支较多时显得很繁琐,可读性较差。C语言中,switch语句专用于实现多分支结构程序,其特点是各分支清晰而直观。

switc语h句switch语句调用形式:switch(表达式)

显示全部
相似文档