• C语言控制结构


    C语言流程控制

    一、流程控制结构

    (1)顺序结构:按书写顺序执行每一条语句。

    (2)选择结构:对给定的条件进行判断,根据判断结果决定执行哪一段代码。

    (3)循环结构:在给定条件成立的情况下,反复执行某一段代码。

    二、选择结构-if

    (一)if简单使用

    1) 第一种结构:

    a) 如果条件为真,就执行后面的语句,否则不执行。

    if(条件)

    {

    语句1;

    语句2;

    ····

    }

    2) 第二种结构:

    a) 如果条件成立就执行语句1,否则执行语句2。

    if(条件)

    {

    语句1;

    }

    else

    {

    语句2;

    }

    3) 第三种结构:

    a) 先判断条件1,若成立则执行语句1,其它不执行;若条件1不成立,则检查条件2···,【注意】如果条件3成立,则说明前面的都不成立。所有的语句块只有一个会被执行。

    if(条件1)

    {

    语句1;

    }

    else if(条件2)

    {

    语句2;

    }

    else (条件3)

    {

    语句3;

    }

    4) 第四种结构:

    a) 在这种情况下,当条件成立,只执行语句1,语句2不属于次条件结构,但不推荐此种写法。

    If(条件)

    语句1;

    语句2;

     

    (二)if使用注意

     

    ①. 比较大小时,可以把常量值放在左边,变量值放在右边以避免错误。因为if(a==0)也容易被写成if(a=0),而这种情况,编译器并不会报错,推荐使用if(0==a)这种写法。

    ②. 注意赋值运算符,不要把=写成是==。

    ③. If(条件)后面不要加分号,这代表是一个空语句,后面的代码块将成为一个独立的代码块。如if(条件);{.....}//需要多加注意

    ④. 注意作用域的问题,如果要在if后面定义新的变量,则一定要使用大括号。

    if(10>6)

    {

    Int a;//a的作用域在代码块结束后失效

    }

    Printf(“a=%d”,a);//编译器报错,找不到标识符

     

    if(10>6)

    Int a; //这种情况下报错,a的作用域不明确

    Printf(“a=%d”,a); //编译器报错,找不到标识符

     

    ⑤. If(0){...}随便挑一个数值也可以做条件

    (三)If结构练习

    问题:输入一个整数seore代表分数,根据分数输出等级(A-E)。

    A 90-100  B80-89 C70-79 D60-69 E0-60

    代码:

    复制代码
     1 #include<stdio.h>
     2 
     3 int main()
     4 
     5 {
     6 
     7 //定义变量存储分数值
     8 
     9 int score;
    10 
    11 //提示输入
    12 
    13 printf("请输入分值:
    ");
    14 
    15 //接受输入
    16 
    17 scanf("%d",&score);
    18 
    19 //判断等级
    20 
    21 if(score>=90&&score<=100)
    22 
    23 printf("A
    ");
    24 
    25 else if(score>=80)
    26 
    27 printf("B
    ");
    28 
    29 else if(score>=70)
    30 
    31 printf("C
    ");
    32 
    33 else if(score>=60)
    34 
    35 printf("D
    ");
    36 
    37 else
    38 
    39 printf("E
    ");
    40 
    41 return 0;
    42 
    43 }
    复制代码

    三、选择结构-switch

    (一)switch结构

    Switch(值) //通常是变量

    {

    Case 数值1:

    语句1;

    Break;

    Case 数值2:

    语句2;

    Break;

    Case 数值3:

    语句3;

    Break;

    Default :

    语句4;

    Break;

    }

    解 说:该结构把数值与数值1进行比较,若相等,则执行后面的所有语句,直到遇见break语句跳出整个循环,若前面的条件都不满足,则最终会执行 default后面的语句。如果不写break语句,则后面的语句会接连执行,直到遇到break语句或者是全部语句执行完毕,只要前面的条件成立,则后 面的判断就直接被忽略。

    (二)Switch使用注意

    Char c=‘A’;

    Switch(c)

    {

    Case ‘A’:

    语句1;

    Break;

    Case  65://不能这样写,因为‘A’的ASCII值就是65,会报错

    语句2;

    Break;

    Case 数值3:

    Int a=10;

    //a的作用域不明确报错,c语言检查变量的作用域根据{}决定,这里可以加{}

    Break;

    Default :

    语句4;

    Break;

     

    }

    注意:如果要在case后面的语句中定义变量,则必须使用大括号包住。

    (三)switch结构练习

    问题:输入一个整数seore代表分数,根据分数输出等级(A-E)。

    A 90-100  B80-89 C70-79 D60-69 E0-60

    代码:

    View Code

    【对比】if与switch:

    1. If语句能够完成的功能,switch有时并不能够完成,如判断if(a>100)

    2. 在有些情况下,if语句和switch语句可以互换

    3. Switch语句能完成的功能,if语句都可以完成

     

    四、循环结构-while

    (一)简单使用

    While(条件)

    {

    语句;

    }

    解说:先判断条件是否成立,成立则执行,执行完代码后再次判断条件是否成立(判断条件-》执行代码块-》判断条件-》执行代码块···)1.首先确定循环执行的操作,2.在确定约束条件,即需要循环多少次,3.定义一个变量来记录循环的次数。

    提示:在while循环体内使用if...break(跳出整个循环)或if...continue语句(跳出本次循环,继续下一次循环判断)。

    While结构的运行原理:

    ①. 如果一开始条件不成立,则永远不会执行循环体。

    ②. 如果条件成立,则执行一次循环体,执行完毕后再次判断条件是否成立。

    ③. Break:直接退出整个循环。

    ④. Continue:结束当前循环体,进行下一轮循环判断。

    (二)使用注意

    1) While(1){.....}是一个死循环

    2) While(a<10);{...}在条件后面加逗号表示循环体是一个空语句,而非{}部分

    3) While条件语句后推荐使用{},否则只有第一条语句时循环体

    4) 最简单的死循环  while(1);//永远执行空语句,让程序崩溃

    (三)While练习

    问题:编程实现,提示输入一个正整数n,计算1+2+3+...n的值。

    代码:

    View Code

    五、循环结构-do while

    Do

    {

    语句

    }while(条件)

    特点:do while循环至少会执行一次循环体

     

    六、循环结构-for

    (一)基本使用

    for(语句1,条件,语句2)

    {

    循环体

    }

    语句1:一般为初始化语句

    语句2:一般为增量语句(执行完循环体后再执行的语句)

    For循环原理:

    1) For循环一开始就会执行语句1(整个for循环只会执行一次)

    2) 判断条件是否成立,若成立,则执行一次循环体,然后执行语句2,再次判断条件是否成立,若条件不成立则结束循环

    3) 顺序为:(语句1-》判断条件-》循环体—》语句2-》判断条件-》循环体···)

    【对比】for和while:

    在性能上,for循环稍胜一筹,因为while循环只能使用外部的变量,而for循环可以对变量进行及时回收。

     

    (二)for使用注意

    ①. 不要随便在for语句后面写上分号,如for();{....}

    ②. 定义变量的作用域不明确错误

    for(int i=0;i<5;i++)

    Int a=10; //编译器报错,变量作用域不明确

    ③. For语句中最简单的死循环for(;;);

    ④. 需要注意变量定义的作用域

    Int a=10;

    For(int i=0,int a=9;i<5;i++)

    {

    Int a=10;

    Printf(“a=%d ”,a);//这里打印的a的值是多少?

    }

     

    (三)For循环嵌套

    用以输出特定格式的内容,如QQ好友列表等,提升可扩展性。

    For(in i=0;i<5;i++)

    {

    //外面的循环控制行数

    Printf(“好友列表%d ”,i);

    //内部的循环控制列数

    For(int j=1;j<=6;j++)

    {

    Printf(“好友%d ”,j);

    }

    }

    (四)For练习

    使用for循环输出九九乘法表。//先控制行数,在控制列数

    代码:

     

    C语言控制结构

     

     

     

    C语言流程控制

     

    一、流程控制结构

     

    (1)顺序结构:按书写顺序执行每一条语句。

     

    (2)选择结构:对给定的条件进行判断,根据判断结果决定执行哪一段代码。

     

    (3)循环结构:在给定条件成立的情况下,反复执行某一段代码。

     

    二、选择结构-if

     

    (一)if简单使用

     

    1) 第一种结构:

     

    a) 如果条件为真,就执行后面的语句,否则不执行。

     

    if(条件)

     

    {

     

    语句1;

     

    语句2;

     

    ····

     

    }

     

    2) 第二种结构:

     

    a) 如果条件成立就执行语句1,否则执行语句2。

     

    if(条件)

     

    {

     

    语句1;

     

    }

     

    else

     

    {

     

    语句2;

     

    }

     

    3) 第三种结构:

     

    a) 先判断条件1,若成立则执行语句1,其它不执行;若条件1不成立,则检查条件2···,【注意】如果条件3成立,则说明前面的都不成立。所有的语句块只有一个会被执行。

     

    if(条件1)

     

    {

     

    语句1;

     

    }

     

    else if(条件2)

     

    {

     

    语句2;

     

    }

     

    else (条件3)

     

    {

     

    语句3;

     

    }

     

    4) 第四种结构:

     

    a) 在这种情况下,当条件成立,只执行语句1,语句2不属于次条件结构,但不推荐此种写法。

     

    If(条件)

     

    语句1;

     

    语句2;

     

     

     

    (二)if使用注意

     

     

     

    ①. 比较大小时,可以把常量值放在左边,变量值放在右边以避免错误。因为if(a==0)也容易被写成if(a=0),而这种情况,编译器并不会报错,推荐使用if(0==a)这种写法。

     

    ②. 注意赋值运算符,不要把=写成是==。

     

    ③. If(条件)后面不要加分号,这代表是一个空语句,后面的代码块将成为一个独立的代码块。如if(条件);{.....}//需要多加注意

     

    ④. 注意作用域的问题,如果要在if后面定义新的变量,则一定要使用大括号。

     

    if(10>6)

     

    {

     

    Int a;//a的作用域在代码块结束后失效

     

    }

     

    Printf(“a=%d”,a);//编译器报错,找不到标识符

     

     

     

    if(10>6)

     

    Int a; //这种情况下报错,a的作用域不明确

     

    Printf(“a=%d”,a); //编译器报错,找不到标识符

     

     

     

    ⑤. If(0){...}随便挑一个数值也可以做条件

     

    (三)If结构练习

     

    问题:输入一个整数seore代表分数,根据分数输出等级(A-E)。

     

    A 90-100  B80-89 C70-79 D60-69 E0-60

     

    代码:

     

    复制代码
     1 #include<stdio.h>
     2 
     3 int main()
     4 
     5 {
     6 
     7 //定义变量存储分数值
     8 
     9 int score;
    10 
    11 //提示输入
    12 
    13 printf("请输入分值:
    ");
    14 
    15 //接受输入
    16 
    17 scanf("%d",&score);
    18 
    19 //判断等级
    20 
    21 if(score>=90&&score<=100)
    22 
    23 printf("A
    ");
    24 
    25 else if(score>=80)
    26 
    27 printf("B
    ");
    28 
    29 else if(score>=70)
    30 
    31 printf("C
    ");
    32 
    33 else if(score>=60)
    34 
    35 printf("D
    ");
    36 
    37 else
    38 
    39 printf("E
    ");
    40 
    41 return 0;
    42 
    43 }
    复制代码

     

     

    三、选择结构-switch

     

    (一)switch结构

     

    Switch(值) //通常是变量

     

    {

     

    Case 数值1:

     

    语句1;

     

    Break;

     

    Case 数值2:

     

    语句2;

     

    Break;

     

    Case 数值3:

     

    语句3;

     

    Break;

     

    Default :

     

    语句4;

     

    Break;

     

    }

     

    解 说:该结构把数值与数值1进行比较,若相等,则执行后面的所有语句,直到遇见break语句跳出整个循环,若前面的条件都不满足,则最终会执行 default后面的语句。如果不写break语句,则后面的语句会接连执行,直到遇到break语句或者是全部语句执行完毕,只要前面的条件成立,则后 面的判断就直接被忽略。

     

    (二)Switch使用注意

     

    Char c=‘A’;

     

    Switch(c)

     

    {

     

    Case ‘A’:

     

    语句1;

     

    Break;

     

    Case  65://不能这样写,因为‘A’的ASCII值就是65,会报错

     

    语句2;

     

    Break;

     

    Case 数值3:

     

    Int a=10;

     

    //a的作用域不明确报错,c语言检查变量的作用域根据{}决定,这里可以加{}

     

    Break;

     

    Default :

     

    语句4;

     

    Break;

     

     

     

    }

     

    注意:如果要在case后面的语句中定义变量,则必须使用大括号包住。

     

    (三)switch结构练习

     

    问题:输入一个整数seore代表分数,根据分数输出等级(A-E)。

     

    A 90-100  B80-89 C70-79 D60-69 E0-60

     

    代码:

     

    View Code

     

    【对比】if与switch:

     

    1. If语句能够完成的功能,switch有时并不能够完成,如判断if(a>100)

     

    2. 在有些情况下,if语句和switch语句可以互换

     

    3. Switch语句能完成的功能,if语句都可以完成

     

     

     

    四、循环结构-while

     

    (一)简单使用

     

    While(条件)

     

    {

     

    语句;

     

    }

     

    解说:先判断条件是否成立,成立则执行,执行完代码后再次判断条件是否成立(判断条件-》执行代码块-》判断条件-》执行代码块···)1.首先确定循环执行的操作,2.在确定约束条件,即需要循环多少次,3.定义一个变量来记录循环的次数。

     

    提示:在while循环体内使用if...break(跳出整个循环)或if...continue语句(跳出本次循环,继续下一次循环判断)。

     

    While结构的运行原理:

     

    ①. 如果一开始条件不成立,则永远不会执行循环体。

     

    ②. 如果条件成立,则执行一次循环体,执行完毕后再次判断条件是否成立。

     

    ③. Break:直接退出整个循环。

     

    ④. Continue:结束当前循环体,进行下一轮循环判断。

     

    (二)使用注意

     

    1) While(1){.....}是一个死循环

     

    2) While(a<10);{...}在条件后面加逗号表示循环体是一个空语句,而非{}部分

     

    3) While条件语句后推荐使用{},否则只有第一条语句时循环体

     

    4) 最简单的死循环  while(1);//永远执行空语句,让程序崩溃

     

    (三)While练习

     

    问题:编程实现,提示输入一个正整数n,计算1+2+3+...n的值。

     

    代码:

     

    View Code

     

     

    五、循环结构-do while

     

    Do

     

    {

     

    语句

     

    }while(条件)

     

    特点:do while循环至少会执行一次循环体

     

     

     

    六、循环结构-for

     

    (一)基本使用

     

    for(语句1,条件,语句2)

     

    {

     

    循环体

     

    }

     

    语句1:一般为初始化语句

     

    语句2:一般为增量语句(执行完循环体后再执行的语句)

     

    For循环原理:

     

    1) For循环一开始就会执行语句1(整个for循环只会执行一次)

     

    2) 判断条件是否成立,若成立,则执行一次循环体,然后执行语句2,再次判断条件是否成立,若条件不成立则结束循环

     

    3) 顺序为:(语句1-》判断条件-》循环体—》语句2-》判断条件-》循环体···)

     

    【对比】for和while:

     

    在性能上,for循环稍胜一筹,因为while循环只能使用外部的变量,而for循环可以对变量进行及时回收。

     

     

     

    (二)for使用注意

     

    ①. 不要随便在for语句后面写上分号,如for();{....}

     

    ②. 定义变量的作用域不明确错误

     

    for(int i=0;i<5;i++)

     

    Int a=10; //编译器报错,变量作用域不明确

     

    ③. For语句中最简单的死循环for(;;);

     

    ④. 需要注意变量定义的作用域

     

    Int a=10;

     

    For(int i=0,int a=9;i<5;i++)

     

    {

     

    Int a=10;

     

    Printf(“a=%d ”,a);//这里打印的a的值是多少?

     

    }

     

     

     

    (三)For循环嵌套

     

    用以输出特定格式的内容,如QQ好友列表等,提升可扩展性。

     

    For(in i=0;i<5;i++)

     

    {

     

    //外面的循环控制行数

     

    Printf(“好友列表%d ”,i);

     

    //内部的循环控制列数

     

    For(int j=1;j<=6;j++)

     

    {

     

    Printf(“好友%d ”,j);

     

    }

     

    }

     

    (四)For练习

     

    使用for循环输出九九乘法表。//先控制行数,在控制列数

     

    代码:

    复制代码
     1 #include<stdio.h>
     2 
     3 int main()
     4 
     5 {
     6 
     7 for(int i=1;i<=9;i++)
     8 
     9 {
    10 
    11 for(int j=1;j<=i;j++)
    12 
    13 {
    14 
    15 printf("%dx%d=%d	",i,j,i*j);
    16 
    17 }
    18 
    19 printf("
    ");
    20 
    21 }
    22 
    23 return 0;
    24 
    25 }
    复制代码

     

  • 相关阅读:
    构建单页面应用
    chrome进入控制台时自动进入断点模式的解决方法
    git安装--linux下的安装
    express响应前端ajax请求
    nodejs链接mongodb数据库
    Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式)介绍
    Nginx中如何限制某个IP同一时间段的访问次数
    nodejs && apidoc
    apidoc
    android sdk
  • 原文地址:https://www.cnblogs.com/YDBBK/p/4793218.html
Copyright © 2020-2023  润新知