C语言循环精讲:while与for深度对比
C语言学习记录日期 8.12今日知识点 ——whilewhile表达式循环语句练习代码#includestdio.h//while//int main()//{// int i 1;// while(i 10)// {// if (i 5)// //break;//在while循环中break用于永久的终止循环// continue;//在while循环中continue的作用是跳过本次循环continue后边的代码直接去判断部分看是否进行下一次循环// printf(%d , i);// i;// }// return 0;//}//getchar——获取第一个字符//EOF - end of file - 文件结束标志//int main()//{// int ch getchar();// //printf(“%c\n”,ch);// putchar(ch);//输出一个字符// return 0;//}//无循环只读一次 → 只拿到第一个字符//while 循环不断重复读取缓冲区有多少字符就读取、输出多少个//int main()//{// int ch 0;// //ctrz 回车 —— getchar就结束了// while((chgetchar()) ! EOF)// {// putchar(ch);// }// return 0;//}////int main()//{// char password[20] {0};// printf(“请输入密码:”);// scanf(“%s”,password);//这里不用是因为password本身是数组数组的数组名本来就是个地址// //清理缓冲区// //getchar();//只清理一个// int tem 0;// while ((tem getchar()) ! ‘\n’)// {// ;// }// printf(“请确认密码(Y/N):”);// int ch getchar();// if(ch ‘Y’)// {// printf(“确认成功”);// }// else// {// printf(“确认失败”);// }// return 0;//}//只打印数字不打印字符//int main()//{// int ch 0;// while ((ch getchar()) ! EOF)// {// if (ch ‘0’ || ch ‘9’)// continue;// putchar(ch);// }// return 0;//}int main(){int a 1;//初始化 while(a 10)//判断部分 { printf(%d ,a); a;//调整部分 } return 0;}今日知识点 ——forfor表达式1初始化表达式2判断部分表达式3调整部分{循环语句}一句话总结区别continue 语义完全相同跳过本次循环剩余代码直奔循环条件判断while 版本 i 写在循环体内部、continue 之后遇到 continue 就执行不到 i变量不再自增 → 死循环for 版本 i 属于循环表达式不在循环体内部哪怕 continue 跳过循环体i 依旧会执行数值正常增长。for里的初始化、判断部分、调整部分可以省略但是判断部分省略容易死循环不建议省略。练习代码//for循环//int main()//{// int i 0;// for (i 1;i 10;i)// {// if (i 5)// //break;//在for循环中break用于永久的终止循环// continue;//在while循环中continue的作用是跳过本次循环continue后边的代码直接去判断部分看是否进行下一次循环// printf(%d ,i);// }//}//建议1.不可在for循环体内修改循环变量防止for循环失去控制//循环体内修改循环变量//int main()//{// int i 0;// for (i 1;i 10;i)// {// printf(%d ,i);// int j 0;// for(j 0;j 10;i)// {// printf(“hehe\n”);//死循环// }// }// return 0;//}//2.建议for语句的循环控制变量的取值采用“前闭后开区间”写法//int main()//{// int arr[10] {0};// int i 0;// for (i 0;i 10;i)//i 0闭区间i 10k开区间。不建议写成i9// {// printf(%d ,arr[i]);// }// return 0;//}//int main()//{// for(;// {// printf(“hehe\n”);// }// return 0;//}//外层每走 1 次完整循环内层循环要从头到尾跑完一整轮//3*39//int main()//{// int i 0;// int j 0;// for (i 0; i 3;i)// {// for (j 0; j 3;j)// {// printf(“hehe\n”);// }// }// return 0;//}//当省略初始化部分时只打印三次//因为第一轮外层循环i0时的内循环正常打印3次hehej3第二轮外层循环时i1时的内循环此时j3因为j没有初始化j3内循环结束//第三轮也一样所以只打印3次hehe//int main()//{// int i 0;// int j 0;// for (; i 3;i)// {// for (; j 3;j)// {// printf(“hehe\n”);// }// }// return 0;//}int main(){int i 0; int k 0; for (i 0,k 0;k0;i,k)//这里判断部分k 0;k被赋值为0为假循环一次都进不去 { k; } return 0;}今日知识点 ——do whiledo循环语句while表达式;do while的特点循环体至少执行一次练习代码#includestdio.h//输出数字12345678910//int main()//{// int i 1;// do// {// if (i 5)// //break;// continue;// printf(%d ,i);// i;// }// while(i10);// return 0;//}//计算n的阶乘//int main()//{// int i 0;// int n 0;// int ret 1;//乘积初始值必须写1不能写0// scanf(“%d”,n);// for(i 1;i n;i)// {// reti;//等于ret reti,n5时i取12345第一次循环ret11第二次ret12第三次ret23…64,24*5120// }// printf(“%d\n”,ret);// return 0;//}//计算1!2!3!…10!//int main()//{// int i 0;// int n 0;// int ret 1;//乘积初始值必须写1不能写0// int sum 0;// //3! 3213*2!// //2!2*1////// for (n 1;n 3;n)//// {//// ret 1;//计算n的阶乘之前把ret初始化为1//// for(i 1;i n;i)//// {//// ret *i;//// }//// sum ret;//// }//// for (n 1;n 3;n)// {// ret * n;// sum ret;// }// printf(“%d\n”,sum);//9// return 0;//}//在一个有序数组中查找具体的某个数字n//int main()//{// int arr[] {1,2,3,4,5,6,7,8,9,10};// int k 7;//要查找的数字// //在arr这个有序的数组中查找k7的值// int az sizeof(arr) / sizeof(arr[0]);//数组元素的个数// int left 0;// int right az -1;// while(leftright)// {//// int mid (left right)/2;// if (arr[mid] k)// {// left mid 1;// }// else if(arr[mid] k)// {// right mid - 1;// }// else// {// printf(“找到了下标是:%d\n”,mid);// break;//// }// }// if (left right)// {// printf(“找不到了\n”);// }// return 0;//}//编写代码演示多个字符从两端移动向中间汇聚//welcome to here!!!//####################//w##################!//we################!!//wel##############!!!//…//welcome to here!!!//#includestring.h//#includewindows.h//int main()//{// char arr1[] “welcome to here!!!”;// char arr2[] “####################”;// int left 0;// int right strlen(arr1) - 1;// while(leftright)// {// arr2[left] arr1[left];// arr2[right] arr1[right];// printf(“%s\n”,arr2);// Sleep(1000);//睡眠一秒// system(“cls”);//清空屏幕// left;// right–;// }// printf(“%s\n”,arr2);// return 0;//}//编写代码实现模拟用户登录情景并且只能登录三次只允许输入三次密码如果密码正确则提示成功如果三次均输入错误则退出程#includestring.hint main(){int i 0; //假设正确密码是字符串“123456” char password[20] { 0 }; for (i 0;i 3;i) { printf(请输入密码:); scanf(%s,password); //if (password 123456);//error 两个字符号比较不能使用应该使用strcmp if(strcmp(password,123456) 0)//strcmp()函数返回为0 { printf(登录成功\n); break; } else { printf(密码错误重新输入\n); } } if (i 3) printf(三次密码均错误退出程序\n); return 0;}猜数字游戏#includestdio.h//1.自动产生一个1~100之间的随机数字//2.猜数字//a.猜对了就恭喜你游戏结束//b.猜错了会告诉是猜大了还是猜小了继续猜知道猜对//3.游戏可以一直玩除非退出游戏#includestdlib.h#includetime.hvoid menu(){printf(**************************\n); printf(********* 1.paly ********\n); printf(********* 0.exit ********\n); printf(**************************\n);}void game(){//猜数字游戏的实现 //1.生成随机数 //rand函数返回了一个0~32767之间的数字 //时间——变化——时间戳 int ret rand() % 100 1;//%100的余数0~99然后加1范围就是1~100 //printf(%d\n,ret); //2.猜数字 int guess 0; while(1)//这里的 1 代表逻辑真构成无限循环。 { printf(请猜数字:); scanf(%d,guess); if (guess ret) { printf(猜小了\n); } else if (guess ret) { printf(猜大了\n); } else { printf(恭喜你猜对了\n); break; } }}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;}

相关新闻

选营养产品别轻信宣传,研发实力才是企业硬指标

选营养产品别轻信宣传,研发实力才是企业硬指标

国民营养需求持续提升,各类蛋白营养、膳食补充产品不断涌入市场。很多消费者挑选营养产品时,习惯于只看包装营养成分表,忽视企业底层研发能力、原料验证体系、配方循证数据。市面上不少营养品牌仅外购原料简单复配,缺少长期基础研…

2026/9/30 14:12:58 阅读更多 →
GB28181+SIP 融合调度平台:布控球接入与业务联动工程实践

GB28181+SIP 融合调度平台:布控球接入与业务联动工程实践

融合通信调度平台在矿山、水利、消防场景落地时,布控球是核心前端采集终端。很多技术人员在调试阶段,能完成 GB28181 视频流拉取,但是 SIP 语音、设备告警、GPS 位置同步联动经常失败。本文从工程调试角度,梳理布控球接入融合平台…

2026/9/30 14:12:58 阅读更多 →
企业知识库需要私有化部署?zyplayer-doc的文档、权限与AI问答能力

企业知识库需要私有化部署?zyplayer-doc的文档、权限与AI问答能力

企业知识库需要私有化部署?zyplayer-doc的文档、权限与AI问答能力 不少企业在选知识库时,会先问一个问题:文档能不能放在自己的服务器上?制度、合同、研发资料每天都在增加,除了使用方便,存储位置、访问权限…

2026/9/30 14:12:58 阅读更多 →

最新新闻

Qwen-Image-2.1本地编辑工作流实战:ComfyUI部署与精准图像指令执行

Qwen-Image-2.1本地编辑工作流实战:ComfyUI部署与精准图像指令执行

1. 这不是又一个“跑通就行”的ComfyUI教程,而是专为Qwen-Image-2.1设计的本地编辑工作流实战手册你搜到这篇内容,大概率正卡在几个关键节点上:下载了Qwen-Image-2.1模型文件却不知道放哪、装完ComfyUI后找不到适配它的节点、秋叶整合包里一堆…

2026/9/30 15:45:51 阅读更多 →
Qwen Image 2.1全栈工作流:8G显存跑通10图批量编辑与2K直出

Qwen Image 2.1全栈工作流:8G显存跑通10图批量编辑与2K直出

1. 项目概述:这不是一个“跑通就行”的Demo,而是一套能落地进日常创作管线的Qwen Image 2.1全栈工作流从云栖大会回来那天下着雨,我坐在杭州城西一家咖啡馆里,把刚领到的Qwen Image 2.1技术白皮书摊在桌上,旁边是台顶配…

2026/9/30 15:45:51 阅读更多 →
TradingView MCP Bridge 实战指南:用 Claude Code 连接 TradingView Desktop,实现 AI 辅助图表分析与 Pine Script 开发

TradingView MCP Bridge 实战指南:用 Claude Code 连接 TradingView Desktop,实现 AI 辅助图表分析与 Pine Script 开发

MCP 服务AI 应用人工智能金融科技CLI 【免费下载链接】tradingview-mcp AI-assisted TradingView chart analysis — connect Claude Code to your TradingView Desktop for personal workflow automation 项目地址: https://gitcode.com/GitHub_Trending/tra/tradi…

2026/9/30 15:45:51 阅读更多 →
Nginx进程管理:启动、停止、重启与开机自启配置详解

Nginx进程管理:启动、停止、重启与开机自启配置详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 15:45:51 阅读更多 →
族谱排版中的词条映射引擎设计——从标准术语到地方称谓的精准替换

族谱排版中的词条映射引擎设计——从标准术语到地方称谓的精准替换

修谱这件事,最难统一的不是数据,是称谓。同一个宗法概念,不同地区、不同宗族有完全不同的叫法。“出继”在有的地方叫“过房”,有的地方叫“过继”,还有的地方叫“承嗣”。“兼祧”有的写“双祧”,有的写“…

2026/9/30 15:45:51 阅读更多 →
基于SpringBoot+SSM的乡村支教管理系统:设计与实现全解析

基于SpringBoot+SSM的乡村支教管理系统:设计与实现全解析

作为一个常年混迹在Java技术圈、也带过不少毕设项目和老哥的开发者,我其实见过太多所谓的“管理系统”了。大部分项目都是重表面、轻内核,页面做得很花哨,后台逻辑却千疮百孔。但前阵子帮人梳理的这个基于JavaSpringBootSSM的乡村支教管理系统…

2026/9/30 15:44:45 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/30 13:14:22 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/30 13:14:49 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/30 15:27:04 阅读更多 →