C语言目录:
默认情况下,程序运行后,系统会从上到下顺序执行程序中的每一行代码。
5.1 顺序结构
5.2 选择结构
5.2.1 if
if(表达式){
语句1;
}else if(表达式2){
语句2;
}else{
表达式3;
}
后续语句;
约定 :== 或 != 比较变量和值是否相等时,把常量卸载前面
#include <stdio.h>
int main(){
int a = 8;
// if(a == 10){// 错误写法, 但不会报错
if (10 == a){
printf("a的值是10\n");
}else{
printf("a的值不是10\n");
}
}
5.2.2 switch
switch(表达式){
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2;
break;
case 常量表达式n:
语句n;
break;
default:
语句n+1;
break;
}
注意
-
switch的表达式及case的值 的类型必须是int,或者可以被提升为整型的值(char,short) -
case的值不能相同 -
每个
case要以break结尾,否则会出现穿透问题 -
default不一定要放在case最后,只有等到所有case不匹配才会执行。
5.3 循环结构
循环条件 成立时,会反复执行 循环体 ,直到条件不成立位置
5.3.1 while
while(循环控制条件) {
循环体中的语句;
能够让循环结束的语句;
....
}
-
循环控制条件:循环退出的主要依据,来控制循环到底什么时候退出
-
循环体:循环的过程中重复执行的代码段
-
循环终止语句(递增、递减、真、假等):能够让循环条件为假的依据,否则退出循环
注意
如果 while 省略了大括号,则后面不能定义变量
#include <stdio.h>
int main(){
while (1) // 死循环
int num = 10; // 报错
// 没有能够让循环结束的语句
}
5.3.2 do while
do {
循环体中的语句;
能够让循环结束的语句;
....
} while(循环控制条件);
a. 应用场景:口令校验
#include<stdio.h>
int main()
{
int num = -1;
do{
printf("请输入密码,验证您的身份\n");
scanf("%d", &num);
}while(123456 != num);
printf("主人,您终于回来了\n");
}
do...while 和 while 的区别
do...while至少执行一次while可能一次都不执行
5.3.3 for
for(初始化表达式;循环条件表达式;循环后的操作表达式) {
循环体中的语句;
}
对比 while 来说, for 更节约内存空间
5.3.4 循环优化
在多重循环中,应当将最长的循环放在最内存,最短的循环放在最外层,减少CPU跨循环层切换的次数
for (row=0; row<100; row++) {
// 低效率:长循环在最外层
for ( col=0; col<5; col++ ) {
sum = sum + a[row][col];
}
}
for (col=0; col<5; col++ ) {
// 高效率:长循环在最内层
for (row=0; row<100; row++) {
sum = sum + a[row][col];
}
}
5.4 四大跳转
5.4.1 break
立刻跳出当前语句或循环
一个 break 只向外跳一层
同一层, break 后面的语句不会执行
5.4.2 continue
结束 本轮 ,进入 下一轮 循环
5.4.3 goto
仅在本函数内实现跳转,不能实现跨函数跳转
#include <stdio.h>
int main(){
int num = 0;
// loop:是定义的标记
loop:if(num < 10){
printf("num = %d\n", num);
num++;
// goto loop代表跳转到标记的位置
goto loop;
}
}
#include <stdio.h>
int main(){
while (1) {
while(true){
goto out;
}
}
out:printf("跳过了所有循环");
}
5.4.4 return
结束当前函数,将结果返回给调用者


被折叠的 条评论
为什么被折叠?



