C语言分支和循环

目录

一.分支

一.if

二.if else

三.if else嵌套

四.else if

五.switch语句

 二.循环

一.while  (do while)break :

二.for函数:

三.goto语句:

四.猜数字:

 


一.分支

一.if

if要条件为真才执行为假不执行而且if只能执行后面第一条如果要执行多条就得用{}包起来

下面if的判断条件是a等于2就为真执行打印yes否则为假不执行直接跳过printf执行下一条语句

0表示假非0表示真

int main()
{
int a=1;
if(a==2)
printf("yes");
}

下面的代码是输入一个数如果小于5为真执行if{}里的俩条printf语句如果大于或等于5就不执行if{}里的语句直接跳过

int main()
{
    int a;
    scanf("%d",&a);
    if(a<5)
    {
        printf("yes\n");
        printf("yes\n");
    }
}

二.if else

这段代码是判断输入的a是否为1,如果是1为真就只执行printf("1");不执行printf("a不等于1");如果输入的数不是1就不执行if里的只执行else里的内容,else是后离他最近的if匹配的

#include<stdio.h>
int main()
{
    int a;
    scanf("%d",&a);
    if(a==1)
    {
        printf("1");
    }
    else 
    {
        printf("a不等于1");
    }
}

三.if else嵌套

代码风格很重要比如这个和小他下面的就有区分if else匹配的难度了可以多用{}

#include<stdio.h>
int main()
{
    int a=0;
    int b=0;
    if(a==2)
    {
        if(b==2)
        {
        printf("a,b的值都是2");
        }
    }
    else
    {
        if(b==2)
        {
        printf("只有b是2");
        }
        else
        {
          printf("都不等于2");
        }
    }
}
#include<stdio.h>
int main()
{
    int a=0;
    int b=0;
    if(a==2)
        if(b==2)
        printf("a,b的值都是2");
    else
        if(b==2)
        printf("只有b是2");
        else
          printf("都不等于2");
        
    
}

四.else if

下面程序执行后输入1就执行if(a==1)的语句并不再执行他的其他分支else if  ,a为2就只执行else if(a==2)里的内容并不再继续执行后面的分支 ,如果a不等于1,2,3就执行else里的内容

当然也可以把最后一个else不要

#include<stdio.h>
int main()
{
    int a;
    scanf("%d",&a);
    if(a==1)
    {
        printf("1");
    }
    else if(a==2)
    {
        printf("2"):
    }
    else if(a==3)
    {
        printf("3");
    }
    else
    {
        printf("没得");
    }
}

分支语句中也可以嵌套分支比如:

int main()
{ 
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a<=10)
{
    if(b<=10)   
    {
        if(c<=10)
        {
        printf("a,b,c中全是小于等于10的值");
        }
        else
        {
        pintf("a,b,c中有2个小于等于10的值");
        }
    }
    else
    {
    printf("a,b,c中有1个上小于等于十的值");
    }
}
else
{
    printf("a,b,c中一个以上大于等于10的值");
}
}

五.switch语句

switch语句也是一种分支语句,常常用于多分支情况:

比如

输入1,输出星期一

输入2,输出星期二

输入3,输出星期三

输入4,输出星期四

输入5,输出星期五

输入6,输出星期六

输入7,输出星期七

switch语句一般是从匹配case的地方开始执行

break;是用来跳出语句的如果没有break;则会以只从开始执行的语句执行下去知道遇到break;或者执行完

#include<stdio.h>
int main()
{
    int day=0;
    scanf("%d",&day);
    switch(day)
    {
        case 1:
            printf("星期一\n");
            break;
       case 2:
            printf("星期二\n");
            break;
       case 3:
            printf("星期三\n");
            break;
       case 4:
            printf("星期四\n");
            break;
       case 5:
            printf("星期五\n");
            break;
       case 6:
            printf("星期六\n");
            break;
       case 7:
            printf("星期七\n");
            break;
    }
}

如果表达式的值与所有的case标签的值都不匹配也就是所有的语句都被条过而已,但是如果你并不想忽略不匹配所有标签的表达式的值可以再语句列表中增加一条defaul语句当switch表达式不匹配所有的case标签的值是这个default就会执行所以每个switch语句中只能出现一条default但是他可以出现在switch里的列表的任何位置,switch允许嵌套

#include<stdio.h>
int main()
{
    int n=1;
    int m=2;
    switch(n)
    {
    case 1:
        m++;
    case 2:
        n++;
    case 3:
        switch(n)
        {
        case 1:
            n++;
        case 2:
            m++;
            n++;
            break;
        }
    case 4:
        m++;
        break;
    default:
        break;
    }
    printf("m=%d,n=%d\n",m,n);
}

    

 二.循环

一.while  (do while)break :

如果要打印1-100的数字用可以用while来执行流程是这样的先判断成立进去执行里面的代码执行完之后就回到while这继续判断如果成立继续进去不成立跳过这端语句

#include<stdio.h>
int main()
{
    int i=1;
    while(i<=100)
    {
    printf("%d ",i);
    i=i+1;
    }
}

在while语句中的break的使用:下面的带码只会打印1,2,3,4因为到5时就会到if里的break那退出了后面的内容不会执行

#include<stdio.h>
int main()
{
    int i=1;
    while(i<=10)
    {
    if(i==5)
    {
      break;
    }
    printf("%d ",i);
    i=i+1;
    }
}

continue的介绍:执行到continue里就会直接结束本次循环回到while里重新判断后面的代码依然不会执行,这个成是进入之后i的值先加1后判断i==5,直到i等于5进入执行continue后会不执行后面的代码直接回到循环判断那所只打印2,3,4,6,7,8,9,10

#include<stdio.h>
int main()
{
    int i=1;
    while(i<=10)
    {
        i=i+1;
        if(i==5)
        {
            continue;
        }
        printf("%d ",i);
    }
}

do while是先进入执行执行完了再判断如果成立就继续执行否则直接退出循环,执行流程是这样的:

#include<stdio.h>
int main()
{
    int i=1;
    do
    {
        printf("%d ",i);
        i++;
    }while(i<=10);
}

break和continue在do while的应用:这里是打印了1,2,3,4,6,7,8,9因为print在break前面所已有9

#include<stdio.h>
int main()
{
    int i=1;
    do
    {
    if(i==5)
        continue;
    printf("%d",i);
    if(i==9)
        break;
    }while(i<=10);
}

二.for函数:

for(表达式1;表达式2;表达式3),表达式1为初始化部分用于初始化循环变量的,表达式2是判断条件部分用于判断循环时候终止,表达式3为调整部分,用于循环条件的调整,使用for在屏幕上打印1-10的数字是这样写的,执行流程是这样的。

#include<stdio.h>
int main()
{
    int i=0;
    for(i=1;i<=10;i++)
    {
    printf("%d ",i);
    }
}

对比for循环和while循环:可以发现while循环中依然存在循环的三个必须条件,但是由于风格问题使得三个部分可能很偏离较远查找修改就不够集中和方便所以,for循环的风格更胜一筹;for使用的频率也最高

#include<stdio.h>
int main()
{
    int i=0;
    i=1;//功能相同
    while(i<=10)//判断部分
    {
        printf("hehe\n");
        i=i+1;//调整部分
    }
    //使用for实现了相同的功能
    for(i=1;i<=10;i++)
    {
    printf("hehe\n");
    }
}

break和continue在for循环中的使用:他们的意义和在while循环中是一样的,但是因为for的写法不同所以使用中和while中使用还是有区别的,break是打印到5就结束了,continue是不打印5其他的都打印

#include<stdio.h>
int main()
{
    int i=0;
    for(i=1;i<=10;i++)
    {
        if(i==5)
            break;
        printf("%d ",i);
    }
}
#include<stdio.h>
int main()
{
    int i=0;
    for(i=1;i<=10;i++)
    {
    if(i==5)
       continue;
    printf("%d ",i);
    }
}

for循环的初始化部分,判断,调整部分是可以省略的但是不建议初学时省略,容易导致问题

三.goto语句:

C语言提供了可以随意滥用的goto语句和标记跳转标号,goto语句最常用在嵌套结构过深的程序中,如依次跳出多层循环,跳出多层循环使用break是达不到目的,他只能从最内层循环退到上一层的循环,下面使用goto语句的一个例子,一个关机程序

#include<stdio.h>
#include<stdlib.h>
int main()
{
    char input[10]={0};
    system("shutdown -s -t 60");
again:
    printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
    scanf("%s",input);
    if(0==strcmp(input,"我是猪"))
   {
    system("shutdown -a");
    }
    else
    {
    goto again;
    }
}

四.猜数字:

是用do while来反复游玩 switchcase选择是玩还是不玩  if来判断输入  rand和srand随机生成数后余100就得出了100以内的随机数

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
    int input = 0,random_num = rand() % 100 + 1;
    srand((unsigned)time(NULL));
    do
    {
        printf("**********************\n");
        printf("******  1.play   *****\n");
        printf("******  0.exit   *****\n");
        printf("**********************\n");
        printf("请选择>:");
        scanf("%d", &input);
        switch (input)
        {
        case 1:
            input = 0;
            while (1)
            {
                printf("请输入猜的数字>:");
                scanf("%d", &input);
                if (input > random_num)
                {
                    printf("猜大了\n");
                }
                else if (input < random_num)
                {
                    printf("猜小了\n");
                }
                else
                {
                    printf("恭喜你,猜对了\n");
                    break;
                }
            }
        case 0:
            break;
        default:
            printf("选择错误,请重新输入!\n");
            break;
           
        }
    } while (input);
}













 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/484055.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows下同时安装多个版本的JDK并配置环境变量

说明&#xff1a;这里安装的JDK版本为1.8和17 JDK下载 官方地址: https://www.oracle.com/java/ 我这里下载的是exe安装包 安装这里就不阐述了&#xff0c;安装方法都是一样的。 系统环境变量配置 1、首先新建JDK1.8和17的JAVA_HOME&#xff0c;他们的变量名区分开&#xff…

MySQL进阶——索引

索引 索引概述 索引结构 索引分类 索引语法 SQL性能分析 索引使用 索引设计原则 概述 介绍 索引&#xff08;Index&#xff09;是帮助MySQL高效获取数据的数据结构&#xff08;有序&#xff09;。 在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结…

Redis 教程系列之缓存雪崩,击穿,穿透(十四)

一,缓存雪崩 当大量缓存数据在同一时间过期(失效)或者 Redis 故障宕机时,如果此时有大量的用户请求,都无法在 Redis 中处理,于是全部请求都直接访问数据库,导致数据库的压力骤增,严重的会造成数据库宕机,从而形成一系列连锁反应,造成整个系统崩溃,这就是缓存雪崩的问…

AJAX介绍使用案例

文章目录 一、AJAX概念二、AJAX快速入门1、编写AjaxServlet&#xff0c;并使用response输出字符&#xff08;后台代码&#xff09;2、创建XMLHttpRequest对象&#xff1a;用于和服务器交换数据 & 3、向服务器发送请求 & 4、获取服务器响应数据 三、案例-验证用户是否存…

ubuntu上一款好用的串口工具screen

看名字&#xff0c;你猜他是什么&#xff1f; 安装 sudo apt install screen 然后将USB串口接到虚拟机&#xff0c;执行dmesg命令查看串口设备名&#xff1a; 测试&#xff1a; sudo screen /dev/ttyUSB0 115200确实很简单。

【C++】list类(使用方法和模拟实现)

一、标准库中的list类 1.1 list类介绍 1.2 list的常用接口 1.2.1 常用的构造函数 1.2.2 容量操作接口 &#xff08;1&#xff09;size &#xff08;2&#xff09;empty &#xff08;3&#xff09;resize 1.2.3 访问和遍历 &#xff08;1&#xff09;迭代器 &#xff…

DC-DC教程,真不错!

大家好&#xff0c;我是记得诚。 交流群读者分享了一个DC-DC的文档&#xff0c;内容还挺好&#xff0c;分享给大家。 文章原链接&#xff1a;DC-DC教程&#xff0c;真不错&#xff01;&#xff0c;可以获取完整的文档。 推荐阅读&#xff1a; 硬件工程师如何零基础入门&#…

数据结构:堆和二叉树遍历

堆的特征 1.堆是一个完全二叉树 2.堆分为大堆和小堆。大堆&#xff1a;左右节点都小于根节点 小堆&#xff1a;左右节点都大于根节点 堆的应用&#xff1a;堆排序&#xff0c;topk问题 堆排序 堆排序的思路&#xff1a; 1.升序排序&#xff0c;建小堆。堆顶就是这个堆最小…

【算法】五道大学生必备平价精致小众松弛感宝藏好题平替

【算法】五道大学生必备平价精致小众松弛感宝藏好题平替x ​ 刚学了Java就想用来写算法题的我&#xff1a; ​ 借着几道算法题&#xff0c;熟悉一下Java中Stack类&#xff0c;String类的用法。 925.长按键入 原题链接&#xff1a; 925. 长按键入 ​ 用来测试与练习String类自带…

php闭包应用

laravel 路由 bingTo 把路由URL映射到匿名回调函数上&#xff0c;框架会把匿名回调函数绑定到应用对象上&#xff0c;这样在匿名函数中就可以使用$this关键字引用重要的应用对象。Illuminate\Support\Traits\Macroable的__call方法。 自己写一个简单的demo: <?php <?…

遍历目录下的某个文件并删除

目录 需求 编写过程 演示 需求 大家在学习时可能会有一个自己的小目录&#xff0c;里面放着各种奇葩代码&#xff0c;有天突然发现&#xff0c;没有空间了&#xff0c;这时候发现遗留了很多的可执行文件&#xff0c;大大的浪费了我们的空间&#xff0c;但是由于层数深&#…

基于SSM的宠物领养平台的设计与实现

基于SSM的宠物领养平台的设计与实现 获取源码——》公主号&#xff1a;计算机专业毕设大全 获取源码——》公主号&#xff1a;计算机专业毕设大全

React腳手架已經創建好了,想使用Vite作為開發依賴

使用Vite作為開發依賴 安裝VITE配置VITE配置文件簡單的VITE配置項更改package.json中的scripts在根目錄中添加index.html現在可以瀏覽你的頁面了 安裝VITE 首先&#xff0c;在現有的React項目中安裝VITE npm install vite --save-dev || yarn add vite --dev配置VITE配置文件 …

JavaEE--小Demo--数据库建立

目录 实验准备 本次所要新建的文件 实验步骤 step1-demo.sql 1.在resources文件夹下新建demo.sql文件 2.打开此目录&#xff0c;并运行命令提示符 3.打开数据库mysql -uroot -p 4.创建数据库create database demo; 5.使用数据库use demo; 6.导入数据source demo.sql;…

Prometheus+Grafana 监控Tongweb7(by lqw)

文章目录 1.准备工作2.Tongweb7部署3.Prometheus部署4.上传jar包并配置Tongweb75.Prometheus配置6.安装和配置Grafana 1.准备工作 本次参考&#xff1a;Prometheus监控Tongweb容器 1.使用虚拟机ip&#xff1a;192.168.10.51&#xff08;tongweb&#xff09;&#xff0c;192.1…

算法系列--哈希表

&#x1f495;"白昼之光&#xff0c;岂知夜色之深。"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;算法系列–哈希表 今天为大家带来的是算法系列--哈希表 1.两数之和 链接: https://leetcode.cn/problems/two-sum/submissions/515941642/ 分析…

《C++ Primer 第五版 中文版》第12章 动态内存【阅读笔记 + 个人思考】

《C Primer 第五版 中文版》第12章 动态内存【阅读笔记 个人思考】 12.1 动态内存与智能指针12.1.1 shared_ptr类 静态内存包括&#xff1a;初始化只读数据段&#xff0c;初始化读写数据段&#xff0c;未初始化数据和常量数据段。 详细在下面博客总结&#xff1a; Linux系统下…

吴恩达机器学习-可选实验室:Softmax函数

文章目录 CostTensorflow稀疏类别交叉熵或类别交叉熵祝贺 在这个实验室里&#xff0c;我们将探索softmax函数。当解决多类分类问题时&#xff0c;该函数用于Softmax回归和神经网络。 import numpy as np import matplotlib.pyplot as plt plt.style.use(./deeplearning.mplstyl…

【数据结构】顺序表和链表详解顺序表和链表的实现

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;数据结构_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.线性表 1.1 顺序表 1.1.1 概念及结构 1.1.2 静态顺序表 1.1.3 动态顺序表 1.2 链表 1.2.1 链表的概念及结构 1.2.2 链表…

力扣HOT100 - 1. 两数之和

解题思路&#xff1a; 解法一&#xff1a;暴力 class Solution {public int[] twoSum(int[] nums, int target) {int n nums.length;for (int i 0; i < n; i)for (int j i 1; j < n; j) {if (target nums[i] nums[j])return new int[] { i, j };}return new int[…