目录
前言
正文
语句
分支语句
1.if 语句
2.switch语句
循环语句
1.while语句
2.do while语句
3.for语句
4.goto语句
总结
前言
经过前面文章的介绍,我们已经算是摸到C语言的门槛了,接下来就是踏进门槛,入门C语言。让我们从分支和循环语句开始!
注意:图片中代码的头文件位于文件最顶部,因截图无法截取,所以默认已引头文件
正文
语句
从程序流程的角度来看,程序可以分为三种基本结构, 顺序结构、选择(分支)语句、循环语句。在C语言中语句分为这五类:1. 表达式语句 2. 函数调用语句 3. 控制语句 4. 复合语句 5. 空语句。本文主要是介绍控制语句,也就是前面提到的三种基本语句,它们由特定的语句定义符组成,C语言有九种控制语句:
1.条件判断语句(分支语句):if 语句、switch 语句
2.循环执行语句:do while 语句、while 语句、for 语句
3. 转向语句:break语句、goto语句、continue语句、return语句
控制语句一般都会有一个匹配伙伴— { }(语句块),用于理清逻辑从属关系。
分支语句
1.if 语句
if 是如果的意思,小明考上了北大,小王考上了地瓜,如果(if)小王当时好好学习,说不定能考上北大旁边的重点大学。这就是选择,如果人生的每一步都能做出正确选择,那肯定是开挂人生。
开个玩笑,让我们直接开始学习 if 语句
if 语句使用示例及分析
//if模拟成绩评判 int main() { int score = 0; printf("请输入分数:>"); scanf("%d", &score); if (score >= 90) printf("A\n"); else if (score >= 80) printf("B\n"); else if (score >= 70) printf("C\n"); else if (score >= 60) printf("D\n"); else printf("E\n"); return 0; }
我们可以根据 if 的知识写出简单程序了
//输入一个数,判断是否为奇数 int main() { int num = 0; printf("请输入一个数:>"); scanf("%d", &num); if ((num % 2) == 0) printf("输入数是偶数\n"); else printf("输入数是奇数\n"); return 0; }
if 使用注意事项:if 语句在判断时,若为变量和常量相比较,可以把常量写在左边,这样可以有效避免少些一个 = 的小问题。else 语句在使用时要注意与 if 的匹配,避免悬空问题。如果对于各语句间的逻辑模糊不清,可以通过添加语句块 { } 的方式使程序可读性更强。if 语句可以嵌套使用。
2.switch语句
作为分支语句中的第二种语句,switch语句的出现可谓是弥补了 if 多分支语句过于冗长的缺点,switch语句能通过短短几行代码实现 if 多分支多语句的功能,比如输入1,打印星期一,输入5,打印星期五,让 if 来完成这个需求需要7个 if else语句,而交给switch只需要7句case。
switch语句使用示例及分析
//switch示例 int main() { int num = 0; printf("查询是否可以休息:>"); scanf("%d", &num); switch (num) { case 1: case 2: case 3: case 4: case 5: printf("工作日,继续搬砖\n"); break; case 6: case 7: printf("休息日,放松身心\n"); break; default : printf("输入有误\n"); break; } return 0; }
switch语句使用注意事项:switch中的语句必须是整型表达式。case后必须是整型常量表达式。break语句的实际效果是把语句列表划分为不同的分支语句。switch语句可以嵌套使用。
循环语句
1.while语句
while语句可以实现循环需求,比如想要打印数字1~100,只需要把while语句中的表达式写为n<=100即可,跟 if 一样,while语句表达式为假就不执行。
while语句使用示例及分析
//while语句-含break和continue int main() { int n = 0; while (n <= 15) { n++; if (n == 5) continue; if (n == 10) break; printf("%d ", n); } return 0; }
while使用注意事项:while中的break是用于永久终止循环的。continue是用于终止本次循环的。在使用while循环时要注意表达式逼近的语句,比如上面的n++,如果不加这句话,while会变成死循环
2.do while语句
作为while语句的兄弟,do while语句跟while语句太像了,while中的知识在do while中都能用,唯一不同的是do while要先执行一次,再进行判断。
do while语句使用示例及分析
//do while int main() { int n = 0; do { n++; if (5 == n) continue; if (8 == n) break; printf("%d ", n); } while (n <= 10); return 0; }
do while使用注意事项:do while的特点是先执行一次,所以在使用时要注意是否满足需求。
其他注意事项可以参考while语句
3.for语句
for循环是循环语句中最常用的,也是最好用的,因为for循环集成了计数器重置,循环终止条件,计数器自增三项功能,只需要把for循环内的条件设置好,直接往语句块内放执行语句就行了
for 语句使用示例及分析
//for循环 int main() { int i = 0; for (i = 0; i <= 10; i++) { if (i == 5) continue; if (i == 9) break; printf("%d ", i); } return 0; }
一道for 语句笔试题
//请问循环要循环多少次? #include <stdio.h> int main() { int i = 0; int k = 0; for(i =0,k=0; k=0; i++,k++) k++; return 0; }
for 语句使用注意事项:不可在for 循环体内修改循环变量,防止 for 循环失去控制。建议for语句的循环控制变量的取值采用“前闭后开区间”写法。
循环例题1.计算n的阶乘
//计算n阶乘 int main() { int n = 0; scanf("%d", &n); int i = 0; int fac = 1; for (i = 1; i <= n; i++) { fac = fac* i; } printf("%d", fac); return 0; }
循环例题2.二分查找
二分查找又称折半查找,指在一个有序数组中查找某数,从中间开始比较。若数比中值小,则说明中值找大了;反之说明找小了,因为中值需要依靠左右端,所以二分查找本质上一个左右端移动的问题,可以用循环解决。
//二分查找 int main() { int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; int key = 5; int left = 0; int right = sizeof(arr) / sizeof(arr[0]) - 1; while (left <= right) { int mid = left + (right - left) / 2; if (key < arr[mid]) right = mid - 1; else if (key > arr[mid]) left = mid + 1; else { printf("找到了,下标是%d\n", mid); break; } } if (left > right) printf("没有找到这个数\n"); return 0; }
4.goto语句
C语言提供了可供滥用goto语句和标记跳转的符号。goto语句用的比较少,因为其可以随意跳转的属性,极有可能导致代码运行错误,但只要使用得当,就可以用来终止程序在某些深度嵌套的结构的处理过程,比如多层for循环(一个break只能跳出一层),如果我们想直接跳出最外层,只需要一个goto语句。
goto 语句使用示例及分析
//goto int main() { int i = 0; int j = 0; int k = 0; for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { for (k = 0; k < 5; k++) { if (i == 3 && j == 3 && k == 3) goto flag; } } } flag : printf("%d %d %d\n",i,j,k); return 0; }
goto 语句使用注意事项:在goto 前提前预判程序走向,避免造成死循环。
语句构成的关机小程序
//关机小程序 #include<windows.h> int main() { char input[10] = { 0 }; system("shutdown -s -t 60"); flag1 : printf("警告!你的电脑将在60秒内关机,输入 我是猪 取消关机\n\a"); printf("请输入:>"); scanf("%s", input); if (0 == (strcmp(input, "我是猪"))) { system("shutdown -a"); printf("取消成功!\n"); } else { printf("请尽快输入解除口令,不然电脑即将关机!\n"); goto flag1; } return 0; }
总结
从以前的笼统解释,到现在的详细分析,变的是内容,不变的是初心。分支与循环语句的知识我已经给大家讲解完毕了,包括具体用例和注意事项等,还有结尾的关机小程序很有意思,如果有需求,还可以加上倒计时之类的东西,让整个程序更有压迫感。以上就是本篇文章的全部内容了,如果觉得写的还不错的话可以一键三连,当然一个小小的点赞也能让我很开心,对知识的分享欲是我继续创作的最大动力,希望大家可以期待我的下篇博客——函数。
如果本文有不足或错误的地方,随时欢迎指出,我会在第一时间改正!