庖丁解C2.0

简介: 如果所有case语句都不符合要求,就要多设置一个入口处理数据就要用default,default位置可以放在任何位置但是一般都放在最以后(先处理正常的,再处理其他的)

C语言是【结构化的】程序设计语言


1.顺序结构


2.分支(选择)结构 if switch


3.循环结构 while for do while goto


3e48c211e05f4fe7a2b742d7ed8d22d2.png


1.什么叫语句?


C语言可分为以下五类


1.表达式语句2.函数调用语句3.控制语句4.复合语句5.空语句


我们主要讲以下 控制语句


控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。可分为以下三类:


1. 条件判断语句也叫分支语句:if语句、switch语句;


2. 循环执行语句:do while语句、while语句、for语句;


3. 转向语句:break语句、goto语句、continue语句、return语句。


2.分支语句(选择结构)


2.1 if语句


语法结构:


/

if(表达式)
 语句1;
//多语句时要用{} 不然只执行一行代码
else    语句2;
//多分支    
if(表达式1)    
语句1;
else if(表达式2)  
语句2;
else    语句3;


注意if里的 数据判断等不等为==       【判断语句里 建议把常量放在左边!】


int num = 1;
if(5 == num)
{
    printf("hehe\n");
}


/

多种情况的话要利用   ||或  &&并


C语言中0表示假非零表示真


例题,下列代码输出结果为?


#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
            printf("hehe\n");
    else
        printf("haha\n");
    return 0;
}


答案是,什么都不输出!


else总是跟离得最近的if一起构成if else


所以事实上这个是这样的


​​​​​​#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
   {
        if(b == 2)
       {
            printf("hehe\n");
       }
   }
    else
   {
         printf("haha\n");
   }       
    return 0;
}


综上所述,代码风格很重要,好的代码风格自己和别人看着都舒服


1. 判断一个数是否为奇数 2. 输出1-100之间的奇数


2.2 switch语句


常常用于多分支的情况,写成 if...else if ...else if 的形式太复杂


switch(整型表达式)        一定要为整形
{
   语句项;
}


2.21 在switch语句中的 break


在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支


#include <stdio.h>
int main()
{
    int day = 0;
    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;
   }
    return 0;
}


2.2.2 default子句


如果所有case语句都不符合要求,就要多设置一个入口处理数据就要用default


default位置可以放在任何位置但是一般都放在最以后(先处理正常的,再处理其他的)


switch里记得每个判断都要加break哦~


switch语句可以嵌套的(判断以下代码运行结果)


#include <stdio.h>
int main()
{
    int n = 1;
    int m = 2;
    switch (n)
   {
    case 1:
            m++;
    case 2:
            n++;
    case 3:
            switch (n)
           {                //switch允许嵌套使用
             case 1:
                    n++;
             case 2:
                    m++;
                    n++;
                    break;
           }
    case 4:
            m++;
            break;
    default:
            break;
   }
    printf("m = %d, n = %d\n", m, n);
    return 0;
}
答案是m = 5, n = 3


3. 循环语句


while         for         do while


3.1 while


这个循环书写方式跟if很像括号里都放判断条件,为真进行语句,然后再返回判断直到为假后退出


比如:在屏幕上打印1-10的数字


#include <stdio.h>
int main()
{
 int i = 1;
 while(i<=10)    //判断,直至条件不成立
 {
 printf("%d ", i);
 i = i+1;
 }
 return 0;
}


3.1.1 while语句中的break和continue


在循环中只要遇到break,就停止后期的所有的循环,直接终止循环


当我们想在遇到某一句代码时 退出 循环就用break


while中的break是用于永久终止循环的


#include <stdio.h>
int main()
{
 int i = 1;
 while(i<=10)
 {
 if(i == 5)
 break;        //条件满足时提前结束循环
printf("%d ", i);
 i = i+1;
 }
 return 0;
}


当我们想在遇到某一句代码时想 跳过 此次循环时用continue        (continue后面的代码不执行)


continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,


而直接跳转到while语句的判断部分。进行下一次循环的入口判断。


getchar和putchar 只读取或输出一个字符返回值为ASCⅡ码对应的整形读取错误时返回EOF(-1)


#include <stdio.h>
int main()
{
 int ch = 0;    //getchar返回值为整形!
 while ((ch = getchar()) != EOF)    //oj题上有多组数入就要用这个方式
       putchar(ch);
    return 0;
}


按Ctrl+z 回车可以返回一个EOF (end of file)


有时候一下没法,多按几次


scanf跟getchar都是从缓存区里取东西人手动从键盘输入东西进缓存


7d269efe1fee4f859714a10dc77a4cb8.png


5b1aefe822f24e64820d3e5c1aa0d580.png


第一次输入确认回车=\n是不会被scanf拿走的还是停留在缓存区里但是后面的getchar遇到会拿走\n


所以为了避免这种麻烦就用while多组输入来代替


6a015a700a8e4a12bfcee84032edf008.png


文件的末尾是EOF数组的末尾是\n


3.2 for


前面了解了while循环


  int i = 0;                //变量初始化
  while (i <= 10)           //判断
  {
    printf("%d", i);        
    i++;                  //调整
  }


由上代码可看出while的元素很分散而且每变其中一个整个循环都会改变,所以不够稳定


因此产生了for循环


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


表达式1 表达式1为初始化部分,用于初始化循环变量的。


表达式2 表达式2为条件判断部分,用于判断循环时候终止。


表达式3 表达式3为调整部分,用于循环条件的调整。


(跟前面while里的可以对应)


3.2.1for循环里也有break和continue的说法跟上面的while里的是一样的


但是for里的continue是退出此次循环来到判断部分,而while循环里是来到判断部分


3.2.2 for语句的循环控制变量


建议:     1. 不可在for 循环体内(代码块内)修改循环变量,防止 for 循环失去控制。


               2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。

for循环中的初始化部分,判断部分,调整部分是 可以省略 的,但是不建议初学时省略,容易导致问题,【判断省略掉了的话认为判断恒为真】


使用多余一个变量控制循环


int x, y;
    for (x = 0, y = 0; x<2 && y<5; ++x, y++)
   {
        printf("hehe\n");
   } 


以上就是今天的全部内容啦!


制作不易!        勿忘三连!

相关文章
|
2天前
|
人工智能 JavaScript Linux
【Claude Code 全攻略】终端AI编程助手从入门到进阶(2026最新版)
Claude Code是Anthropic推出的终端原生AI编程助手,支持40+语言、200k超长上下文,无需切换IDE即可实现代码生成、调试、项目导航与自动化任务。本文详解其安装配置、四大核心功能及进阶技巧,助你全面提升开发效率,搭配GitHub Copilot使用更佳。
|
3天前
|
存储 人工智能 自然语言处理
OpenSpec技术规范+实例应用
OpenSpec 是面向 AI 智能体的轻量级规范驱动开发框架,通过“提案-审查-实施-归档”工作流,解决 AI 编程中的需求偏移与不可预测性问题。它以机器可读的规范为“单一真相源”,将模糊提示转化为可落地的工程实践,助力开发者高效构建稳定、可审计的生产级系统,实现从“凭感觉聊天”到“按规范开发”的跃迁。
673 11
|
8天前
|
存储 JavaScript 前端开发
JavaScript基础
本节讲解JavaScript基础核心知识:涵盖值类型与引用类型区别、typeof检测类型及局限性、===与==差异及应用场景、内置函数与对象、原型链五规则、属性查找机制、instanceof原理,以及this指向和箭头函数中this的绑定时机。重点突出类型判断、原型继承与this机制,助力深入理解JS面向对象机制。(238字)
|
7天前
|
云安全 人工智能 安全
阿里云2026云上安全健康体检正式开启
新年启程,来为云上环境做一次“深度体检”
1624 6
|
3天前
|
消息中间件 人工智能 Kubernetes
阿里云云原生应用平台岗位急招,加入我们,打造 AI 最强基础设施
云原生应用平台作为中国最大云计算公司的基石,现全面转向 AI,打造 AI 时代最强基础设施。寻找热爱技术、具备工程极致追求的架构师、极客与算法专家,共同重构计算、定义未来。杭州、北京、深圳、上海热招中,让我们一起在云端,重构 AI 的未来。
|
5天前
|
IDE 开发工具 C语言
【2026最新】VS2026下载安装使用保姆级教程(附安装包+图文步骤)
Visual Studio 2026是微软推出的最新Windows专属IDE,启动更快、内存占用更低,支持C++、Python等开发。推荐免费的Community版,安装简便,适合初学者与个人开发者使用。
711 11
|
8天前
|
缓存 算法 关系型数据库
深入浅出分布式 ID 生成方案:从原理到业界主流实现
本文深入探讨分布式ID的生成原理与主流解决方案,解析百度UidGenerator、滴滴TinyID及美团Leaf的核心设计,涵盖Snowflake算法、号段模式与双Buffer优化,助你掌握高并发下全局唯一ID的实现精髓。
376 160
|
8天前
|
人工智能 自然语言处理 API
n8n:流程自动化、智能化利器
流程自动化助你在重复的业务流程中节省时间,可通过自然语言直接创建工作流啦。
467 6
n8n:流程自动化、智能化利器
|
6天前
|
人工智能 Shell 开发工具
Claude Code 2.1.2超详细更新说明,小白也能10分钟上手
Claude Code 2.1.x重磅更新:Shift+Enter换行、Esc+Esc撤销、Ctrl+B后台运行,Skills技能系统全面升级,支持多语言、通配符权限与动态MCP检测,性能提升50%,迭代速度惊人,开发者效率暴涨!
Claude Code 2.1.2超详细更新说明,小白也能10分钟上手