C语言基础 DAY1

程序的三种基本控制结构及其相关概念

 

1.C语言的三种基本结构

  顺序结构:从头到尾一句接着一句的执行下来,直到执行完最后一句;

  选择结构:到某个节点后,会根据一次判断的结果来决定之后向哪一个分支方向执行;

  循环结构:循环结构有一个循环体,循环体里是一段代码。对于循环结构来说,关键在于根据判断的结果,来决定循环体执行多少次;

注:在逻辑上有一种布尔类型,只有两个值,即真和假。

    C语言的判断表达式最终的值就是一个bool类型,这个判断表达式的bool值就决定了选择结构如何选择,循环结构如何循环;

2、顺序结构:顺序结构很简单,一般我们遇到的除了选择结构和循环结构外,都是顺序结构;

3、选择结构:C语言中常用的选择结构主要有以下两种:

  (1) if else:引入关键字:if  else  else if

    if (bool值)     // 如果bool值为真,则执行代码段1,否则执行代码段2

    {

      代码段1

    }

    else

    {

      代码段2

    }

    if (bool值1)    // 如果bool值1为真,则执行代码段1,否则判断bool值2是否为真

    {

      代码段1

    }

    else if (bool值2)  // 若bool值2为真则执行代码段2,否则直接执行代码段3

    {          // 开头的if和结尾的else都只能有一个,但是中间的else if可以有好多个

      代码段2

    }

    else

    {

      代码段3

    }

例如:

 

4、循环结构:C语言中常用的循环结构主要有以下三种:

  (1) for:

    for (循环控制变量初始化; 循环终止条件; 循环控制变量增量)

    {

      循环体

    }

    循环执行步骤:第一,先进行循环控制变量初始化;

           第二,执行循环终止条件,如果判断结果为真,则进入第三步;如果为假则循环终止并退出;

           第三,执行循环体;

           第四,执行循环控制变量增量,转入第二步;

    注:for循环()中的三部分除了循环终止条件外,其他两部分都可以省略,但标准的for循环中,应该把循环控制变量的初始化,增量都放在()当中,并且在循环体中绝对不应该更改循环控制变量;

例如计算1+2+3+····+10

 

 

 

  (2) while:

    循环控制变量初始化

    while(循环终止条件)

    {

      循环体

      循环控制变量增量

    }

    循环执行步骤:第一,先进行循环控制变量初始化(在while之前);

           第二,判断循环终止条件,如果判断结果为真,则进入第三步;如果为假则不执行循环体;

           第三,执行循环体;

             第四,执行循环控制变量增量,转入第二步;

比如计算100以内所有奇数的和 :

 

 

 

 

  (3) do while:

    循环控制变量初始化

    do

    {

      循环体

      循环控制变量增量

    }while (循环终止条件);

    循环执行步骤:第一,先进行循环控制变量初始化(在do while之前);

           第二,执行循环体;

           第三,执行循环控制变量增量;

           第四,判断循环终止条件,如果判断结果为真,则返回第二步;如果为假则直接退出循环;

例如计算100以内所有奇数的和:

 

 

 

 C语言基本语句的使用(赋值、条件、循环、switch、break、continue语句)

一、赋值语句

赋值语句形如:

变量=表达式;

变量=变量=变量=·······=表达式;

计算功能大部分是由赋值语句实现。

赋值运算符=,将右侧表达式(右值)的值赋给左侧变量(左值)

赋值过程中的类型转换

浮点型→整型:先取整,舍弃小数部分,再赋值
整型→浮点型:数值不变,以浮点数形式存储到变量
double→float:双精度转单精度,以4字节存储,若超出float范围则出错
float→double:数值不变,以8字节存储,有效位数扩展到15位

字符型→整型:将字符的ASCII代码赋给整型变量
字节多的整型→字节少的整型:将其低字节原封不动送给被赋值变量(即发生“截断”)
要避免此类情况,因为赋值后数值可能发生失真。

赋值表达式与赋值语句:

赋值表达式末尾没有分号,赋值语句末尾必须有分号。

在一个表达式中可以包含一个或多个赋值表达式,但绝不能包含赋值语句。

变量赋初值

一般不是在编译阶段完成(只有静态存储变量和外部变量的初始化是在编译阶段完成的),而是在程序运行时执行本函数时赋予初值的,相当于执行一个赋值语句。

如int a =3;相当于int a;a=3;

二、条件语句  ----- 同 上面的选择结构+switch csae

三、循环语句  ----- 同上面的循环结构

(2) switch case:引入关键字:switch  case  break  default

switch语句原理是跳转到case X位置执行剩下的语句,直到最后或者遇见break为止。因此在每一条语句最后+break即可。

因此不加break的话将会执行跳转到的case本身以及以下所有的语句。

switch的执行是按照从小到大的顺序执行的,最后执行default语句,
如果default后面带有break,那么程序就会正常跳出switch,否则,
程序会继续向后执行switch语句!也就是说,不管default放在什么
位置,它总是在最后一个处理,然后继续向下处理!
所以,最后的处理办法,避免出现以外结果的最好办法就是每一个case

以及default语句都要加一个break!

default在switch开头:

(1)若所有case都不满足条件,则执行default,并执行default语句之后的case语句,直到break或结束,

(2)
default在switch中间:

若所有case都不满足条件,同上,直接执行default语句,并执行default语句之后的case语句,直到break或结束,

(3)

 default在switch末尾:

若所有case语句都不满足条件,则执行default语句,结束;若有case满足,则执行case语句直到遇到break或switch语句结束

switch (变量) // 执行到这一句时,变量的值是已知的

{ // switch case语句执行时,会用该变量的值依次与各个case后的常数去对比,试图找到第一个匹配项,找到匹配的项目后,

case 常数1: //就去执行该case对应的代码段,如果没找到则继续下一个case,直到default

代码段1;// 如果前面的case都未匹配,则default匹配。

break;

      case 常数2:

代码段2;

break;

  ……

default:

代码段n;

break;

    }

    注:第一,case中必须是常数,而且必须是整形;

      第二,一般来说,每个case中代码段后都必须有一个break;

      第三,case之后一般都会有default,虽然语法上允许没有default,但是建议写代码时一定要写;

例如: 结构化设计-选择结构示例代码 switch case演示

 

 

 

  (3) if else和switch case的区别:if else适合对比条件较复杂,但是分支比较少的情况,switch case适合那种对比条件简单,但是分支较多的情况;

    通常的做法是:在适合使用switch case的情况下会优先使用switch case,如果不适合则使用if else;

switch(表达式)
{
case 常量表达式1:语句1;
....
case 常量表达式2:语句2;
default:语句;
}

break语句和continue语句

break和continue都是用来控制循环结构的,主要是停止循环

break用于完全结束一个循环,跳出循环体执行循环后面的语句。

break语句既能用在switch中,又能用在循环体中。

continue语句只能用于循环体中。

continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环。

可以理解为continue是跳过当次循环中剩下的语句。执行下一次循环

 

 

C语言中没有boolean类型

* 在C语言中,关系运算的结果为"真"就返回1,"假"就返回0

inta1 =5>4;// 1inta2 =5<4;// 0

* 还需注意的是,在C语言中,任何非0值都为"真",只有0值才为"假"

控制语句

用于完成一定的控制功能

if()….else…  //条件语句
for()…      //循环语句
while()…    //循环语句
do…while()  //循环语句
continue       //结束本次循环语句
break         //中止执行switch或循环语句
switch         //多分支选择语句
return         //从函数返回语句
goto          //转向语句,在结构化程序中基本不用goto语句
()表示括号中是一个“判别条件”,“…”表示内嵌的语句

1.C语言中空语句一般有哪些用途?

 1.纯粹消耗cpu时间,起到延时的作用

 2.为了程序的结构清楚,可读性好,以后扩充新功能方便。有些公司的编码规范要求,对于if/else语句等,如果分支不配对的话,需要用空语句进行配对,

2.在if语句中,使用布尔变量应注意什么?

不可将布尔变量直接与TRUE、FALSE或者1、0进行比较,根据定义,零值为假(FALSE),任何非零值都是真(TRUE),假设布尔变量名字为flag,它与零值比较的标准if语句为

if(flag)或者if(!flag)


C语句可分为以下五类:

1 表达式语句; 2 函数调用语句; 3 控制语句;

4 复合语句; 5 空语句。

1) 表达式语句

表达式语句由表达式加上分号“;”组成。其一般形式为:

表达式;

执行表达式语句就是计算表达式的值。例如 c=a+a;

2) 函数调用语句

由函数名、实际参数加上分号“;”组成。其一般形式为:

函数名(实际参数表);

例如 printf("Hello !");

3) 控制语句

控制语句用于控制程序的流程,以实现程序的各种结构方式。它们由特定的语句定义符组成。C语言有九种控制语句。 可分成以下三类:

条件判断语句:if语句、switch语句;

循环执行语句:do while语句、while语句、for语句;

转向语句:break语句、goto语句、continue语句、return语句。

4) 复合语句

把多个语句用括号{}括起来组成的一个语句称复合语句。

在程序中应把复合语句看成是单条语句,而不是多条语句。例如:

{ x=y+z; a=b+c; printf("%d%d", x, a); }   定义的变量只在该复合//语句中起作用

5) 空语句

只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用来作空循环体。例如:while( getchar()!='\n' );

猜你喜欢

转载自www.cnblogs.com/shangstacey/p/12800620.html