小萌新的C语言——控制语句

目录

控制语句

条件判断语句

1、单分支

2、双分支

3、多分支

4、嵌套判断

循环语句

for循环

 循环的嵌套(任何循环,判断都能进行嵌套)

while循环

 do while

选择语句

switch选择

辅助语句

跳转语句(goto)

break

continue

return

//只需三种结构的组合就可以解决一切问题

(所有程序只需要三种结构就可以将她设计出来)

三种结构分别是:

顺序(代码默认从主函数开始从上往下顺序执行)

选择(判断真假,选择一个执行)

循环(重复执行同一位代码)

控制语句

条件判断语句

1、单分支

if(表达式)

{

        语句块;

}

逻辑:如果表达式为真,执行语句块,为假就不执行;

例如:

#include <stdio.h>

int main(int argc, char *argv[])
{ 
    int a = 10;
    if (10 == a)
    {
        printf("你好世界\n");
    }
    printf("hello world\n");

    return 0;
} 
hq

结果:单分支只能控制if里面的语句块

 

2、双分支

if(表达式)

{

        语句块1;

}

else

{

        语句块2;

}

逻辑:如果表达式为真,执行语句块1,为假执行语句块2;

例如:

#include <stdio.h>

int main(int argc, char *argv[])
{ 
    int a = 10;
    if (10 == a)
    {
        printf("你好世界\n");
    }
    else
    {
        printf("hello world\n");
    }
    return 0;
} 

结果:双分支就能控制if里面的语句块和else里面的语句块,选择执行哪一个;

 

3、多分支

if(表达式1)

{

        语句块1;

}

else if(表达式2)

{

        语句块2;

}

.......        //else if 可以有多个

else

{

        语句块3;

}

逻辑:如果表达式1为真,执行语句块1,如果表达式1为假,判断表达式2,如果表达式2为真,执行语句块2,如果为假执行语句块3;

例如:

#include <stdio.h>

int main(int argc, char *argv[])
{ 
    int a = 11;
    if (10 == a)
    {
        printf("你好世界\n");
    }
    else if (10 < a)
    {
        printf("hello world\n");
    }
    else if (10 > a)
    {
        printf("你好\n");
    }
    else
    {
        printf("hello");
    }
    return 0;
}

结果:

 

4、嵌套判断

if(表达式1)

{

        if(表达式2)

        {

                语句块1;

        }

        else

        {

                语句块2;

        }

}

else

{

        语句块3;

}

逻辑:如果表达式1为真,判断表达式2,表达式2为真,执行语句块1,表达式2为假,执行语句块2,如果表达式1为假,执行语句块3;

 //注意:

1、{ }的省略,只有第一行是属于前面表达式的

2、else只会找离她最近的一个if

例如:

#include <stdio.h>

int main(int argc, char *argv[])
{ 
    int a = 11;
    if (10 < a)
    {
        if (10 != a)
        printf("hello world\n");
        else
        printf("hello\n");
    }

    return 0;
} 

结果:满足外层if才能进入内层if进行判断

 

循环语句

for循环

for(表达式1;表达式2;表达式3)

{

        语句块;

}

逻辑:先执行表达式1(只执行一次),判断表达式2,如果表达式2为真,执行语句块,执行完语句块后执行表达式3,然后回到表达式2,重复判断表达式2的真假,为真再执行语句块和表达式3,直到表达式2为假跳出循环

//注意:

1、循环的省略:
省略表达式1,默认从0开始                                  //for(; i < 100; i++)
省略表达式2,变成死循环(不会结束的循环)   //for(i = 0; ;i++)
省略表达式3,变成死循环                                   //for(i = 0; i < 100;)
可以都省略,但是不能省略分号                          //for(; ;)

2、{ }的省略,只有第一行是属于前面表达

例如:

#include <stdio.h>

int main(int argc, char *argv[])
{ 
    int i = 0;
    for (i; i < 5; i++)
    {
        printf("hello world\n");
    }

    return 0;
} 

结果:

 

 循环的嵌套(任何循环,判断都能进行嵌套)

//循环里面又放一个循环

for(表达式1;表达式2;表达式3)                 //外层循环

{

        for(表达式4;表达式5;表达式6)        //内层循环

        {

                语句块;  

        }

}

逻辑:先执行表达式1(只执行一次),判断表达式2,如果表达式2为真,执行表达式4,判断表达式5,如果表达式5为真,执行语句块,执行完语句块后执行表达式6,然后回到表达式5,重复判断表达式5的真假,如果表达式5为真再执行语句块和表达式6,直到表达式5为假跳出内层循环,之后执行表达式3,然后回到表达式2,重复判断表达式2的真假,为真再执行内层循环和表达式3,直到表达式2为假跳出外层循环;

例如:

#include <stdio.h>

int main(int argc, char *argv[])
{ 
    for (int i = 0; i < 5; i++)
    {
        for(int j = 0; j < 5;j++)
        {
        printf("* ");
        }
    putchar('\n');
    }


    return 0;
} 

结果:

 

while循环

while (表达式)

{

        语句块;

}

逻辑:判断表达式,为真执行语句块,然后跳到表达式重新判断真假,直到表达式为假跳出循环;

死循环:while(真),//一般写为while (1)

例如:

结果:

 do while

do

{

        循环体;

}

while(表达式);

逻辑:先执行循环体,再判断表达式,为真跳回循环体继续执行,为假结束循环

//注意:do while 至少会执行一次循环

例如:

#include <stdio.h>

int main(int argc, char *argv[])
{ 
    int i = 0;
    while (i != 10)
    {
        printf("你好世界\n");
        i++;
    }

    return 0;
} 

结果:

选择语句

switch选择

switch(常量表达式)
{
case 表达式1:语句块1;break;
case 表达式2:语句块2;break;
case 表达式3:语句块3;break;
case 表达式4:语句块4;break;
case 表达式5:语句块5;break;
......
default :语句块n;
}

逻辑:switch里的常量表达式如果和case后面的表达式一样时,就会执行对应case后面的语句块,直到遇见break结束switch;

//注意:

switch和case后面不能跟区间

case后面不能跟变量

switch和case后面可以跟单个字符,不能跟字符串(地址)

switch和case后面可以跟常量运算表达式

switch和case后面不能跟浮点型数据

break可以不写,但是没有break会继续执行下去

例如:

#include <stdio.h>

int main(int argc, char *argv[])
{ 
    switch(3)
    {
        case 1: printf("hello");break;
        case 2: printf("world");break;
        case 3: printf("你");
        case 4: printf("好");
        case 5: printf("世");
        case 6: printf("界\n");break;
        default:printf("嘿嘿");
    }

    return 0;
} 

结果:

辅助语句

跳转语句(goto)

p:                //标志符

代码块;

goto p;        //跳转语句

逻辑:执行完代码块后,碰到goto时,代码会跳转到goto后面所跟着的标志所在的位置开始执行

//注意:注意:可以往前跳转,也可以往后跳转,只能在所在的函数中跳转,但是标志后面第一行不能是定义语句

例如:

#include <stdio.h>

int main(int argc, char *argv[])
{ 
    int a;
    printf("请输入数字:");
p:
    scanf("%d",&a);
    switch(a)
    {
        case 1: printf("hello");break;
        case 2: printf("world");break;
        case 3: printf("你");
        case 4: printf("好");
        case 5: printf("世");
        case 6: printf("界\n");break;
        default:
        {
        printf("输入有误请重新输入");
        goto p;
        }
    }

    return 0;
} 

结果:

 

break

结束本次循环

例如:

#include <stdio.h>

int main(int argc, char *argv[])
{ 
    for (int i = 0; i < 10; i++)
    {
        if ( 5 == i)
        {
            break;
        }
        printf("第%d次打印\n",i);
    }
    


    return 0;
} 

结果:

 

continue

结束本次循环,继续下一次循环

例如:

#include <stdio.h>

int main(int argc, char *argv[])
{ 
    for (int i = 0; i < 10; i++)
    {
        if ( 5 == i)
        {
            continue;
        }
        printf("第%d次打印\n",i);
    }
    


    return 0;
} 

结果:

 

return

return:结束本次函数,一般可以返回一个数据给函数的入口地址(函数名)
return 0;--正常结束
return -1;异常结束

例如:

#include <stdio.h>
int myFor(int i)
{
    if (i == 0)
        return -1;
    else
    {
        for(int j = 1; j <= i; j++)
        {
            printf("第%d次循环打印\n",j);
        }
        return 1;
    }
}
int main(int argc, char *argv[])
{ 
    int i;
    scanf("%d",&i);
    int m = myFor(i);
    if (-1 == m)
        printf("错误退出\n");
    else
        printf("正确退出\n");
    return 0;
}

结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值