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

分支循环讲解

一、 分支结构:程序的“分叉路口”

分支结构允许程序根据条件的真假执行不同的代码块。

1. if 语句

if句是最常用的分支语句。在 C 语言中,0 表示假,非 0 表示真

基本形式:如果表达式为真,执行语句 。

if...else:当满足条件时执行语句 1,不满足时执行语句 2 。

嵌套 if:在else子句中可以嵌套另一个if,形成多重判断(如年龄阶段划分) 。

悬空 else 问题:如果有多个ifelseelse总是跟最接近if匹配。建议始终使用{}大括号来明确逻辑范围,增加代码可读性 。

2. 关系、逻辑与条件操作

  • 关系操作符:包括>,<,>=,<=,==(相等),!=(不相等) 。

    • 易错点:不要混淆==(判断) 和=(赋值)。为了安全,可以将变量写在等号右边,如if (3 == x)

  • 逻辑操作符

    • !:逻辑取反 。

      &&:逻辑与(两侧均为真才为真)。存在短路特性:若左侧为假,则不再计算右侧 。

    • ||:逻辑或(一侧为真即为真)。存在短路特性:若左侧为真,则不再计算右侧 。

  • 条件操作符(三目操作符)exp1 ? exp2 : exp3。若exp1为真,结果为exp2;否则为exp3

3. switch 语句

当判断条件有多个固定结果时,switch比多重if...else if更清晰 。

  • expression必须是整型表达式case后必须是整型常量表达式

  • break 的重要性:每个case执行完通常需加break跳出,否则代码会发生“穿透”,继续执行后续case

  • default 子句:处理所有case都不匹配的情况


二、 循环结构:让程序“不知疲倦”

1. while 循环

先判断,后执行。只要表达式为真,就不断循环 。

2. for 循环(最常用)

语法形式:for(表达式1; 表达式2; 表达式3)

  • 表达式 1:初始化循环变量 。

  • 表达式 2:判断循环结束条件 。

  • 表达式 3:调整循环变量 。 相比whilefor循环的初始化、判断、调整三个部分非常集中,更易于维护 。

3. do-while 循环

先执行一次循环体,再判断条件。这意味着循环体至少执行一次

4. break 与 continue

  • break:用于永久终止循环,跳出当前循环体 。

  • continue:跳过本次循环中continue后面的代码,直接进入下一次循环的判断(或调整部分) 。


三、 实战:猜数字游戏

掌握了分支与循环,我们就可以实现一个具有交互性的“猜数字游戏” 。

1. 核心技术:随机数生成

  • rand():生成 0~32767 的伪随机数,需包含<stdlib.h>

  • srand():设置随机数种子。如果种子不变,每次生成的随机数列就相同 。

  • time():通常使用系统时间(不断变化的量)作为种子:srand((unsigned int)time(NULL));,需包含<time.h>

  • 设置范围:生成 1~100 的随机数公式为rand() % 100 + 1

2. 游戏逻辑结构

游戏通常结合do...while循环(用于菜单展示)和while循环(用于游戏过程中的多次猜测判断)。

C

// 伪代码思路 do { menu(); // 打印菜单 scanf("%d", &input); switch(input) { case 1: game(); // 进入游戏逻辑:随机数生成 + 循环判断大小直到猜对 break; case 0: printf("退出游戏\n"); break; default: printf("选择错误,重新选择\n"); break; } } while(input);

3. 进阶功能

可以利用循环变量添加“次数限制”,例如限制玩家只有 5 次机会,如果次数耗尽未猜对,则提示游戏失败 。


结语

分支与循环是 C 语言逻辑构建的基石。通过合理嵌套这些结构,并结合操作符的巧妙运用,你可以写出逻辑严密且功能强大的程序。希望这篇总结能帮你夯实基础!

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

相关文章:

  • 保姆级教程:在Ubuntu 22.04上为RTX 4090工作站配置AI开发环境(含CUDA 11.8、cuDNN 8.9.6避坑指南)
  • AUTOSAR BMS开发避坑指南:从PRD到硬件选型,如何避免需求规格书里的那些‘坑’?
  • Python的__subclasshook__方法:抽象基类的动态子类检查
  • 构建企业级高可用HR系统:Sentrifugo开源HRMS的生产环境部署指南
  • 企业级定制化项目自动化测试框架
  • 2026年银川高端系统门窗选购指南:派雅门窗与行业主流品牌深度横评 - 精选优质企业推荐官
  • Java 25密封类模式实战:20年老炮儿压箱底的「密封域建模七律」,仅限首批200名开发者获取的架构审查Checklist
  • 极空间NAS开启SSH:解锁底层权限,从存储盒变成全能私有服务器
  • OpCore Simplify完整指南:如何3小时搞定黑苹果EFI配置
  • 学Simulink——基于Simulink的ZVS/ZCS软开关无线充电逆变器控制
  • 单词的音节划分规则,一个音节包含几种形式
  • 2026年目前雷达塔源头厂家,雷达塔/雷达塔信号塔/雷达塔监测塔,雷达塔实力厂家口碑推荐 - 品牌推荐师
  • 智能吹扫装置:工业清洁的未来解决方案
  • 如何5分钟快速搭建微信机器人:WechatBot完整入门教程
  • xdotool终极指南:Linux桌面自动化的完整解决方案
  • Cursor Pro破解工具完整指南:三步激活方案实现永久免费使用
  • 从周杰伦到久石让:拆解流行与影视配乐中,大三和弦与小三和弦的‘情绪开关’实战用法
  • STC/STM32单片机做R2R DAC?小心这个‘隐形杀手’让你的精度大打折扣
  • 50万节点Abaqus模型如何导入Unity?我用Python解析INP文件重构了数字孪生体
  • 3分钟精通Linux键盘音效软件Keysound:让你的打字变成钢琴演奏
  • ChanlunX缠论插件:通达信上的专业缠论分析终极指南
  • NVIDIA Profile Inspector终极教程:解锁显卡隐藏性能的完整指南
  • 九三架构及具体应用案例
  • 保姆级教程:解决Ubuntu 20.04在VMware 16里无法复制粘贴和全屏的问题(附共享文件夹设置)
  • 保姆级避坑指南:在树莓派4B上为Pixhawk搭建MAVROS通信环境(Ubuntu 20.04 + ROS Noetic)
  • ChanlunX缠论插件:如何让通达信用户5分钟实现专业级技术分析
  • UniExtract2:500+格式全能解压神器,告别格式困扰的终极解决方案
  • 2026冷库安装公司推荐:精选优质服务商,打造高效节能冷链新标杆 - 品牌2025
  • 终极内存故障排查指南:Memtest86+ 完整实战方案
  • KMS激活神器:3分钟免费激活Windows和Office的终极解决方案