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

while 与 do-while 的底层逻辑对决-算平均数

需求: 让用户输入一系列的正整数,最后输入 -1 表示输入结束。然后程序计算出这些数字的平均数,输出输入的数字个数和平均数。

在这道题里,-1 并不是一个要参与计算的数据,它是一个“哨兵(Sentinel)”或者叫停止暗号。这就意味着,我们的代码逻辑必须像安检一样:在把数字放进 sum(总和)之前,必须先查验它是不是 -1。

while循环

while的核心哲学是:先检查,再放行。
因为要先检查,所以我们在到达 while 大门之前,手里必须先拿着一个数据

intmain(){intnumber;intsum=0;intcount=0;scanf("%d",&number);while(number!=-1){sum+=number;count++;scanf("%d",&number);}printf("%f\n",1.0*sum/count);// 1.0 的妙用:强制触发浮点数运算,防止整数除法精度丢失!return0;}

痛点: 被迫写了两次 scanf,看起来稍微有些啰嗦。

优点: 逻辑极其严密,绝不可能把毒药 -1 吃进肚子里。

do while循环

do-while的核心哲学是:不管三七二十一,先进门干活,出门前再查。

intmain(){intnumber;intsum=0;intcount=0;do{scanf("%d",&number);// 如果不加这个 if,-1 就会被加进 sum 里,导致全盘算错。if(number!=-1){sum+=number;count++;}}while(number!=-1);printf("平均数是: %f\n",1.0*sum/count);}return0;}

痛点: 循环体内部必须硬生生塞进去一个 if 判断来做防御。

优点: 只需要写一次 scanf。

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

相关文章:

  • 从FineCMS漏洞复现到SQL注入攻防实战:构建Web应用安全防线
  • 获超500亿融资,DeepSeek剑指AI coding,欲打破Anthropic领先局面!
  • ScyllaHide实战指南:绕过IsDebuggerPresent反调试技术
  • pandas基础,索引方式,搜索,无基础看完包学会
  • 【MATLAB】山地复杂地形无人机航路规划仿真
  • 2026永久免费去水印软件推荐:电脑手机+在线网页无广告无内购工具合集
  • 避坑指南:ROCm 7.x 环境下常见的驱动兼容性问题排查
  • IDEA+Claude Code:保姆级编程开发教程,高效开发
  • 423_7个技术写作案例,激发你的灵感
  • 微信QQ消息防撤回工具原理与部署指南:钩子技术与内存拦截解析
  • 《Vue3 从入门到大神12篇》组件通信全景图(下)—— Vuex 到 Pinia 的华丽转身
  • 丹东黄金白银回收铂金旧金回收无套路门店 TOP 榜单 实地测评资料整理
  • 降价也卖不动的合资燃油车开始主动撤出门店-2026.6.23
  • AI建站工具从入门到上线:一篇搞懂智能对话式建站全流程
  • SQL注入漏洞批量挖掘实战:从原理到自动化检测脚本编写
  • GPT-5.6 Agent安全实战:提示注入攻防SOP与企业权限治理手册
  • 2026保姆级教程:word压缩图片大小方法,多种途径压缩word文件大小
  • AI产业陷入光纤荒:需求暴增、扩产困难,中国光纤产业成大赢家!
  • Spring AI 2.x 深度技术解析:从架构重构到企业级落地
  • 现代农业类企业申报高企
  • ComfyUI Reactor Node完整指南:快速AI换脸技术的终极解决方案
  • 基于 C++ 实现的(控制台)考试系统
  • 【MATLAB】多障碍物环境无人机动态避障实现
  • MedLab-EPPM 电子压痛仪
  • 数据湖新范式:火山引擎基于 Lance 的多模态数据湖落地实践
  • 2026免费去水印工具推荐:无广告安全导出,网页/APP/电脑端全覆盖
  • 干细胞,真能改写健康认知吗?
  • 简单理解:清零为什么多此一举加取反
  • Meta 员工跟踪计划因安全漏洞暂停,内部数据收集引隐私担忧
  • Ultralytics:解读DWConv模块