第九章条件分支语句中国工商指南.docx

上传人:b****6 文档编号:7075581 上传时间:2023-01-17 格式:DOCX 页数:23 大小:53.33KB
下载 相关 举报
第九章条件分支语句中国工商指南.docx_第1页
第1页 / 共23页
第九章条件分支语句中国工商指南.docx_第2页
第2页 / 共23页
第九章条件分支语句中国工商指南.docx_第3页
第3页 / 共23页
第九章条件分支语句中国工商指南.docx_第4页
第4页 / 共23页
第九章条件分支语句中国工商指南.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

第九章条件分支语句中国工商指南.docx

《第九章条件分支语句中国工商指南.docx》由会员分享,可在线阅读,更多相关《第九章条件分支语句中国工商指南.docx(23页珍藏版)》请在冰豆网上搜索。

第九章条件分支语句中国工商指南.docx

第九章条件分支语句中国工商指南

第九章条件分支语句

9.1if...else语句

9.2if...语句

9.3?

:

表达式

9.4多级if...else...语句

9.5switch语句

"tobeornotbe"?

 

这个问题深深地困扰着哈姆雷特。

他必须在“生存还是毁灭”之间做出一个选择,这是一个困难的选择。

在你的人生中,您曾经面对什么选择?

“学编程还是不学编程”?

“学CB还是学VC”?

选择哪一个,最终总要是要决定,不同的是每个人在作出选择时所要面对的不同条件。

前一章我们讲“顺序流程”就好像长安街一样笔直的,从头走到尾;这一章我们要讲的“条件分支流程”,就像是在道路上遇到了分叉,是直行还是右拐?

全看程序走到分叉时所碰上的条件。

 

9.1if...else 语句

if,中文意思“如果”……

痞子蔡说:

“如果把整个太平洋的水倒出,也浇不熄我对你爱情的火”。

多么充满感情的话!

当然,这一切仅仅是因为你还没有学过编程。

如果你学了编程,学了本章,你就会明白这是一句多么冰凉的条件分支语句,正如它后面的那句所揭示的一切:

“整个太平洋的水全部倒得出吗?

不行。

所以我并不爱你”。

来看看if...else语句在C,C++语言中如何使用。

 

if...else语法格式:

 

if(条件)

{

 分支一

}

else

{

 分支二

}

 

其中,“条件”由表达式如何,典型的如关系表达式(忘了什么叫“关系表达式”?

回头找找讲小情侣遇校监那章)。

“分支一”和“分支二”表示当条件成立时和不成立分别要执行语句。

用一句表达,就是:

如果条件成立(也称条件为真),那么程序执行分支一中的语句,否则(条件为假)程序执行分支二的语句。

这就是if...else语句。

举一生活中的例子:

 

if(我中了这一期体彩的500万大奖)

{

 我买房;

 我买车;

 我去欧洲旅游;

}

else

{

 我要修理自行车;

 我买下一期体彩,

 我继续烧香。

}

 

上面的例子中:

 我买房;

 我买车;

 我去欧洲旅游;

}

 

这是第一个分支,而:

 我要修理自行车;

 我买下一期体彩,

 我继续烧香。

}

 

这是第二个分支。

到底我将执行哪个分支,依赖于条件:

“我中了这一期体彩的500万大奖”是否成立。

在梦中,我经常很开心地执行第一个分支,因为那个条件只能在梦中成立。

 

来一段真实的程序:

 

设a,b,c为已定义的三个int变量,有以下代码片段:

 

if(a>b)

{

 c=1;

}

else

{

 c=0;

}

 

若a值为2,b值为1,那么执行上面代码,c的值将为1;相反,如果a值为1,b值为1,由于条件:

a>b不成立,所以程序将执行else后面一对{}中的代码,结果将是c值为0。

 

用流程图可以直观在表达程序的执行可能的方向。

我们来看if...else...的流程图:

 

箭头表示了程序可能的走向,当遇到条件(菱形)时,根据条件成立的真假,程序将作出选择,是走分支一还是分支二。

但无论经过哪个分支,最后都将同样继续后面的代码。

 

上机题目一:

用户输入一个整数,请写一程序,通过if...else...判断该数是偶数或奇数。

 

解题:

被2整除的整数叫偶数,什么叫整除?

就是除了以后余数为0啊。

还得我们学过一个操作符是用来求两数相除的余数吗?

(如果不记得,先自觉到墙角站10分钟,然后找第七章复习)。

%操作符用来求两数相除的余数,比如5%2得到余数1。

那么一个数,比如a,是否偶数,条件就是(a%2)==0。

(对==也看着也有点生疏?

20分钟!

然后还找第七章)。

 

 

打CB,然后新建一个空白控制台工程。

在代码中加下以下黑体部分:

 

//---------------------------------------------------------------------------

#include

#pragmahdrstop

//---------------------------------------------------------------------------

#pragmaargsused

intmain(intargc,char*argv[])

{

 intnum;

 

 cout<<"请输入一个整数:

";

 

 cin>>num;

 

 if((num%2)==0)

    cout<

"<

 else

    cout<

"<

 

 getchar();

 return0;

}

//---------------------------------------------------------------------------

按F9编译并运行程序后,笔者输入123,以下是屏幕显示结果:

 

9.2if...语句

 

if...else...中的else(否则)并不是必须的,因为有时候,当指定条件成立时,我们执行某些动作,否则,我们不执行那些动作。

用流程图表示就是:

对比if...else...的流程图,我们发现if...语句中,当条件不成立时,将绕过分支一的语句,直接执行后面的代码。

 

if...语句格式:

 

if(条件)

{

  分支一

}

 

来看这个例子,然后做出你的判断:

if(我每天赚100万)

{

  我每天都将100成中的90万分给你。

}

看完上面的“程序”,你觉得我是个大方的人吗?

看起来是噢,但问题是我永远也无法每天赚100万,所以关于“我每天都将100成中的90万分给你” 整个是在穷开心呵。

同样的道理,你自已分析痞子蔡的那句话吧。

 

上机题目二:

用户输入一个字符,用程序判断是否为小写字母,如果是,请输出“您输入的字符是小写字母”。

解题:

如何判断一个字符是小写字母?

让我们查一下第五章中的ASCII码表。

在表里头,小写字母(a~z)对应的ASCII值为:

 

97~122 

a~z

 

可见,所有小写字母的值是连续的。

那么,判断一个字符是否为小写字母,就看它的值是否大于等于97,并且小于等122。

假设一个字符变量:

a;要判断它是否“大于等于97,并且小于等122”--

你不能这样写:

if(97<=a<=122)//错误!

 

你应该使用&&来表达"并且":

if(a>=97&& a<=122)

 

当然,更直观,更不易出错的写法,是直接使用字符,而不是使用字符的ASCII值:

if(a>='a'&&a<='z')

 

新建一个控制台空白工程。

然后在代码中输入以下黑体部分:

 

//---------------------------------------------------------------------------

#include

#pragmahdrstop

//---------------------------------------------------------------------------

#pragmaargsused

intmain(intargc,char*argv[])

{

 chara;

 cout<<"请输入一个字符:

";

 cin>>a;

 if(a>='a'&&a<='z')

    cout<

"<

 

 getchar();

 return0;

}

//---------------------------------------------------------------------------

9.3 ?

:

 表达式

?

:

 表达式我们称为问号冒号表达式。

 

用if...else...和if...语句,已经可以很好地实现所有条件分支的代码。

不过C是一门追求简捷高效的语言,它提供的?

:

表达式来在某种情况下代替if...else...,起来让代码更简捷的作用。

 

来看看if...else...语句在什么情况下可以简化。

 

首先来看原型:

if(条件)

{

 分支一

}

else

{

 分支二

}

我们知道,分支一或分支二一般都是一组(多行)语句,用来分别实现条件是否成立时的动作。

由于是一组(多行)语句,所以我们有一对{}括在外面,用于形成复合语句。

不过,有时候,分支中的语句比较简单,用一句话就可以实现。

比如我们所举的例子:

if(a>b)

{

 c=1;

}

else

{

 c=0;

}

在这个例子中,分支一、二都分别只有一条语句。

对于只有一条语句的情况,我们可以省略{}(除了在特殊的上下文中外,其它情况下都可以省略。

以后我们学习的其它流程控制也一样),如:

if(a>b)

  c=1;

else

  c=0;

看,没有花括号的代码,感觉多紧凑。

不过,对于上面的代码,我们还可以继续简化,那就是使用?

:

语句。

 

c=(a>b)?

1:

0;

 

就一行话,多简捷!

语句中的问号问的是什么?

问的是a是否大于b?

如果是,则得到值1,否则,得到值0。

 

?

:

表达式格式语法:

 

(条件)?

值1:

值2

 

举一例子:

设有int变量a,b,二者均已初始化。

请得到二者中的较大值。

 

方法是:

 

intc=(a >b)?

 a:

b;

 

是的,就这么简单,执行上面代码,c将得到a和b中的较大值。

 

我们称(a>b)?

a:

b为一个表达式,而不称它为完整的一个语句(尽管它的确也可以作一个单独的语句存在)。

一般地,?

:

表达式拿来作为等号的右值,用于通过条件判断确定一个值后,该值被赋予等号的左值。

因此,并不是所有的if..else...语句都可以用:

?

来代替,只有那些两个分支都只是用来计算一个同一类型的值,然后赋予同一变量的条件分支语句,才适合。

 

上机题目三:

两数取大

 

新建一个控制台空白工程。

然后在代码中输入以下黑体部分:

 

//---------------------------------------------------------------------------

#include

#pragmahdrstop

//---------------------------------------------------------------------------

#pragmaargsused

intmain(intargc,char*argv[])

{

 inta,b,c;

 cout<<"请输入两个整数(用空格分开):

";

 cin>>a>>b;

  

 c=(a>b)?

a:

b;

  

 cout<

 

 getchar();

 return0;

}

//---------------------------------------------------------------------------

下面是屏幕输出的结果。

我输入的两个数是102 和134。

 

9.4 多级if...else...语句

 

不要害怕为什么一个条件分支就有这么多种语句。

多级if..else..语句——只是我这么叫它,其实它完全是由if..else..语句组成,就好像楼梯,一个阶的楼梯是楼梯,100个阶的楼梯也是楼梯。

多级if..else...语法格式:

 

if(条件1)

{

   分支一  

  }

  elseif(条件2)

{

     分支二

  }

  elseif(条件3)

{

   分支三

  }

  else

{

   分支四

  }

 

格式中举出四个分支,实际可以只有三个,两个,也可以有更多个。

请看下在这个例子。

 

让我们想像这么一幕情景剧——

时间:

XXXX年2月14日;地点:

某校园内小公园;

    人物:

女生一,男生一。

   (男生送给女生一束环瑰)

    女生(高兴地):

多美啊——多少钱买的!

    男生:

猜。

    女生(心里想:

如果多于100元我就亲他一口):

超过100元吗?

    男生:

NO。

    女生:

(心里想:

如果多于50元我就许他亲我一口):

那,不低于50元吧?

    男生:

NO。

    女生:

(心里想:

如果多于10元就跟他说声谢谢吧):

那是不低于10元了?

    男生:

NO。

    女生:

(不再有任何想法,一把丢掉鲜花):

呸!

看明白了吗?

“看明白了……”一个小男生眼泪汪汪地站起来,回答:

“我是看明白了,现在的女生没一个是好东西!

”#·$&*%!

@啊?

?

 我是说,大家看出其中的多级条件分支了吗?

写成程序,便是:

 

intprice=玫瑰花价钱;

  if(price>100)

{

       小女生要亲小男生一口;

  }

  elseif(price>50)

{

       小女生准备让小男生亲一口;

  }

  elseif(price>10)

{

      小女生对小男生说声“谢谢”;

  }

  else

{

      小女生扔掉花,说:

“呸!

”;

  }

 

如果花价大于100元,那么女生亲男生一口;否则呢?

否则就再判断花价是否大于50元,如果还是不大,那不再来判断花价是否大于10元,如果还是不大,最后无条件地执行“小女生扔掉花……”这一句。

 

看一下多级if...else...语句的流程图:

 

 

上机题目四:

送花待遇,要求根据上面的情景剧,写一程序,用户输入花价后,程序根据不同的花价输出相应的待遇。

 

新建一控制台工程。

 

 

//---------------------------------------------------------------------------

#include

#pragmahdrstop

//---------------------------------------------------------------------------

#pragmaargsused

intmain(intargc,char*argv[])

{

 intflowerPrice;

 

 cout<<"公元2002年2月14日,一小男生向一小女生赠送一束玫瑰……"<

 cout<<"女生:

请输入这束花的价钱。

"<

 cout<<"男生:

";

 cin >>flowerPrice;

  

 if(flowerPrice>100)

    cout<<"女生:

哇!

我太喜欢这花了,让我亲你一口以示谢意!

"<

 elseif(flowerPrice>50)

    cout<<"女生:

哈!

花美人更美,你不想亲我一口吗?

"<

 elseif(flowerPrice>10)

    cout<<"女生:

谢谢!

"<

 else 

    cout<<"女生:

什么破花,大头鬼才会喜欢。

"<

 

 getchar();

 

 return0;

}

//---------------------------------------------------------------------------

以下是运行结果的一种,我实在买不起100元以上的花:

 

9.5switch语句

 

多级if...else...显然是为了那些可能需要进行多级判断才能做出选择的情况。

如前面的花价。

如果正好是大于100元,那么只需判断一次,女生就可以做出决定,但如果是7元钱,那就必须经过“是否大于100?

是否大于50?

是否大于10?

”三次判断。

C为了简化这种多级判断,又提供了switch语句。

 

switch语句的格式:

 

switch(整型或字符型变量)

{

    case变量可能值1:

 

       分支一;

        break;

  case变量可能值2:

 

       分支二;

        break;

  case变量可能值3:

 

       分支三;

        break;

  ...

  default:

      最后分支;

 

在switch的语法里,我们要学到4个关键字:

switch、case、break、default。

 

在 switch(变量) 这一行里,变量只能是整型或字符型。

程序先读出这个变量的值,然后在各个"case"里查找哪个值和这个变量相等,如果相等,就算条件成立,程序执行相应的分支,直到碰上break或者switch语句结束。

 

说起来有点抽象。

我们结合一个实例看看。

实例模拟一个网上调查。

它要求网友输入数字以选择自已是如何到达当前网页。

然后,程序根据网友这一输入,打出不同的结果。

 

上机题目五:

模拟网络调查,要求输出不同的选项,供网友选择(通过简单地输入数字),程序根据网友的选择,输出相应不同的结果。

 

请新建一控制台空白工程,然后在代码里输入以下黑体部分。

 

//---------------------------------------------------------------------------

#include

#pragmahdrstop

//---------------------------------------------------------------------------

#pragmaargsused

intmain(intargc,char*argv[])

{

 intfromWay;

 

 cout<<"请通过输入序号,选择您如何来到本网站。

"<

 cout<<"1)----通过搜索引擎"<

 cout<<"2)----通过朋友介绍"<

 cout<<"3)----通过报刊杂志"<

 cout<<"4)----通过其它方法"<

 

 cin>>fromWay;

 

 switch(fromWay)

 {

   case1:

 

      cout<<"您是通过搜索引擎来到本网站的。

"<

      break;

   case2:

 

      cout<<"您是通过朋友介绍来到本网站的。

"<

      break;

   case3:

 

      cout<<"您是通过报刊杂志来到本网站的。

"<

      break;

   case4:

 

      cout<<"您是通过其它方法来到本网站的。

"<

      break;

   default:

      cout<<"错误的选择!

请输入1~4的数字做出选择。

"<

 }

 

 getchar();

 

  return0;

}

 

以下是我运行的一个结果,我输入的是2。

 

对照输入结果,我们讲一讲这段代码,其中主要目的是要弄明白switch语句的用法。

 

首先,intfromWay 定义了一个整型变量,准备用来存储用户输入的选择。

 

cout<<"请通过输入序号,选择您如何来到本网站。

"<

cout<<"1)----通过搜索引擎"<

cout<<"2)----通过朋友介绍"<

cout<<"3)----通过报刊杂志"<

cout<<"4)----通过其它方法"<

 

这些语句输出提示和选择项,结果如上图。

 

cin>>fromWay; 这一句则负责等待用户输入,并且将用户的输入存储到fromWay。

接下来程序遇上了switch 语句:

 

switch(fromWay)

程序将根据 fromWay 值,在下面的各个case中找到匹配的值。

 本例中switch带有四个case,值分别是1、2、3、4。

在结果图中,由于我输入的是2,所以程序进入下面这个case:

case2:

 

   cout<<"您是通过朋友介绍来到本网站的。

"<

   break;

 

程序打出"您是通过朋友介绍来到本网站的。

"这行内容。

最后遇上break;于是跳出整个switch语句。

 

同样的道理,如果用户输入的是其它的数,如1或3,则会进入相应的case1或 case3 分支。

但如果用户输入的数在所有的case里都找不到时,会怎么样?

比如,用户输入5。

这种情况下,default分支将起作用,所有case里的值都不匹配时,switch进入default分支。

如果连default也没有,那么程序在switch语句里什么也不做,直接完成switch语句。

我们来看一下如果用户不按所列的情况输入,而造成的结果:

 

了解一下switch,case,break,default的意思,对理解前面的一切也会有帮助,它们分别是:

开关,情况,中断,默认(值)。

那么用一句话套起来的说法就是:

根据开关值的不同,执行不同的情况

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

当前位置:首页 > 工作范文 > 行政公文

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

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