凌阳教育专注嵌入式教育14年,良心教育,有担当,有诚信,值得信赖的教育品牌,欢迎访问官网http://www.sunplusedu.com

简单if语句

上一篇 / 下一篇  2016-04-11 17:46:58

简单if语句的一般形式为:

if(test expression)

{

       statement-block;

}

statement-x;

statement-block可以是一条或一组语句。如果测试表达式为真,将运行statement-block语句,否则,将跳过statement-block语句,运行statement-x语句。记住,当条件为真时,statement-blockstatement-x语句都一次运行,如图所示

简单if语句的控制流程图

请看下面用于处理入学考试分数的程序代码块:

……

if(category=SPORTS)

{

       marks=marks+bonus-marks;

}

printf("%f,marks");

......

该程序测试学生的分类类型。如果某学生为SPORTS类型,那么就把附件的bonusmarks加到其分数上后再显示出来;对于其他的学生,则不加bonusmarks的值。

示例  程序从终端读取4个变量abcd的值,如果(c-d)不为零,则计算(a+b)除以(c-d)并显示该结果。

main()

{

       int a,b,c,d;

       float ratio;

       printf("Enter four integer values\n");

       scanf("%d %d %d %d",&a,&b,&c,&d);

       if(c-d !=0)

       {

              ratio=(float)(a+b)/(float)(c-d);

              printf("Ratio=%f\n",ratio);

       }

}

输出

Enter four integer values

12     23  34  45

Ratio=3.181818

Enter four integer values

12        23  34  34

程序用了两组数据运行,来看看其功能的正确性。第一次运行结果显示为:

Ratio=3.181818

第二次运行既没有产生任何结果,也没有给出任何信息。在第二次运行中,由于(c-d)的值为零,因此跳过了statement-block语句后面没有其他语句,因而程序停止运行,没有产生结果。

注意在计算ratio的语句中使用了float类型转换。这是很有必要的,以避免因整数相除而导致小数部分的截除。记住,第一次运行时显示的输出—3.181818精确到小数点后6位。该结果含有一个圆整误差。如果希望有更高的精确度,就必须使用doublelong double数据类型。

简单if语句经常用于计数。

图中的程序用于计算体重小于50kg而身高大于170cm的男孩的数量。

程序

main()

{

       int count,i;

       float weight,height;

       count=0;

       printf("Enter weight and height for 10 byte\n");

       for (i=1;i<=10;i++)

       {

              scanf("%f %f"&weight,&height);

              if(weight<=50&&height>170)

                     count=count+1;

       }

       printf("Number of boys with height<50 kgs\n");

       printf("and height>170cm=%d\n",count);

}

输出

Enter weight and height for 10 boys

45        176.5

55       174.2

47    168.0

49    170.7

54    169.0

53    170.5

49    167.0

48    175.0

47    167

51    170

Number of boys with height<50 kgs

and height>170cm=3

该程序须测试两个条件,一个用于体重,另一个用于身高。这可以用下面的组合关系来实现:

if(weight<50&&height>170)

用下面两个if语句同样可以实现:

if(weight<50)

if(heught>170)

       count=count+1;

如果weight小于50,那么运行后面的语句,即另一个if语句。该if语句测试height,如果height大于170,则count1.

摩根原则的应用

在设计判断语句时,我们经常遇到这样一种情况,逻辑NOT运算符应用于一个组合逻辑表达式,如!。但是,一个正逻辑总是比一个负逻辑更容易阅读和理解。在这种情况下,我们可以采用摩根规则来使整个表达式变为负的。该规则如下:

去除括号,把NOT运算符应用于每个逻辑部分,同时把关系运算符求反。

也就是说:

x变为!x

x变为x

&&变为||

||变为&&

 

if...else语句

if...else语句是简单if语句的扩展。其一般形式为:

if(测试表达式)

{

       True-bloack 语句

}

else

{

       False-block 语句

}

statement-x;

如果测试表达式为真,则运行紧跟if语句后的True-bloack语句;否则运行False-block语句。无论哪种情况,要么运行False-block语句,但不能两者都运行,在这两种情况下,接下来控制权都将转移到statement-x语句。

请看计算某个班中男孩和女孩数量的示例。假定当code1表示此学生为男孩,code2时表示为女孩。实现这个计数的程序语句可以写为:

......

if(code==1)

       boy=boy+1;

if(code==2)

       girl=girl+1;

......

第一个测试语句判断某个学生是否为男孩。如果是,则男孩的数目加1,且程序继续运行第二个测试。第二个测试又判断该学生是否为女孩。着显然是没有必要的。一旦确定了某个学生为男孩,就没有必要再测试是否为女孩了。某个学生要么为男孩,要么为女孩,不可能两者都是。因此,利用else语句,上面的程序可以改写为:

......

if(code==1)

       boy=boy+1;

else

       girl=girl+1;

statement-x;

这里,如果code等于1,则运行boy=boy+1语句,且控制权转移到statement-x语句,跳过了else部分。如果不为1,则跳过boy=boy+1语句,而是运行else部分的girl=girl+1语句,然后将控制权交给statement-x语句。

当(c-d)为零时,不计算radio,程序没有给出任何消息就停止了。在这种情况下,我们无法知道程序时由于零值而停止,还是出现了其他错误。通过加入如下的else子句就可以盖上该程序:

......

if(c-d!=0)

{

       radio=(float)(a+b)/(float)(c-d);

       printf("Radio=%f\n",ratio);

}

else

       printf("c-d is zero\n");

凌阳教育,全国唯一一家原厂式嵌入式培训机构,专业从事嵌入式人才培训13年,最近新开课程信息安全工程师培训,想了解更多嵌入式资料下载或者是凌阳教育的动态,请访问凌阳教育官网www.sunplusedu.com


TAG: expression

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar
博评网