经过前面文章的介绍,我们已经算是摸到C语言的门槛了,接下来就是踏进门槛,入门C语言。让我们从分支和循环语句开始!
注意:图片中代码的头文件位于文件最顶部,因截图无法截取,所以默认已引头文件

从程序流程的角度来看,程序可以分为三种基本结构, 顺序结构、选择(分支)语句、循环语句。在C语言中语句分为这五类:1. 表达式语句 2. 函数调用语句 3. 控制语句 4. 复合语句 5. 空语句。本文主要是介绍控制语句,也就是前面提到的三种基本语句,它们由特定的语句定义符组成,C语言有九种控制语句: 1.条件判断语句(分支语句):if 语句、switch 语句 2.循环执行语句:do while 语句、while 语句、for 语句 3. 转向语句:break语句、goto语句、continue语句、return语句 控制语句一般都会有一个匹配伙伴— { }(语句块),用于理清逻辑从属关系。
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 语句可以嵌套使用。
作为分支语句中的第二种语句,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语句可以嵌套使用。
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会变成死循环
作为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语句
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;
}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;
}从以前的笼统解释,到现在的详细分析,变的是内容,不变的是初心。分支与循环语句的知识我已经给大家讲解完毕了,包括具体用例和注意事项等,还有结尾的关机小程序很有意思,如果有需求,还可以加上倒计时之类的东西,让整个程序更有压迫感。以上就是本篇文章的全部内容了,如果觉得写的还不错的话可以一键三连,当然一个小小的点赞也能让我很开心,对知识的分享欲是我继续创作的最大动力,希望大家可以期待我的下篇博客——函数。