C语言分支和循环语句

C语言中的语句分为三种结构:

1.顺序结构

2.选择结构  :if 、 switch 、 case  等等

3.循环结构  : while 、 for 、 do while  等等


本章主要讲 : 分支语句:if 、 switch   

                        循环语句 :while 、 for 、 do while 、 

                        goto语句

一.什么是语句?

C语句可分为以下五类:

1.表达式语句   2.函数调用语句   3.控制语句   4.复合语句   5.空语句

本章后面介绍的是控制语句

C语言中有九种控制语句,可分为以下三类:

1.条件判断语句也叫分支语句 :if 语句、switch 语句;

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

3.转向语句 :break 语句、goto 语句、continue 语句、return 语句;

二.分支语句

  • 1. if 语句

语法结构:

1 . if (表达式) 

        语句;

//如果表达式为真,则执行语句;

2 . if (表达式)

        语句 1;

else

        语句 2;

//如果表达式为真,则执行语句 1;如果表达式为假,则执行语句 2;

3 . if(表达式1)

        语句 1;

else if(表达式2)

        语句 2;

else

        语句 3;
// if 嵌套语句,如果表达式 1 为真,则执行语句 1;
    如果表达式 1为假,则会执行表达式 2,
    在此基础上,如果表达式 2 为真,则执行语句 2 ,
    如果表达式 2 为假,则执行语句3.

(1).代码演示

#include
int main()
{
    int age = 0;
    scanf("%d",&age);
    if(age < 18 )
        printf("未成年\n");
    else
        pintf("成年\n");
    return 0
}

如果给出的数字小于18,系统会给出未成年,如果给出的数字大于18,系统会给出成年。

# if 表达式后面执行的语句如果只有一条语句的话,是可以不使用大括号的。

#include
int main()
{
    int age = 0;
    scanf("%d",&age);
    if(age < 18 )
        {
            printf("未成年\n");
        }
    else if(18 <= age < 30)  //18 <= age && age < 30
        {
            pintf("青年\n");
        }
    else
        {
            printf("老年\n");
        }
    return 0
}

在此代码中,输入20,系统会给出青年,输入40,系统也会给出青年,原因是当输入40时,18<=40 是成立的,此时18<=40 会变为1,整条18 <= age < 30代码会变为1<30,此时代码也成立,所以输入40,系统会给出青年。如果想要正确判断,代码 18 <= age < 30 应该改为
18<=age&&age<30,此时输入40,系统会给出老年。

#include
int text()
{
    int a =0;
    scanf("%d",&a);
    if(a > 5)
        return 1 ;
    else
        return 2;
    printf("hehe\n");
}
int main()
{
    int ret = text();
    printf("ret");
    return 0;
}        

 这个代码其实是没有机会输入 hehe 的,因为不管 a 是否大于5,所得的值都会被 return 带出函数,根本不会执行到 printf("hehe\n");

  (2).如何判断表达式真假呢?

0 表示假,非 0 表示真。

  (3).悬空else

#include
int main()
{
    int a = 0;
    int b = 0;
    if(a == 1)
        if(b ==2)
            printf("hehe\n);
    else
        printf("haha\n);
    return 0;
}

这个代码最终输出结果为空语句,因为 a = 1 这个表达式为假,所以不进入内部语句,而 else 总是跟离他最近的 if 语句进行搭配,所以 else  也不进行执行,所以在写代码的时候一定要注意排版,如果想让 if 跟 else 远距离匹配,可以在 if 内部的语句加上{}。

(4).等号和赋值问题

//  1.(等号)
#include
int main()
{
    int a = 0;
    if(a == 1)
        printf("haha\n);
    return 0;
}
//此时不会打印 haha


//  2.(赋值)
#include
int main()
{
    int a = 0;
    if(a = 1)
        printf("haha\n);
    return 0;
}
//  此时打印 haha
//  因为赋值完之后,式子成立=1,会执行if内部语句
//  所以为了避免这种错误代码一般写成常量在左边,变量在右边,这样不会搞成赋值语句,可以避免错误

(5). 小练习:判断输入的数字是奇数还是偶数

#include
int main()
{
    int a=0;
    scanf("%d",&a);
    if(a % 2 == 1)
        printf("奇数\n");
    else
        printf("偶数\n");
    return 0;
}

2. switch语句

语法结构

switch ( 整型表达式 )

{
    语句项;
}

(1). 语句项是什么?

语句项是一些 case 语句,例:

case 整型常量表达式;

        语句;

(2)代码演示

#include
int main()
{
    int day = 0;
    scanf("%d",&day);
    switch(day)
{
    case 1:
        printf("星期一\n");
        break;
    case 2:
        printf("星期二\n");
        break;
    case 3:
        printf("星期三\n");
        break;
    case 4:
        printf("星期四\n");
        break;
    case 5:
        printf("星期五\n");
        break;
    case 6:
        printf("星期六\n");
        break;
    case 7:
        printf("星期日\n");
        break;
    default:
        printf("输入错误\n")
}
    return 0;        
}

default 是默认的意思,当你输入的值没有与相应的case匹配时,会跳转到 default 语句。

case 只负责进入语句,没有其他含义,所以需要 break 语句来打破,如果没有 break ,当输入 5时,系统会给出 星期五 星期六 星期日(此处省略换行)。

case 后面必须加整型常量表达式。

三.循环语句

1.while 语句

(1)语法结构

while(表达式)
    语句;

 while 语句先判断表达式,如果表达式为真,则执行语句后再回到表达式重新判断,以此类推,直到表达式不成立为止,如果中途想要退出循环,需要用 break 来打破循环,如果只是想跳过某部分循环体,可以使用 continue 语句,当代码执行到 continue 语句时,会跳过 continue 后面的循环部分,直接回到表达式开始重新判断循环。

(2)代码演示

 用 while 循环打印数字1-10

#include
int main()
{
    int a = 0 ;
    while( a <= 10 )
    {
        printf (" %d ",a);
        a++;
    }
    return 0;
}

2.for循环 

(1). 语法结构

for(表达式1;表达式2;表达式3)
    循环语句;

 表达式 1 是循环的初始化部分,表达式 2 是循环的判断部分,表达式 3 是循环的调整部分

(2) . 代码演示

用 for 循环打印 1 - 10

#include
int main()
{
    int i = 0;
    for ( i = 1 ; i <= 10 ; i++ )
    {
    printf ( "%d" , i );
    }
    return 0;
}

(3). for语句的循环变量控制

建议:1.不可在 for 循环体内修改循环变量,防止 for 循环失去控制。

2.建议for语句的循环变量的取值采用 “ 前闭后开区间 ” 写法。

int i =0
for( i = 0 ;i < 10 ; i++ )
{
}

for循环变量的值在[ 0,10),为左闭右开,此时区间内有十个数,10 具有更好的代表意义,可以避免代码混乱。

3.do while 循环

(1).语法结构

do
    循环语句;
while(表达式);

(2).代码演示

使用 do while 循环打印 1 - 10

int main()
{
    int i = 1;
    do
    {
        printf ( " %d ",i);
        i++;
    }
    while ( i <= 10);
    return 0;
}

你可能感兴趣的:(c语言,开发语言)