当前位置: 首页 > article >正文

C语言----分支语句

目录

if

基本结构

分层结构

嵌套结构

注意:

switch_case

循环

for循环

基本结构

嵌套结构

基本结构变形

1. 变形一:

2. 变形二:

3. 变形三:

while循环

格式:

执行顺序:

do_while循环

格式:

循环控制语句


if

根据你符合我不同的条件,去执行了不同的语句

基本结构

if(表达式)
{
    // 你符合这个条件的时候,就执行语句块1
    语句块1;
}
else
{
    // 你不符合这个条件的时候,就执行语句块2
    语句块2;
}

执行顺序:首先判断表达式是否成立,如果成立就执行语句块1,否则执行语句块2

分层结构

if(表达式1)
{
    语句块1;
}
else if(表达式2)
{
    语句块2;
}
...
    else
    {
        // 都不符合条件
        语句块n;
    }

嵌套结构

if(表达式1)
{
    if(表达式2)
    {
        语句块2;
    }
    else
    {
        语句块3;
    }
}
else
{
    语句块;
}

注意:

1)if后面可以没有else,但是else前面必须有if

2)if和else后面的{}可以省略,但是只能匹配之后的一条语句

switch_case

switch(变量或表达式)
{
    case 常量1: 语句块1; break;
    case 常量2: 语句块2; break;
    case 常量3: 语句块3; break;
        ...
            case 常量n: 语句块n; break;

        // 如果以上都没有匹配的话,就执行 default 后面的语句
    default: 语句块n+1
        }

执行顺序:
判断switch后面的表达式的结果,和case后的常量相匹配,如果匹配成功,就执行对应的语句块,如果没有匹配成功就执行default后面的语句块,遇到break结束


#include<stdio.h>

int main(int argc, const char *argv[])
{


    int a;
    scanf("%d", &a);
    switch (a)
    {
        case 1:
            printf("%d\n", a);    //删除break,语句重叠
            break;
        case 2:
            printf("%d\n", a);
            break;
        case 3:
            printf("%d\n", a);
            break;
        case 4:
            printf("%d\n", a);
            break;

        default:
            break;
    }
    return 0;
}

循环

for循环

基本结构

for(表达式1; 表达式2;表达式3)
{
    语句块;
}

表达式1:赋初值
表达式2:循环的终止条件
表达式3:增值减值语句

执行顺序:
首先执行表达式1进行赋值,然后判断表达式2是否成立,如果成立就进入循环执行语句块,再执行表达式3进行增值或减值然后继续判断表达式2是否成立,直到表达式2不成立退出循环

嵌套结构

for(表达式1; 表达式2; 表达式3)
{
    for(表达式4; 表达式5; 表达式6)
    {
        语句块;
    }
}

// 执行顺序:
// 首先执行表达式一,要对外层循环的变量进行赋值,判断它符不符合表达式二的条件,符合进入到内部的循环,执行表达式四,判断符不符合表达式五,符合执行语句块,然后执行表达式6,然后判断表达式五是否成立,直到内部 for 循环,表达式六不符合表达式五的条件,后到外层的表达式三,内部执行一遍对于外层只执行了一次,如果表达式三符合表达式五,那么就还要在进入到 内部循环一遍,直到外层循环的表达式二不成立,那么整个循环结束

#include <stdio.h>

int main(int argc, const char *argv[])
{

    int i; // 循环变量
    for (i = 1; i <= 10; i++)
    {
        printf("---------第%d次-------\n", i);
        for (j = 1; j <= 10; j++)
        {
            printf("i:%d  j:%d", i, j);
            printf("\n");
        }
    }

    return 0;
}

基本结构变形

1. 变形一:
int i = 0;
for(;表达式2; 表达式3)
{
	语句块;
}
2. 变形二:
int i = 0;
for(;表达式2; )
{
	语句块;
	表达式3;
}
3. 变形三:


for(;;)// 死循环
{
	if(表达式2)
{
	语句块;
	表达式3;
}
	else
{
	break;
}
}

练习.打印以下图案:

要求行数从终端输入。

输入:5

// 结果
*
**
***
****
*****    
int x; = 行数
int y; = 每一行有多少个*

解题思路:

用for循环嵌套实现外层循环控制行数,内层循环控制每行个数。

while循环

格式

定义循环变量并赋值;
while(判断条件)  // 表达式
{
	语句块;
	// 循环完成之后需要改变定义变量的值
    增值或减值语句;
}

执行顺序:

首先定义循环变量并赋值,然后判断是否符合条件,如果符合就进入循环执行语句块及增值减值语句,然后继续判断,直到判断条件不成立退出循环

#include <stdio.h>

int main(int argc, char const *argv[])
{
    int i = 1, num = 0;
    while (i <= 100)
    {
        num += i;
        i++;
    }
    printf("%d\n", num);
    
    return 0;
}
找错
int main()
{
    while(1>0);   // 死循环
    printf("hello");
    return 0;
}

do_while循环

格式:

定义循环变量并赋值;
do
{
    语句块;
    增值减值语句;
} while(终止条件);

先执行后判断

死循环:
for(;;){};
while(1){};
// 让程序卡死在这等
while(1);

循环控制语句

break; continue;

break:直接结束循环

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

for (; i <= 10; i++)
{
    if(i == 3)
    {
        break;
        // continue;
    }
    printf("%d\n", i);
}

使用场景:
	使用在循环语句中,结束循环
	使用时需要判断条件

练习:从终端上输入一个字符并在终端上输出这个字符,当输入字符为‘q’时,程序结束。

练习:循环输入一个5位数,判断它是不是回文数。当输入0时循环结束。

即12321是回文数,个位与万位相同,十位与千位相同。


http://www.kler.cn/a/465162.html

相关文章:

  • 对一个双向链表,从尾部遍历找到第一个值为x的点,将node p插入这个点之前,如果找不到,则插在末尾。使用C语言实现
  • SD下载、安装、使用、卸载-Stable Diffusion整合包v4.10发布!
  • 第二十六天 RNN在NLP中的应用
  • Windows平台下如何手动安装MYSQL
  • vscode代码AI插件Continue 安装与使用
  • 实战设计模式之建造者模式
  • Python - 游戏:飞机大战;数字华容道
  • HTML——29. 音频引入二
  • 【设计模式】依赖注入(Dependency Injection, DI)
  • Spring 中注入 Bean 的方式推荐
  • 【three.js】搭建环境
  • 详细讲一下React中Redux的持久化存储(Redux-persist)
  • 分析服务器 systemctl 启动gozero项目报错的解决方案
  • bilibili 哔哩哔哩小游戏SDK接入
  • 黑马商城:RabbitMQ基础
  • 在K8S中,Pod请求另一个Pod偶尔出现超市或延迟,如何排查?
  • 试题转excel;word转excel;大风车excel(1.1更新)
  • Linux 系统常见问题
  • sklearn_pandas.DataFrameMapper的用法
  • [算法] [leetcode-215] 数组中的第K个最大元素
  • wx015基于springboot+vue+uniapp的经济新闻资讯的设计与实现
  • 虚拟电厂搭建指南:绿虫仿真设计软件的助力
  • 【MySQL】什么是事务?MVCC?
  • Ceph对象存储接口的路线
  • 直观解读 JuiceFS 的数据和元数据设计(一)
  • LWM2M---Wakaama源码对接华为云平台