当前位置:C++技术网 > 资讯 > C语言基础教程:4 C语言的几种控制语句的入门

C语言基础教程:4 C语言的几种控制语句的入门

更新时间:2015-07-23 17:00:21浏览次数:1+次

   《论语?述而》有“择其善者而从之,其不善者而改之”,C语言有“择其适者而从之,其不适者而弃之”,岂不妙哉?

    所谓的控制语句(亦称为分支语句)就是控制整够程序的执行流程,说白了就是“如果怎样那么就做相应的处理”。

    先给大家罗列出C语言所提供的基本控制语句关键字:

if         //单控条件语句

if-else     //配对条件语句

if-else if-else//流水线配对语句

switch-case//开关语句

从单词字面含义大家就知道 if是如果之意嘛,else是否则之意嘛,switch译为开关,基本语法如下:

单控条件语句:

 if(Controlling Expression)//控制表达式

{

TODO SOMETHINGS

}

{}所囊括的是在控制表达式为真时所执行的语句,称为块语句

配对条件语句

if(Controlling Expression)//控制表达式

{

TODO SOMETHINGS

}

else

{

   TODO SOMETHINGS

}

如果条件不成立,在自动执行else语句块部分;

流水线配对语句

if(Controlling Expression)//控制表达式

{

TODO SOMETHINGS

}

else if(Controlling Expression)

{

TODO SOMETHINGS

}

else

{

TODO SOMETHINGS

}

如果有一个条件成立,则其他条件判断语句就不执行,即不进行判断操作,这样一来就节省程序执行时间了。

开关语句

switch(Controlling Expression)

{

case 常量表达式:语句列表

case 常量表达式:语句列表

case 常量表达式:语句列表

…..

}

也即判断哪个case的常量表达式与Controlling Expression相匹配,那么就执行相应的语句列表。

其实控制语句的语法部分就这么多。但不禁要问一句,讲这么一点真的够了吗?显然不够,在实际项目开发时,往往所遇到的问题是一些教科书上所不曾提及到的。我们下面来讲解这些知识点。

稍稍深入:

单单一个if语句多用于判断某个条件是否成立,不成立则直接结束整够函数的调用或者结束整够程序,配已return关键字得以实现,语法如下:

if(Controlling Expression)

{

 return ;

}

if-else配对形式,中的else总是与最近的if配对,在实际开发时千万注意配对层次的关系

if-else if-else这种配对形式,多用于多分支判断语句,主要是对if-else的功能扩展,最后的else语句可有可无,就相当于switch中的default语句,但逻辑自己要清楚

switch-case这个语句可以说是对if-else if-else语句功能的弱化而得来的,原因在于,switch的Controlling Expression只能是整形,而且case后面跟的表达式必须是常量,要在编译期间就能够确认。

深入部分其实也就是一些总结性质的东西,这个是要记住的。下面讲一些注意事项

if语句如果是判断的浮点数的大小关系的话,最好是判断的一个范围,这个知识点涉及到浮点型数据的精度问题,后面会有讲

switch-case语句中的break与default问题,这些事很多初学者犯错的地方,每一个case语句后都必须加break语句,default语句中的break可有可无,但是这个可有可无是基于你对C语言是非常了解的情况下才行,给大家举个例子

switch(day)

{

   default …

         break;//这里的break能少吗?如果少了,则至少有一个case语句被执行

case 1:

         …

break;

case 2:

break;

}

下面给初学者附上一个猜数游戏,程序不是很难,主要就是用的控制语句实现的,大家有兴趣的话,可以自己写一下

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
       int magic,a,i=0,count=0;
again:printf("input magic:");i++;
       scanf("%d",&magic);
       srand(time(NULL));a=rand()%10+1;
       for(;i<=10;)
       {     
              count++;
              if(magic==a)
              { printf("right\n");
              printf("magic=a=%d\n",magic,a);
                 break;}
        if((magic>a)&&i<=9)
        {printf("big\nagain ");goto again;}
        if((magic>a)&&i==10){printf("big\n");goto end;}
        if((magic<a)&&i<=9)
        {printf("small\nagain ");goto again;}
        if((magic<a)&&i==10){printf("small\n");goto end;}
       }
end:printf("count=%d\n",count);
       if(count>=10)
       printf("over\n");
}