新闻详情

新闻详情

首页 / 资讯中心 / 详情

C语言循环精讲:while与for深度对比

发布时间:2026/9/30 14:13:32来源:尧图网络
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;}
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Jev Assistant v1.3 技术方案深度解析:三路 API 自定义、本地知识库上下文注入与无障碍截屏 OCR 采集 2026/9/30 15:00:56

Jev Assistant v1.3 技术方案深度解析:三路 API 自定义、本地知识库上下文注入与无障碍截屏 OCR 采集

AI 应用大模型交互助手RAG 【免费下载链接】jev-chat-jarvis 装在手机上的对话副驾:在 QQ / X / 飞书里读懂对方、给出候选回复、一键填入输入框,发不发由你。非侵入,只读屏幕,不 hook 不改包。 项目地址: https://git…

阅读更多 →
那些 CMS 的 AI 功能,到底有几个真能用 2026/9/30 15:00:49

那些 CMS 的 AI 功能,到底有几个真能用

这两年 CMS 圈子里,不提 AI 好像都跟不上趟了。可真装过几家就知道差别有多大:有的官方把能力做进系统,装完就能用;有的靠社区插件凑数,得自己挑;还有的干脆是宣传页写着 AI,实际得自己接 API。…

阅读更多 →
AI应用开发不止是调接口:从接口到工程体系的实战指南 2026/9/30 15:00:49

AI应用开发不止是调接口:从接口到工程体系的实战指南

"AI 应用开发,不就是调个接口么?"这句话我听过太多次,说这话的人往往还没正经做过一个 AI 应用。前两年大模型刚火起来的时候,随便一个 HTTP 请求,把 prompt 塞进去,拿回一段文本,确实…

阅读更多 →
2025年Windows驱动开发:WDF框架KMDF与UMDF选型及实战指南 2026/9/30 15:00:22

2025年Windows驱动开发:WDF框架KMDF与UMDF选型及实战指南

简介:这份资源是《Developing Drivers with the Windows Driver Foundation》的PDF电子书,面向希望系统掌握Windows驱动开发的程序员与系统工程师,尤其适合具备一定C语言与操作系统基础、想深入内核态或用户态驱动编写的中高级开发者。全书由…

阅读更多 →
2026年9月长宁区临期产品销毁:5种方法优缺点推荐 2026/9/30 14:59:49

2026年9月长宁区临期产品销毁:5种方法优缺点推荐

临期产品销毁后真的只能"拉黑"? 很多人, 都以为, 长宁区超市货架上, 那些到了佳食用期以后的饼干、还有牛奶, 给集中销毁了就等于完了, 其实, 合规的销毁流程, 远远不只是把东西烧掉或者埋掉, 那么简单, 在这个流程的背后头, 藏着的一条, 资源再生的完整链…

阅读更多 →
【信息科学与工程学】【测试技术】第十五篇 软硬件测试方法03 2026/9/30 14:59:42

【信息科学与工程学】【测试技术】第十五篇 软硬件测试方法03

。 S-67 软件回归测试 编号 测试类型 测试内容(领域归类) 被测试对象的详细分析 测试方法 测试内容列表和步骤和每个步骤的测试内容和策略和方法和路径 关联知识和标准 S-67 软件回归测试 软件/测试管理 被测试对象的详细分析 回归测试验证软件在代码变更(新功能…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉