if else语句C语言if else用法完全攻略.docx

上传人:b****6 文档编号:5255544 上传时间:2022-12-14 格式:DOCX 页数:9 大小:77.92KB
下载 相关 举报
if else语句C语言if else用法完全攻略.docx_第1页
第1页 / 共9页
if else语句C语言if else用法完全攻略.docx_第2页
第2页 / 共9页
if else语句C语言if else用法完全攻略.docx_第3页
第3页 / 共9页
if else语句C语言if else用法完全攻略.docx_第4页
第4页 / 共9页
if else语句C语言if else用法完全攻略.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

if else语句C语言if else用法完全攻略.docx

《if else语句C语言if else用法完全攻略.docx》由会员分享,可在线阅读,更多相关《if else语句C语言if else用法完全攻略.docx(9页珍藏版)》请在冰豆网上搜索。

if else语句C语言if else用法完全攻略.docx

ifelse语句C语言ifelse用法完全攻略

ifelse语句,C语言ifelse用法完全攻略

生活中的很多事情都是在满足一定条件下发生的,同样,程序中的“某操作语句”也是在满足一定逻辑条件下才执行的,这种语句称作条件语句,或称为“if语句”。

使用if关键字,该“某操作语句”称为“if体”或“条件语句体”。

显然,if语句是一种分支结构,当条件满足时,有“执行该操作语句”和“跳过执行该操作语句”的两条分支。

if语句的格式如下。

当if体中的语句多于一条时,要用 {} 把这些语句括起来形成一条复合语句,如下所示。

if(条件表达式)

{

  复合语句A;

}

当if体为一条简单语句时,可以省略{},即:

if(条件表达式)

  简单语句A;//if体

该条件表达式可以是关系表达式、逻辑表达式、算术表达式或混合表达式等。

只要其值为真或非零均执行if体。

例如:

if(a>6)//关系表达式,当a>6时表达式值为真,执行if体

   Statement(s);

if(a||b)//逻辑表达式,只要a、b中有一个为真,结果为真,执行if体

   Statement(s);

if(3-6)//算术表达式,只要该表达式的值非0,结果为真,执行if体

   Statement(s);

/*关系、逻辑混合表达式,只要age>=60或age<=10其中一项为真,结果为真,执行if体*/

if(age>=60||age<=10)

  Statement(s);

if语句的执行流程:

首先判断关键词if后括号内条件表达式的值,如果该表达式的值为逻辑真(非0),则执行if体,接着执行if体后的其他语句;否则,若该表达式的值为逻辑假(0),则不执行该if体,直接执行if体后的其他语句。

if语句的执行流程图如图1所示。

由图可见,if语句有两条执行分支。

图1

 

if分支结构通常用在:

在数据有默认值或事件有默认操作的前提下,对特殊情况进行特殊处理的场景。

【例1】一公园门票正常价格是80元,老人(>60岁)或儿童(<10岁)门票半价。

输出每个游客的年龄和门票价格。

本题属于票价有默认值,针对特殊群体(老人或儿童)对票价做特殊处理的情况,故可用if结构。

1)定义整型变量age表示年龄,price表示票价,并初始为默认票价80元。

2)输入游客年龄,并进行判断,老人(age>60)、儿童(age<10),两者是逻辑“或”的关系,即:

age>60||age<10。

老人及儿童票价的特殊处理代码如下。

1.if(age>=60||age<=10)

2.price/=2;

3)输出年龄及票价。

参考代码:

1.#include

2.intmain(void)

3.{

4.intage,price=80;

5.printf("请输入您的年龄:

");

6.scanf("%d",&age);

7.if(age>=60||age<=10)

8.price/=2;

9.printf("您的年龄:

%d,票价:

%d\n",age,price);

10.return0;

11.}

【运行结果1】游客年龄35岁,运行结果如下:

请输入您的年龄:

35

您的年龄:

35,票价:

80

【运行结果2】游客年龄6岁,运行结果如下:

请输入您的年龄:

6

您的年龄:

6,票价:

40

【运行结果3】游客年龄72岁,运行结果如下:

请输人您的年龄:

72

您的年龄:

72,票翁:

40

if-else语句

if-else语句的格式如下。

当if语句体或else语句体中的语句多于一条时,要用 {} 把这些语句括起来形成一条复合语句,如下所示。

if(条件表达式)

{

   复合语句A;//if体

}

else

{

   复合语句B;//else体

}

当if体或else体为一条简单语句时,可以省略{},即:

if(条件表达式)

   简单语句A;//if体

else

   简单语句B;//else体

同if语句一样,条件表达式可以是关系表达式、逻辑表达式、算术表达式或混合表达式等。

if-else语句的执行流程:

首先判断关键词if后括号内条件表达式的值,如果该表达式的值为逻辑真(非0),则执行if体(语句A),而不执行else体(语句B),然后继续执行if-else之后的其他语句;否则,若该表达式的值为逻辑假(0),则不执行该if体(语句A),而执行else体(语句B),然后继续执行if-else之后的其他语句。

if-else语句的执行流程图如图2所示。

图2

由于表达式的值在逻辑上只有真和假,故if和else在执行流程上是互斥的,执行且只能执行两者中的一个。

【例2】从键盘任意输入一个整数,求其绝对值并输出。

正整数和零的绝对值是其本身,负整数的绝对值是其相反数,所以求绝对值操作可分为该整数是正或负两种情况考虑,故可使用if-else结构实现。

1.#include

2.intmain(void)

3.{

4.intn,abs;

5.printf("请输入一个整数:

");

6.scanf("%d",&n);

7.if(n>=0)

8.abs=n;

9.else

10.abs=-n;

11.printf("%d的绝对值是:

%d\n",n,abs);

12.return0;

13.}

【运行结果1】若输入3回车,输出结果如下:

请输入一个整数:

3

3的绝对值是:

3

【运行结果2】若输入-5回车,输出结果如下:

请输入一个整数:

-5

-5的绝对值是:

5

条件表达式

C语言中提供了一种称为条件运算符或问号运算符的特殊运算符,该运算符是唯一要求三个操作数的运算符,即三目运算符。

该操作符由“问号”和“冒号”两个符号构成,把三个操作数隔开,形成条件表达式。

条件表达式的格式为:

表达式?

语句1:

语句2

条件表达式可实现与if-else语句相似的功能,即可根据表达式的值,选择执行两个操作中的其中一个。

说明:

冒号前后对应于两个互斥的操作:

语句1和语句2。

条件表达式的执行流程与if-else相似:

首先判断表达式的值,如果该值为真,则选择执行操作1;否则,如果表达式的值为逻辑假,则选择执行操作2。

条件表达式的结果参与运算时,如果表达式的值为真,则取操作1的结果作为整个条件表达式的值参与运算;否则,取操作2的结果作为整个条件表达式的值参与运算。

条件表达式与if-else的等价关系如下。

if(表达式)

   语句1;

else

   语句2;

需要注意以下两点:

∙条件运算符?

的优先级高于赋值运算符=的优先级。

∙条件运算符的结合性是从右向左。

【例3】分析以下程序的功能。

1.#include

2.intmain(void){

3.intn,abs;

4.printf("请输入一个整数:

");

5.scanf("%d",&n);

6.(n>=0)?

(abs=n):

(abs=-n);

7.printf("%d的绝对值是:

%d\n",n,abs);

8.return0;

9.}

该程序的功能是:

从键盘输入一个整数,使用条件表达式语句,计算其绝对值,若该整数为非负,则其绝对值为其本身;若该整数为负,则其绝对值为其相反数。

若条件表达式n≥0的值为真,即n非负时,则选择执行操作1,把其本身n赋给abs,即abs=n。

若n≥0为假,即n<0为负数,则选择执行操作2,把n取反后赋给abs,即

 abs=-n。

if语句嵌套

以下情况均属于if结构嵌套。

∙if语句体中可以含有if语句或if-else语句。

∙if-else语句中的if体或者else体中含有if语句或if-else语句。

注意:

1)在嵌套结构中会有多个“if”与多个“else”关键词,每一个“else”都应有对应的“if”相配对。

原则:

“else”与其前面最近的还未配对的“if”相配对。

2)配对的if-else语句可以看成一条简单语句。

3)一条if语句也可以看成一条简单语句。

【例4】分析以下程序的运行结果。

1.#include

2.intmain(void)

3.{

4.intn;

5.printf("InputaInteger:

");

6.scanf("%d",&n);

7.if(n>=0)

8.{

9.if(n>0)

10.printf("%disgreaterthan0\n",n);

11.else

12.printf("%disequalto0\n",n);

13.}

14.else

15.printf("%dislessthan0\n",n);

16.return0;

17.}

1)本题是在if体中嵌入if-else语句。

先分析外层的if-else结构:

1.if(n>=0)

2.{

3.//该if体中包含:

n>0和n=0两种情况

4.}

5.else//该外层else体中只包含n<0的情况

6.printf("%dislessthan0\n",n);

2)分析外层if体中嵌套的if-else结构。

1.if(n>=0)

2.{

3.if(n>0)//显式指出n>0情况

4.printf("%disgreaterthan0\n",n);

5.else

6.printf("%disequalto0\n",n);

7.}

外层if体中包含n>0和n=0两种情况,而嵌套if-else结构中的if体已排除n>0情况,故else体为n=0的情况。

【运行结果1】

InputaInteger:

5

5isgreaterthan0

【运行结果2】

InputaInteger:

0

0isequalto0

【运行结果3】

InputaInteger:

-3

-3islessthan0

级联else-if多分支语句

在程序设计中,经常使用级联的if-else-if实现多路分支结构。

其基本结构如下。

if(条件表达式1)

   语句1;

elseif(条件表达式2)、

   语句2;

...

elseif(条件表达式n)

   语句n;

else

   语句n+1;

该级联的if-else-if多分支结构的执行流程是:

从前往后计算各个表达式的值,如果某个表达式的值为真,则执行对应的语句,并终止整个多分支结构的执行。

如果上述所有表达式均不成立,即均为逻辑假时,则执行对应的else部分。

else部分可以省略,但一般情况下不省略。

该级联的多分支结构并非新的结构类型,而是if-else嵌套结构的变形。

例如,分析如下的代码:

1.if(sc<60)

2.printf("不及格\n");

3.else

4.if(sc<85)

5.printf("合格\n");

6.else

7.printf("优秀\n");

把上述代码中嵌套的if语句与else写在同一行,并去掉所有的缩进,即变成如下形式。

1.if(sc<60)

2.printf("不及格\n");

3.elseif(sc<85)

4.printf("合格\n");

5.else

6.printf("优秀\n");

也就变形成为本节级联的if-else-if多分支结构。

由于该结构中含有else关键字,故后面表达式已隐含排除了前面表达式的逻辑。

因此,在设计该类结构中,应尽量避免不必要的重复包含,否则失去了使用该级联else-if结构实现多分支的意义。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 公务员考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1