zoukankan      html  css  js  c++  java
  • 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 }
    复制代码

     

  • 相关阅读:
    Encrypted Handshake Message
    RSAParameters Struct
    What if JWT is stolen?
    What's the difference between JWTs and Bearer Token?
    RSA Algorithm Example
    第18届Jolt大奖结果公布
    Ruby on rails开发从头来(windows)(三十六) 调试技巧
    Ruby on rails开发从头来(四十二) ActiveRecord基础(主键和ID)
    YouTube开放基础技术架构 让用户建自家YouTube
    Ruby on rails开发从头来(四十) ActiveRecord基础(Boolean属性)
  • 原文地址:https://www.cnblogs.com/YDBBK/p/4793218.html
Copyright © 2011-2022 走看看