循环、数组、字符串全套代码笔记

发布时间:2026/10/26 1:56:32
循环、数组、字符串全套代码笔记 一、分支语句if和switch1.if判断基础0代表假非0代表为真 此为C语言逻辑判断的底层规则if(1)、while1都是死循环多条件判断语句用 if ... else if ... else练习: 任取一整数除以3的余数#define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h int main() { int num 0; scanf(%d,num); if(num%30) { printf(余数是0); } else if(num%31) { printf(余数是1); } else { printf(余数是2); } return 0; }2.switch分支注意1.switch后必须跟break否则会发生case穿透2. case 后面必须放整型常量不能放变量3.default:所有case都不匹配时才执行位置无要求建议放末尾练习输入数字1~7输出星期输入非法数字default提示报错int main () { int day 0; scanf(%d,day); switch(day) { case(1): printf(星期一); case(2): printf(星期二); case(3): printf(星期三); case(4): printf(星期四); case(5): printf(星期五); case(6): printf(星期六); case(7): printf(星期天); default: printf(输入错误请重新输入) break; } return 0; }二、循环语句while、for、do while适用场景区分1.while先判断后执行2.for结构紧凑优先用于已知循环次数场景3.do while先执行一次再判断程序至少执行一次三种循环中加入breakcontinue的区别注意break是直接跳出整个循环而continue是跳过本次循环剩下的代码直接进行下一轮判断while语句int main() { int i 0; while(i10) { printf(%d,i); //运行结果为 1,2,3,4,5,6,78,9,10 i; } return 0; } int main() { int i 0; while(i10) { if(i 5) //运行结果为1,23,4,5 break; printf(%d,i); i; } return 0; } int main() { int i 0; while(i10) { if(i 5) //运行结果为1,2,3,4,5 continue; printf(%d,i); i; } return 0; } int main() { int i 0; while(i10) { i if(i 5) //运行结果为1,2,3,4,6,7,8,9,10 continue; printf(%d,i); } return 0; }do while循环int main() { int i 1; do { printf(%d,i); i; }while(i10) return 0; } //运行结果为1,2,3,4,5,67,8,9,10 int main() { int i 1; do { if(i5) break; //1,2,3,4,5 printf(%d,i); i; }while(i10) return 0; } int main() { int i 1; do { i;//2,3,4,6,7,8,9,10,11 if(i5) continue; printf(%d,i); // i; //1,2,3,4,5 }while(i10) return 0; }for循环int main { int i0; for(i0;i10;i) { printf(%d,i); } return 0; } int main { int i0; for(i0;i10;i) { printf(%d,i); if(i5) //1,2,3,4,5 break; } return 0; } int main { int i0; for(i0;i10;i) { printf(%d,i); if(i5) continue; //1,2,3,4,6,7,8,9,10 } return 0; }四、goto语句趣味整蛊程序goto可以在函数内直接跳转在标记位置不建议滥用适合快速跳出多层循环。#include stdio.h int main() { int i,j; for(i1; i10; i) { for(j1; j10; j) { if(i*j 36) { printf(找到 i%d,j%d\n,i,j); goto end_loop; // 直接跳出两层循环 } } } end_loop: printf(循环结束\n); return 0; }五、实战项目猜数字游戏综合运用循环随机数switch菜单核心知识点1.rand生成随机数srand((unsigned int)time(NULL))设置随机种子。注意#includestdlib.h 是randsrand的头文件 #includetime.h 是timeNULL的头文件2.do while 实现菜单循环玩完后可继续选择玩或不玩#define _CRT_SECURE_NO_WARNINGS 1 #include stdio.h #include stdlib.h #include time.h void menu() { printf(************************\n); printf(***** 1.猜数字 ******\n); printf(***** 0.退出游戏 ******\n); printf(************************\n); } void game() { int r rand() % 100 1; int guess 0; int count 5; while (count 0) { printf(你还有%d次机会请猜数字:, count); 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); } } 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; }六、数组一维数组二维数组数组相同类型元素的集合下标从0开始1.一维数组不完全初始化int arr[5] {1,2,3};,剩下的元素自动初始化为0完全初始化int arr[5] {1,2,3,4,5}!!! 变长数组int arr[n];C99才支持vs默认MSVC编译器不支持变长数组clang可以求数组元素个数的公式int szsizeof(arr)/sizeof(arr[0]);***坑数组当做函数参数传递的时候数组会退化成指针sizeof无法算出正确的长度需要手动把长度作为参数传入函数里2.二维数组初始化时行可省略列绝对不能省略需要两层for循环嵌套i控制行j控制列查找数组时可用二分查找法折中查找法二分查找法任意输入一个数用二分法查找#includestdbool.h int main() { int arr[] { 1,2,3,4,5,6,7,8,9,10 }; int k 0; scanf(%d, k); int sz sizeof(arr) / sizeof(arr[0]); int left 0; int right sz - 1; bool flag false; while (left right) { 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); flag true; break; } } if (flag false) { printf(找不到此数字\n); } return 0; }七、字符串操作1.strlen:统计/0之前有效字符个数需头文件#includestring.h2.C语言字符串末尾自带隐藏结束符/0没有/0的话会出现乱码3.strcmpstr1str20字符串之间的比较str1str2不能直接用4.返回值str1str2返回0;str1str2返回0;str1str2返回0演示字符动画打印一边打印一边清屏#includewindows.h #includestdio.h #includestring.h int main() { char arr1[] hello!welcome to you!!!!!!!; char arr2[] ***************************; int left 0; int right sizeof(arr1) / sizeof(arr1[0]) - 2; while (left right) { arr1[left] arr2[left]; arr1[right] arr2[right]; printf(%s\n, arr1); Sleep(500); system(cls); left; right--; } printf(hello!welcome to you!!!!!!!); return 0; }strcmp函数的使用#include stdio.h #include string.h // strcmp必须的头文件 int main() { char str1[] hello; char str2[] hello; char str3[] world; if( strcmp(str1, str2) 0 ) // 比较字符串里面的文字内容 { printf(str1 和 str2 内容相等\n); } else { printf(str1 和 str2 内容不等\n); } if( strcmp(str1, str3) 0 ) { printf(hello 在字典顺序上小于 world\n); } return 0; }编程学习从无捷径bug常在难题常有。道阻且长行则将至坚持敲码终有所获。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询