C语言分支和循环

news2024/12/28 18:13:13

目录

一.分支

一.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);
}













 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java基础之关键字instanceof(七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

【C语言】linux内核pci_iomap

一、pci_iomap /** pci_iomap 是一个用于映射 PCI 设备的 BAR&#xff08;Base Address Register&#xff0c;基地址寄存器&#xff09;的函数。* 此函数返回指向内存映射 IO 的指针&#xff0c;用于直接访问 PCI 设备的内存或 I/O 空间。* * 参数:* dev - 指向pci_dev结构的指…

Android Jetpack Compose基础之组件的帧渲染

Android Jetpack Compose基础之组件的帧渲染 组合布局LayoutModifier示例 LayoutCompsable示例 绘制CanvasDrawModifierDrawModifier-drawWithContent示例 DrawModifier-drawBehind源码示例 DrawModifier-drawWithCache源码示例 拓展Modifier.graphicsLayer Android View 系统&…

0基础 三个月掌握C语言(13)-下

数据在内存中的存储 浮点数在内存中的存储 常见的浮点数&#xff1a;3.141592、1E10等 浮点数家族包括&#xff1a;float、double、long double类型 浮点数表示的范围&#xff1a;在float.h中定义 练习 关于&#xff08;float*)&n&#xff1a; &n&#xff1a;这是一…

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

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

Three.js 中的 OrbitControls 是一个用于控制相机围绕目标旋转以及缩放、平移等操作的控制器。

demo案例 Three.js 中的 OrbitControls 是一个用于控制相机围绕目标旋转以及缩放、平移等操作的控制器。下面是它的详细讲解&#xff1a; 构造函数: OrbitControls(object: Camera, domElement?: HTMLElement)object&#xff1a;THREE.Camera 实例&#xff0c;控制器将围绕…

LibFuzzer 基本使用

文章目录 前言环境搭建基础使用编写 fuzz target编译链接demo 测试 && 输出日志分析心脏滴血漏洞测试 提高代码覆盖率和测试速度指定种子语料库多核并行 Fuzz使用字典 参考 前言 相较于 AFL 来说&#xff0c;LibFuzzer 在单个进程内完成模糊测试&#xff0c;以此来避免…

Nacos部署(一)Linux部署Nacos2.3.x单机环境

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; Nacos部署&#xff08;一&#xff09;Linux部署Nacos2.3.x单机环境 ⏱️…

【NC20313】仪仗队

题目 仪仗队 欧拉函数&#xff0c;找规律 思路 这好像是一道非常简单的找规律问题&#xff0c;所以你从 1 1 1 开始枚举&#xff0c;计算出当 N i Ni Ni 时的结果 a n s i ans_i ansi​&#xff0c;所以你得出了以下结果&#xff1a; Nans10233549513621725837 令人失望…

招聘自媒体编辑岗位的人才测评方案

人才测评工具在招聘入职的方案&#xff0c;在线工具网根据自媒体岗位的特性和需求来分析&#xff0c;并制定自媒体主编的测评方案。 自媒体作为互联网时代的产物&#xff0c;自然也为我们带来了很多的福利&#xff0c;例如&#xff1a;海量的信息、快捷的传媒方式&#xff0c;那…

学习次模函数-第2章 定义

纵观本专著&#xff0c;我们认为及其幂集&#xff08;即&#xff0c; 所有子集的集合&#xff09;&#xff0c;其基数为。我们也考虑一个实值集函数&#xff0c;使得。 与凸函数的一般约定相反&#xff08;见附录A&#xff09;&#xff0c;我们不允许函数有无穷大的值。 次模分…

一文搞懂数据链路层

数据链路层 1. 简介2. MAC3. 以太网 1. 简介 &#xff08;1&#xff09;概念 链路(link)是一条无源的点到点的物理线路段&#xff0c;中间没有任何其他的交换结点。 数据链路(data link) 除了物理线路&#xff08;双绞线电缆、同轴电缆、光线等介质&#xff09;外&#xff0…

Java获取方法参数名称方案||SpringBoot配置顺序注解

一: Java获取方法参数名称的方法 普盲: getDeclaredMethods与getMethods的的区别 1、getMethods返回一个包含某些 Method 对象的数组&#xff0c;这些对象反映此 Class 对象所表示的类或接口的公共 member 方法。 2、getDeclaredMethods返回 Method 对象的一个数组&#xff0c…

STM32+ESP8266水墨屏天气时钟:简易多级菜单(数组查表法)

项目背景 本次的水墨屏幕项目需要做一个多级菜单的显示&#xff0c;所以写出来一起学习&#xff0c;本篇文章不单单适合于水墨屏&#xff0c;像0.96OLED屏幕也适用&#xff0c;区别就是修改显示函数。 设计思路 多级菜单的实现&#xff0c;一般有两种实现的方法 1.通过双向…

HTTPS协议的工作原理:保护网络通信的安全盾牌

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

力扣每日一题 2024/3/24 零钱兑换

题目描述 用例说明 思路讲解 动态规划五步法 第一步确定dp数组的含义&#xff1a;dp[i]为凑到金额为i所用最少的硬币数量 第二步确定动态规划方程&#xff1a;凑足金额为j-coins[i]所需最少的硬币个数为dp[j-coins[i]]&#xff0c;那凑足金额为j所用的最少硬币数为dp[j-coin…

【C语言】C语言实现扫雷三子棋

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;C语言_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.C语言实现三子棋 1.1 整体思路 1.2 游戏菜单的创建 1.3 游戏主体的实现 1.3.1 棋盘的初始化 1.3.2 打印棋盘 1.3.3 玩家下…

3分钟搞懂示波器测原副边波形

大家好&#xff0c;我是砖一。 今天分享一下如何用示波器测试原副边的波形&#xff0c;验证电源设计规格准确性。 一&#xff0c;试验目的 假设我们现在拿到的样品是属于开关电源类型的。 1&#xff0c;我们对于电源工程师设计出的一个开关电源样品测试原副边波形&#xff…

手撕算法-爬楼梯

描述 分析 一维动态规划。dp[i] dp[i-1] dp[i-2]; 初始状态&#xff1a;d[0] 0, dp[1] 1, dp[2] 2; 返回值:dp[n]; 代码 class Solution {public int climbStairs(int n) {if (n < 2)return n;int[] dp new int[n 1];dp[1] 1;dp[2] 2;for (int i 3; i < …

matlab批量读取目录下的文件的方法

批量处理可以提高效率&#xff0c;这里提供一个可以批量读取nc文件的代码&#xff1a; address C:\Users\Hello World!!\DESKTOP\TerraClimate_ppt\; % Get the list of files udir address; form *.nc; % Get the list of station names files GetFiles(udir,form); [n,p…