一、分支语句1.if语句|if语句语法 0表示假非0表示真。if(表达式) 语句1 else 语句2if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 .......示例注意 如果执行多条语句要用大括号括起来#includestdio.h int main() { if(表达式) { 语句列表1 } else //else只管一个printf { 语句列表2 } return 0; }这里一对{}是代码块1.1悬空else#includestdio.h int main() { int a0; int b2; if(a1) if(b2) printf(hhhh\n); else printf(hhhh\n); return 0; }结果未输出结果编译器默认将else与离它最近的if匹配就近原则解决只需一个大括号就可解决#includestdio.h int main() { int a0; int b2; if(a1) { if(b2) printf(hhhh\n); } else printf(hhhh\n); return 0; }1.2 if书写形式的对比//代码1 if(condition) { return x; } else return y; //条件满足返回下条件不满足返回y。 //代码2 与代码1相比阅读更清晰 if(condition) { return x; } else { return y; } //代码3 int a1; if(a5)// 赋值 相等 若少个等号不会报错 { printf(hhh\n); } //代码4 int a1; if(5a) // 若少个会报错这样书写更好 { printf(hhh\n); }//代码1示例 #includestdio.h int test() { int a 5; if (a 3) return 1; return 0; } int main() { int r test(); printf(%d\n, r); return 0; }//代码2 阅读更清晰 #includestdio.h int test() { int a 3; if (a 3) return 1; else return 0; } int main() { int r test(); printf(%d\n, r); return 0; }2.switch语句语法switch(整型变量或字符型变量) { case 常量1:语句1;break; case 常量2:语句2;break; ..... case 常量n:语句n;break; default:语句n1:break; }//示例 #includestdio.h int main() { int day0; scanf_s(%d, day); switch (day) { case 1:printf(星期一\n); break; case 2:printf(星期二\n); break; case 3:printf(星期三\n); break; case 4:printf(星期四\n); break; case 5:printf(星期五\n); break; case 6:printf(星期六\n); break; case 7:printf(星期天\n); break; default:printf(输入不正确\n); break; } return 0; }上下结果相同时上方可不写switch(整型变量或字符型变量) { case 1; case 2; case 3; case 4;printf(...);break; case 5; case 6;printf(...);break; }二、循环语句!1.while循环首先上来就是执行判断表达式表达式的值为0循环直接结束表达式的值不为0则执行循环语句语句执行完后再继续判断是否进行下一次判断。打印1-10数字#includestdio.h int main() { int i 0; while (i 10) { printf(%d, i); i; } return 0; }1.1while语句中的break和continue1.1.1break 是用于永久终止循环#includestdio.h int main() { int i0; while(i10) { i; if(5i) break; printf(%d,i); } return 0; }1.1.2continue 跳过本次循环后面的代码直接去判断部分进行下一次循环判断#includestdio.h int main() { int i0; while(i10) { i; if(5i) continue; printf(%d,i); } return 0; }结果跳过52.for循环(最常使用)2.1语法for(表达式1;表达式2表达式3) 循环语句;表达式1 用于循环变量的初始化表达式2 用于循环结束条件的判断表达式3 用于循环变量的调整打印1-10的数字#includestdio.h int main() { int i 0; for (i 1; i 10; i) printf(%d, i); return 0; }2.2 for语句中的break和continue2.2.1break循环中的break一样for循环中的break也是用于终止循环的不管循环还需要循环多少次只要执行到了break循环就彻底终止#includestdio.h int main() { int i 0; for (i 1; i 10; i) { if (5 i) break; printf(%d, i); } return 0; }![外链图片转存失败,源站可能有防盗2.2.2 continue#includestdio.h int main() { int i 0; for (i 1; i 10; i) { if (5 i) continue;//这里continue跳过了后面的打印直接来到i部分 printf(%d, i); } return 0; }2.3for循环的变量for循环的判断部分省略意味着这判断会恒成立最好写明条件//for循环中的初始化部分判断部分调整部分可省略不建议初学时省略容易导致问题 #includestdio.h int main() { for (;;) { printf(hhhh\n); } return 0; } //陷入死循环#includestdio.h int main() { int i 0; int j 0; for (i 0; i 10; i) { for (j 0; j 10; j) { printf(hhhh\n); } } return 0; } //打印10*10100个hhhh//如果初始化部分省略 #includestdio.h int main() { int i 0; int j 0; for (; i 3; i) { for (; j 3; j) { printf(hhhh\n); }//j3时不再进入该循环 } return 0; } //打印3个hhhh#includestdio.h int main() { int i 0; int j 0; for (i0; i 3; i) { for (j0; j 3; j) { printf(hhhh\n); } } return 0; } //打印9个hhhh//使用多余一个变量控制 #includestdio.h( int main() { int x, y; for (x 0, y 0; x 7 y 4; x, y) printf(hhhh\n); return 0; } //打印4个hhhh3.do…while循环3.1语法do 循环语句 while(表达式);//错误示范1 int main() { int i 0; do printf(hhhh\n); while (i 10); return 0; } //错误示范2 #includestdio.h int main() { int i 0; do printf(hhhh\n); i; while (i 10); return 0; } //正确示范 #includestdio.h int main() { int i 0; do { printf(hhhh\n); i; } while (i 10); return 0; }3.2 breakcontinue3.3.1break#includestdio.h int main() { int i 0; do { if (5 i) break; printf(%d\n,i); i; } while (i 10); return 0; }3.2.2 continue#includestdio.h int main() { int i 0; do { i; if (5 i) continue; printf(%d\n,i); } while (i 10); return 0; }#includestdio.h int main() { int i 1; do { if (5 i) continue; printf(%d\n,i); i; } while (i 10); return 0; }三、练习1.计算n的阶乘代码如下#includestdio.h int main() { int n; int a 1; int s 1; scanf_s(%d, n); for (a 1; a n; a) { s s * a; //s*a; } printf(%d, s); return 0; }结果2.计算阶乘的和 例如123…10|代码如下代码1#includestdio.h int main() { int a 1; int n 0; int s 1; int sum 0; for (n 1; n 10; n) { s 1; for (a 1; a n; a) { s s * a; } sum sum s; } printf(%d, sum); return 0; } //for (a 1; a n; a) // { // s s * a; // } //计算n的阶乘每次计算s为1必须说明代码2#includestdio.h int main() { int n 1, sum 0, a 1; while (n 10) { n; sum sum a; a a * n; } printf(%d, sum); return 0; }代码3#includestdio.h int main() { int n 1, sum 0, a 1; for (n 1; n 10; n) { a a * n; sum sum a; } printf(%d, sum); return 0; }3.在一个有序数组中查找某个数代码1#includestdio.h int main() { int arr[10] { 1,2,3,4,5,6,7,8,9,10 }; int i 0; int k; int sz sizeof(arr) / sizeof(arr[0]); scanf_s(%d, k); for (i 0; i sz; i) { if (arr[i] k) { printf(找到了下标是%d\n, i); } if (i sz) { printf(没找到\n); } } return 0; }代码2 二分查找(更高效)#includestdio.h int main() { int arr[10] { 1,2,3,4,5,6,7,8,9,10 }; int sz sizeof(arr) / sizeof(arr[0]); int left 0; int right sz - 1; int k 3; while (leftright) { //int mid (left right) / 2; int mid left (right - left) / 2;//防止left和right的平均值超出范围 // left/2right/2这种表达是错误的 if (arr[mid] k) { left mid 1; } else if (arr[mid] k) { right mid - 1; } else { printf(找到了下标是%d, mid); break; } } if (left right) printf(无\n); return 0; }4.编写代码演示多个字符从两端移动向中间汇聚替代#includestdio.h int main() { char arr1[] I LOVE YOU ! ; char arr2[] ############; int left 0; int right strlen(arr2) - 1; //strlen是求长度strlen不算\0算的是\0之前的元素个数 //int rightsizeof(arr1)/sizeof(arr[0])-2; //size是求内存sizeof算\0算总元素个数 //char buf[]a,b,c; //[a,b,c,\0] 四个元素 c的下标为2用strlen-1用sizeof-2 while (left right) { arr2[left] arr1[left]; arr2[right] arr1[right]; printf(%s\n, arr2); left; right--; } return 0; }要延迟效果的话可加Sleep函数并添加头文件#includewindows.h清空屏幕的话可用system函数并添加头文件#includestdlib.h#includewindows.h #includestblib.h #includestdio.h int main() { char arr1[] I LOVE YOU ! ; char arr2[] ############; int left 0; int right strlen(arr2) - 1; //strlen是求长度strlen不算\0算的是\0之前的元素个数 //int rightsizeof(arr1)/sizeof(arr[0])-2; //size是求内存sizeof算\0算总元素个数 //char buf[]a,b,c; //[a,b,c,\0] 四个元素 c的下标为2用strlen-1用sizeof-2 while (left right) { arr2[left] arr1[left]; arr2[right] arr1[right]; printf(%s\n, arr2); Sleep(1000);// 延迟 休息 毫秒为单位 //清空屏幕 system(cls)//system是一个库函数可以执行系统命令 left; right--; } printf(%s\n, arr2); return 0; }5.代码编写实现模拟用户登录场景并且只能登陆3次。只允许输入三次密码如果密码正确则提示登陆成功如果三次均输入错误则退出程序。错误示范#includestdio.h int main() { int i 0; char password[20] { 0 }; for (i 0; i 3; i) { printf(请输入密码) scanf(%s,password)//数组名本来就是地址不需要取地址 if (password abcdef)//比较2个字符串是否相等不能使用而应该使用一个库函数strcmp { printf(登陆成功\n); break; } else { printf(密码错误); } } if (i 3) { printf(三次密码均输入错误退出程序); } return 0; }后面无法进行下去if (password “abcdef”)//比较2个字符串是否相等不能使用而应该使用一个库函数strcmp正确示范#includestdio.h #includestring.h int main() { int i 0; char password[20] { 0 }; for (i 0; i 3; i) { printf(请输入密码); scanf_s(%s, password);//数组名本来就是地址不需要取地址 if (strcmp(password, abcdef) 0)//比较2个字符串是否相等不能使用而应该使用一个库函数strcmp { printf(登陆成功\n); break; } else { printf(密码错误); } } if (i 3) { printf(三次密码均输入错误退出程序); } return 0; }