目录
从0开始记录我的学习历程,我会尽我所能,写出最最大白话的文章,希望能够帮到你,谢谢。
提示:文章作者为初学者,有问题请评论指正,感谢。
1.选择控制语句
1. if语句
if
语句的作用:让计算机能够根据条件是否满足来决定接下来要执行的代码。如果条件满足(真),就执行一段代码;如果条件不满足(假),就不执行,或者执行另一段代码。
形式:
if (条件) {
// 条件满足时要执行的代码
}
这里的“条件”可以是任何能够返回真或假的表达式,比如 a > b
、x == 10
或者 flag
等。
如果条件成立执行大括号里的所有语句,不成立的话大括号里的语句不执行。
else
有时候我们不仅仅想在条件满足时做点什么,还想在条件不满足时也做点什么。这时候就可以用到 if-else
语句:
if (条件) {
// 条件满足时要执行的代码
} else {
// 条件不满足时要执行的代码
}
如果 if 的条件成立,执行 if 后面{}内的语句,否则执行 else 后的语句。
else if
if (条件1) {
// 条件1满足时要执行的代码
} else if (条件2) {
// 条件1不满足,但条件2满足时要执行的代码
} else {
// 所有条件都不满足时要执行的代码
}
注意:在判断的时候,从上往下判断,一旦有成立的表达式,执行对应的复合语句, 下边的就不再判断了,各个条件判断是互斥的。
例子
int age = 19; // 假设这是用户的年龄
if (age > 18) {
printf("你已经成年了。\n");
}
else if (age == 18) {
printf("你刚好成年。\n");
}
else
{
printf("你还没有成年。\n");
}
return 0;
在这个例子中,如果 age
大于,程序会输出“你已经成年了。”;如果等于18则程序会输出“你刚好成年。”;如果小于 18
,则输出“你还没有成年。”
1.2switch
语句
switch
语句的作用:当你有很多条件需要判断,并且每个条件都对应不同的操作时,如果用一堆 if() {} else {} 语句会显得很乱。这时候,switch
语句就能派上用场了。
switch
语句的基本结构:
switch (表达式) {
case 值1:
// 如果表达式的结果是值1,执行这里的代码
break;
case 值2:
// 如果表达式的结果是值2,执行这里的代码
break;
// 可以有更多的 case
default:
// 如果表达式的结果不是任何 case 中的值,执行这里的代码
}
这里的“表达式”通常是一个变量或者一个能够计算出某个值的表达式。case
后面跟的是当表达式的结果与之匹配时要执行的代码。
例子
#include <stdio.h >
int main(int argc, char *argv[]) {
int n;
printf( "请输入一个 1 ~7 的数\n"); scanf_s( "%d",&n);
switch(n) {
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( "您的输入有误 ,请输入 1 ~7 的数\n");
break;}
return 0; }
这个例子中我们用到了scanf_s获取键盘上输入的数字后根据条件判断得出相应结果。
break
关键字的作用:在每个case
之后,你会看到一个break
语句。它的作用是防止程序继续执行下去,匹配到一个case
后就停止。如果没有break
,程序会继续执行下一个case
的代码,这通常不是我们想要的。default
关键字的作用:default
是一个特殊的case
,它会在没有任何case
匹配时执行。你可以把它看作是switch
语句的“最后手段”。
switch
语句就像是一个多层次的选择器,让我们可以根据不同的情况选择不同的操作路径。
2.循环控制语句
2.1for 循环
for
循环的作用:for
循环是编程中用来重复执行一段代码多次的一种控制结构。-
for
循环的基本结构:for (初始化表达式; 循环条件; 更新表达式) { // 循环体(需要重复执行的代码) }
- 初始化表达式:设置循环计数器的起始值。
- 循环条件:一个布尔表达式,只要它为真,循环就会继续执行。
- 更新表达式:每次循环结束时更新循环计数器。
-
for
循环的工作流程:- 首先执行初始化表达式,通常用来设置循环计数器。
- 然后检查循环条件,如果为真,则执行循环体。
- 循环体执行完毕后,执行更新表达式,通常用来更新循环计数器。
- 再次检查循环条件,如果仍为真,继续执行循环体;如果为假,退出循环。
-
for
循环的例子:99乘法表#include <stdio.h > int main(int argc, char* argv[]) { int i, j; for (i = 1; i <= 9; i++) { for (j = 1; j <= i; j++) { printf("%d*%d =%d ", j, i, j * i);} printf("\n");} return 0;}
-
for
循环的结构:- 首先,我们看到了一个
for
循环的开头:for (i = 1; i <= 9; i++)
。 - 让我们分解一下:
i = 1
:这是初始化表达式,它设置循环计数器i
的初始值为1。i <= 9
:这是循环条件,只要i
的值小于或等于9,循环就会继续执行。i++
:这是更新表达式,每次循环结束后i
的值会增加1。
- 首先,我们看到了一个
-
内部嵌套的
for
循环:- 在外层的
for
循环中,我们定义了一个变量j
,它的作用是控制每一行中的列数。 - 内层的
for
循环是嵌套在外层循环中的,它用来打印每一行的乘法表。 - 内层循环的条件是
j <= i
,这意味着每一行的列数不会超过当前行数。 - 循环体中的
printf("%d*%d = %d ", j, i, j * i);
会打印出每一行的乘法表。
- 在外层的
-
注意事项:
- 循环条件必须最终变为假,否则循环将无限进行,这称为无限循环。
- 更新表达式不一定非得是递增,也可以是递减或其他更新操作。
2.2while 循环
while循环的作用:while
语句是编程中用来重复执行一段代码直到某个条件不再满足为止的一种循环控制结构。-
while
语句的基本结构:while (条件) { // 循环体(需要重复执行的代码) }
- 条件:这是一个布尔表达式,只要它为真(true),循环就会继续执行。
- 循环体:这是在条件为真时需要重复执行的代码块。
-
while
语句的工作流程:- 首先检查
while
后面的条件。 - 如果条件为真,执行循环体内的代码。
- 循环体执行完毕后,再次检查条件。
- 如果条件仍然为真,继续执行循环体;如果为假(false),退出循环。
- 首先检查
-
while
语句的例子:假设我们要打印数字1到5:int i = 1; // 初始化计数器 while (i <= 5) { printf("%d\n", i); i++; // 更新计数器 }
在这个例子中:
- 我们首先初始化计数器
i
的值为1。 while
循环的条件是i <= 5
,意味着只要i
的值小于或等于5,循环就会继续。- 循环体是
printf("%d\n", i);
和i++;
,它们会打印当前i
的值,然后i
的值增加1。 - 当
i
的值超过5时,循环条件变为假,while
循环结束。
- 我们首先初始化计数器
-
注意事项:
- 确保循环体内有更新条件的语句,否则可能会导致无限循环。
while
循环特别适合处理不确定循环次数的情况。
do while
-
do { // 循环体(需要重复执行的代码) } while (条件);
- 循环体:这是需要重复执行的代码块。
- 条件:这是一个布尔表达式,只有当它为真(true)时,循环才会继续执行。
-
do-while
语句的工作流程:- 首先执行循环体内的代码。
- 然后检查
while
后面的条件。 - 如果条件为真,再次执行循环体。
- 如果条件为假(false),退出循环。
-
do-while
语句的例子:假设我们要打印数字1到5,但不知道循环应该执行多少次:int i = 1; // 初始化计数器 do { printf("%d\n", i); i++; // 更新计数器 } while (i <= 5);
在这个例子中:
- 我们首先初始化计数器
i
的值为1。 do
循环的循环体是printf("%d\n", i);
和i++;
,它们会打印当前i
的值,然后i
的值增加1。- 循环体执行完毕后,检查条件
i <= 5
。 - 当
i
的值超过5时,循环条件变为假,do-while
循环结束。
- 我们首先初始化计数器
-
do-while
与while
的区别:do-while
循环至少执行一次循环体,即使条件一开始就是假的。while
循环在执行循环体之前检查条件,如果条件一开始就是假的,循环体一次也不会执行。
2.3 goto
goto
语句是C语言中的一个控制流语句,它可以让程序跳转到代码中的另一个位置。使用 goto
语句时,你需要定义一个标签(label),然后在 goto
语句中使用这个标签来指定跳转的目的地。但是,要注意,虽然 goto
语句很,但是也会让代码很乱,因为跳来跳去的嘛,所以尽量避免用。
下面我用一个简单的例子来说明 goto
语句的用法:
#include <stdio.h>
int main() {
int num = 0;
start_loop: // 这是一个标签
if (num < 5) {
printf("%d\n", num);
num++;
goto start_loop; // 跳回到标签 start_loop
}
printf("完成循环。\n");
return 0;
}
在这个例子中:
- 我们定义了一个标签
start_loop
。 - 程序首先检查
num
是否小于5,如果是,就打印num
的值。 - 然后
num
的值增加1。 - 接着,
goto start_loop;
语句会让程序跳回到start_loop
标签处,再次执行循环。 - 当
num
达到5时,条件不再满足,循环结束,程序继续向下执行,打印出 “完成循环。” 并退出。
注意:
goto
语句可以让程序跳转到任何位置的标签,不仅仅是向前跳转,也可以向后跳转。- 过度使用
goto
语句会使代码变得复杂和难以追踪,因此建议只在必要时使用,比如跳出多层嵌套循环。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了C语言简单的控制语句if、for、while、goto,祝愿你我的朋友在学习的路上一帆风顺,也祝愿我会成为一个优秀的嵌入式工程师。