黑马程序员——流程控制

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流!——

流程控制

*顺序结构:默认的流程结构。按照书写顺序执行每一条语句。
*选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码。
*循环结构:在给定条件成立的情况下,反复执行某一段代码。

顺序结构

复合语句

在C语言中,一对花括号{}不仅可以用作函数体的开头和结尾标志,也可以用作复合语句的开头和结束标志。复合语句也称为语句块,其形式如下:
{语句1 语句2 语句n}

注意:
1)一个复合语句在语法上被视为一条语句,在一对花括号内的语句不限
2)在复合语句中不仅可以有执行语句,也可以有定义部分,复合语句申明的变量的作 用域只在复合语句中,出了复合语句就不起作用.复合语句中的变量名和主函数中的变量可以相同,但不是同一变量

#include <stdio.h>
int main()
{
    int a = 2,b = 3,c = 4;
    printf("a=%d,b=%d,c=%d\n",a,b,c);
    {
        int a = 7,b = 8,c = 9;
        printf("a=%d,b=%d,c=%d\n",a,b,c);
    }
    return 0;
}

运行结果:
a=2,b=3,c=4
a=7,b=8,c=9

空语句

C程序中的所有语句都必须由一个分号”;”作为语句的结束,如果一个语句只有一个分号,这样的语句叫做空语句。

程序执行空语句时将不产生任何动作。

选择结构

选择结构—if

单条件选择

格式:
if(条件表达式)
{
满足条件时执行的代码;
}

int a = 10;
if(a>5)
{
    printf("hahah\n");
}
双条件选择

格式:
if(条件表达式)
{
满足条件时执行的代码;
}
else
{
不满足条件时执行的代码;
}

int count = 40;    
if ( count >= 50 )
{
    printf("开班!!!\n");
    printf("准备机器!!!\n");
}
else
{
    printf("不开班!!!\n");
    printf("不准备机器!!!\n");
}
多条件选择

格式:
if(条件表达式1)
{
满足条件1时执行的代码;
}
else if(条件表达式2)
{
满足条件表达式2的代码;
}
else
{
不满足所有条件时执行的代码;
}

#include <stdio.h>
int main()
{
    int a = 6;
    if (a++ > 10) // a == 7
    {
        printf("A\n");
    }
    else if (a++ > 5) // a == 8
    {
        printf("B\n");
    }
    else if (a++ > 3) 
    {
        printf("C\n");
    }
    else
    {
        printf("D\n");
    }
    printf("a的值是%d\n", a);
    return 0;
}
其他结构

if (条件)
语句1;

    int a = -10;
    if (a>1)
        printf("A\n");
    printf("B\n");

运行结果:B

条件语句的嵌套

条件语句允许相互嵌套

例:输入三个数x,y,z,然后按从大到小输出

#include  <stdio.h>
int main()
{
    float x,y,z;
    scanf("%f%f%f",&x,&y,&z);
    if(x>=y&&x>=z)
    {
          printf("%f\t",x);
          if(y>=z) 
          printf("%f\t%f\n",y,z);
          else 
          printf("%f\t%f\n",z,y);
    }
    else if(y>=x&&y>=z)
    {
          printf("%f\t",y);
          if(x>=z) 
          printf("%f\t%f\n",x,z);
          else 
          printf("%f\t%f\n",z,x);
    }
    else
    {
          printf("%f\t",z);
          if(x>=y) 
          printf("%f\t%f\n",x,y);
          else  
          printf("%f\t%f\n",y,x);
    }
}

注意:if(语句)后不要加分号

选择结构—switch

格式:
switch(常量表达式)
{
case 常量1:
语句1或空;
case 常量2:
语句2或空;
case 常量n:
语句n或空;
default:
语句n+1或空;
}

执行switch开关语句时,将变量逐个与case后的常量进行比较,若与其中一个相等,则执行该常量下的语句,若不与任何一个常量相等,则执行default后面的语句。

注意:
1>switch中变量可以是数值,也可以是字符,但必须是整数。
2>可以省略一些case和default。
3>每个case或default后的语句可以是语句体,但不需要使用”{“和”}”括起来。

例:一个学生的成绩分成五等,超过90分的为’A’,80-89的为’B’,70-79为’C’,60-69为’D’,60分以下为’E’。现在输入一个学生的成绩,输出他的等级。

#include <stdio.h>
int main()
{
    int num;
    char grade;
    scanf("%d",&num);
    num/=10;
    switch(num)
    {
        case 10:
        case 9:
            grade='A';
            break;
        case 8:
            grade='B';
            break;
        case 7:
            grade='C';
            break;
        case 6:
            grade='D';
            break;
        default:
            grade='E';
            break;
    }
    printf("%c",grade);
    return 0;
}

case里面可以是空的,例如上边程序中switch语句执行的顺序是从第一个case判断,如果正确就往下执行,直到break;如果不正确,就执行下一个case。所以在这里,当成绩是100分时,执行case 10:然后往下执行,grade=’A’;break;退出。

Switch case 语句允许嵌套;

注意:如果要在case中定义新的变量,需用{}扩起来

循环结构

循环结构—while

格式:
while(表达式)
{
循环体;
}

运行原理
1.如果一开始条件就不成立,永远不会执行循环体
2.如果条件成立,就会执行一次循环体,执行完毕,再次判断条件是否成立……

int count = 0;
while (count<50)
{
        ++count;
        printf("做第%d次俯卧撑\n", count);
}

循环结构—do while

格式:
do
{
循环体;
}
while(表达式);

#include <stdio.h>
int main()
{
    int i = 0;
    do {
        i++; // 5
    } while (i<0);

    printf("i=%d\n", i);
    return 0;
}

while和do-while的区别:
1.很多情况下,while和do while可以互换
2.while特点:如果一开始的条件不成立,永远不会执行循环体;
do while特点:不管一开始的条件是否成立,至少会执行一次循环体
3.最好使用while

循环结构—for

格式:
for(控制变量初始值;控制条件表达式;控制变量改变方式)
{
循环体;
}

执行过程:
进入循环后,先初始化控制变量,然后检查控制条件表达式是否满足,如果满足则执行循环体,然后按照控制变量改变方式去改变控制变量的值;然后继续检查控制条件表达式是否满足;如果控制条件表达式不满足,则直接退出整个循环。

例:输出以下内容
好友列表1
好友1
好友2
好友列表2
好友1
好友2
好友列表3
好友1
好友2

#include <stdio.h>
int main()
{

    for (int i = 1; i<=4; i++)
    {
        //printf("好友列表%d\n", i + 1);
        printf("好友列表%d\n", i);

        /*
        printf("    好友1\n");
        printf("    好友2\n");
        printf("    好友3\n");
        printf("    好友4\n");
        printf("    好友5\n");*/

        for (int j = 1; j<=7; j++)
        {
            printf("    好友%d\n", j);
        }
    }

    return 0;
}

continue和break

break

1.使用场合
1> switch语句:退出整个switch语句
2> 循环结构:退出整个循环语句
* while
* do while
* for
2.注意点
只对最近的循环结构有效

#include <stdio.h>
int main()
{
    for (int i = 0; i<3; i++)
    {
        for (int j = 0; j<2; j++)
        {
            if (j==1)
            {
                break;
            }
            printf("A\n");
        }
    }
    return 0;
}

运算结果:
A
A
A

continue:

1.使用场合
1>循环结构:结束当前这次的循环体,进入下一次循环体
* while
* do while
* for
2.注意点
只对最近的循环结构有效

#include <stdio.h>
int main()
{
    for (int i = 0; i<5; i++)
    {
        if (i%2)
        {
            continue;
        }
        printf("%d\n", i);
     }
     return 0;
}

运算结果:
0
2
4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
黑马程序员的tb_brand是指在JavaWeb基础教程中创建的一个表。这个表是用来存储品牌信息的,具体的表结构和数据类型需要和JavaBean类中的成员变量保持一致。\[1\]在这个教程中,使用了Maven来构建项目,并且使用了MyBatis作为持久层框架,通过配置pom.xml文件来引入相关依赖。\[2\] Maven是一个用于管理和构建Java项目的工具,它提供了一套标准化的项目结构、构建流程和依赖管理机制。\[3\] #### 引用[.reference_title] - *1* [【JAVAWEB开发】黑马程序员java web案例资料(含Element的删除与修改)](https://blog.csdn.net/aasd23/article/details/126940147)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [黑马程序员-MyBatis 框架-最全入门笔记、阿伟看了都得说真大、真细、真全!!!](https://blog.csdn.net/qq_57383364/article/details/128103058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [JavaWeb——黑马程序员课程笔记](https://blog.csdn.net/King_ZACC/article/details/128573804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值