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

C语言第3讲:分支和循环

大家好!这篇把分支和循环上下两讲全部整合,从基础语法到实战猜数字小游戏,一篇吃透 C 语言最核心的逻辑结构,新手必看、必练、必收藏!


📑 完整目录

  1. if 语句
  2. 关系操作符
  3. 条件操作符
  4. 逻辑操作符:&&、||、!
  5. switch 语句
  6. while 循环
  7. for 循环
  8. do-while 循环
  9. break 和 continue 语句
  10. 循环的嵌套
  11. goto 语句
  12. 随机数生成(rand/srand/time)
  13. 猜数字游戏(基础版 + 进阶版)
  14. 全套知识点总结

1. if 语句(最常用分支)

1.1 基础 if

if(表达式) 语句;
  • 非 0 为真,执行语句;0 为假,不执行。

1.2 if…else… 二选一

if(表达式) 语句1; else 语句2;

1.3 多条语句必须用{}

if/else 默认只控制一条语句,多语句必须加大括号。

1.4 嵌套 if(多条件判断)

if(条件1) ... else if(条件2) ... else ...

1.5 悬空 else 问题

else 永远匹配最近的 if,加{}可避免歧义。


2. 关系操作符(比较用)

  • ><>=<===!=
  • 结果:真 = 1,假 = 0
  • 易错点:
    • 不要把==写成=
    • 不要写18<=age<=36,应写age>=18 && age<=36

3. 条件操作符(三目运算符)

格式:表达式1 ? 表达式2 : 表达式3

  • 表达式 1 为真 → 执行表达式 2
  • 表达式 1 为假 → 执行表达式 3
  • 简化 if…else…,代码更简洁。

4. 逻辑操作符(组合条件)

  • !逻辑非(真↔假)
  • &&逻辑与(两边都真才真)
  • ||逻辑或(一边真就真)

短路特性

  • &&:左边为假,右边不执行
  • ||:左边为真,右边不执行

5. switch 语句(多分支)

switch(整型表达式) { case 常量值: 语句; break; default: 语句; break; }
  • 必须是整型表达式
  • 每个 case 一般要加break,否则会穿透
  • default处理意外情况

6. while 循环

while(表达式) { 循环体; }
  • 先判断,再执行
  • 条件为假直接退出

7. for 循环(最常用)

for(初始化; 判断; 调整) { 循环体; }
  • 初始化只执行 1 次
  • 判断→执行→调整→再判断
  • 结构紧凑,便于维护

8. do-while 循环

do { 循环体; }while(表达式);
  • 先执行,后判断
  • 循环体至少执行 1 次

9. break 和 continue

  • break:永久终止本层循环 /switch
  • continue:跳过本次循环剩余代码,直接进入下一次
    • while:跳到判断
    • for:跳到调整(i++)

10. 循环嵌套

一层循环控制范围,内层循环做判断。经典案例:100~200 之间的素数


11. goto 语句

  • 同一函数内跳转到标号
  • 多层循环快速退出很方便
  • 日常尽量少用,避免逻辑混乱

12. 随机数生成(猜数字必备)

12.1 rand () —— 生成伪随机数

int rand(void);

头文件:stdlib.h范围:0 ~ 32767

12.2 srand () —— 设置随机种子

void srand(unsigned int seed);

12.3 time () —— 用时间做动态种子

srand((unsigned int)time(NULL));

头文件:time.h注意:整个程序只调用 1 次!

12.4 随机数范围公式

  • 1~100:rand()%100 + 1
  • a~b:a + rand()%(b-a+1)

13. 猜数字游戏(完整代码)

13.1 基础版

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

13.2 进阶版(限制 5 次机会)

#include <stdio.h> #include <stdlib.h> #include <time.h> void game() { int r = rand()%100+1; int guess = 0; int count = 5; while(count) { printf("\n你还有 %d 次机会\n", count); printf("请猜数字:"); scanf("%d", &guess); if(guess < r) printf("猜小了\n"); else if(guess > r) printf("猜大了\n"); else { printf("恭喜你,猜对了!\n"); break; } count--; } if(count == 0) printf("你失败了,正确答案是:%d\n", r); } void menu() { printf("***********************\n"); printf("****** 1. play *****\n"); printf("****** 0. exit *****\n"); printf("***********************\n"); } int main() { int input = 0; srand((unsigned int)time(NULL)); do { menu(); printf("请选择:"); scanf("%d", &input); switch(input) { case 1: game(); break; case 0: printf("游戏结束\n"); break; default: printf("选择错误,请重新选择\n"); break; } } while(input); return 0; }

14. 全套知识点总结

  1. 分支:if /if-else/switch 处理多路径选择
  2. 循环:while /for/do-while 处理重复逻辑
  3. 跳转:break 退出、continue 跳过、goto 自由跳转
  4. 实战:随机数 + 分支 + 循环 = 可写小游戏
  5. 规范:多用{}、函数拆分、代码清晰易读

✨ 结尾鼓励

分支与循环是 C 语言真正的入门门槛,把这篇内容看懂、代码敲会,你就已经具备了写小程序、小游戏的能力!编程没有捷径,多敲多练才是王道~

对你有帮助的话,欢迎点赞、收藏、关注,持续更新 C 语言全套精讲!

http://www.jsqmd.com/news/774665/

相关文章:

  • Kimi K2.5智能设备两周深度体验与性能评测
  • 抖音下载器:免费快速批量下载抖音视频的终极解决方案
  • 2026年质量好的恒压供水水泵/辽宁水冷式水泵优质厂家汇总推荐 - 行业平台推荐
  • 开源智能仪表盘OpenJarvisDashboard:开发者效率工具全解析
  • 别再手动算线宽了!用这个Matlab函数快速搞定微带线设计(附ADS对比验证)
  • 量子计算与高性能计算融合架构解析
  • Twinny:免费离线的AI代码补全工具部署与调优指南
  • 自动驾驶仿真训练平台SIMSCALE的技术解析与应用实践
  • 多核处理器在嵌入式与通信领域的优化实践
  • FedAvg联邦学习实战避坑指南:数据非独立同分布(Non-IID)到底有多坑?
  • 2026年质量好的联合板木箱/木箱/工业设备包装木箱口碑好的厂家推荐 - 行业平台推荐
  • YOLOv8改进 | 检测头篇 |最新HyCTAS模型提出SAttention(自研轻量化检测头 -> 适用分割、Pose、目标检测)
  • 为AI Agent集成实时搜索能力:基于Council Tavily Search的实践指南
  • 2026年评价高的深井潜水泵/鱼塘潜水泵口碑好的厂家推荐 - 品牌宣传支持者
  • MAX9705 Class D音频放大器低EMI设计解析
  • Windows微信群发工具:告别手动发送,一键批量处理好友消息
  • Touchpoint:基于无障碍API的跨平台桌面自动化Python库详解
  • 【Android】ES文件管理器,此版不提示安装HMS Core。
  • commitlint多场景配置指南:Angular/Conventional/Lerna全支持
  • 功率电子技术:提升能源效率的关键
  • 2026年防火阀厂家推荐-通风工程与管道阀门厂家优选:浙江日鑫自动化系统有限公司 - 栗子测评
  • 2026年比较好的深井水泵/水冷式水泵公司哪家好 - 品牌宣传支持者
  • Karakeep 2026-2031技术愿景:打造AI驱动的一站式个人知识管理平台
  • Python 爬虫高级实战:分布式爬虫集群架构与消息队列调度
  • 基于Godot与C#的开源进化模拟游戏Thrive开发全解析
  • Python自动化监控与推送系统:从B站数据采集到多通道消息通知的实战解析
  • 别再只ifconfig了!深入Linux网络驱动:PHY寄存器访问与状态监控全解析
  • RISC-V向量扩展VMXDOTP技术解析与AI加速应用
  • Docker 29.4.3 发布:修复 32 位程序崩溃漏洞及守护进程配置更新问题
  • vscode-dark-islands的扩展突出按钮:色彩与悬停效果