第一阶段06 C语言控制流

*加入CSDN是出于记录,希望有不足之处多加指正。

1、二路分支

逻辑:在程序中如果满足某个条件则运行某段代码,否则不运行这段代码。
形式:

if 语句:表达一种,如果。。。,则。。。
if (a>b) //表达式为真则运行花括号的代码,否则跳过花括号代码
{
则运行这段代码;
}
直接运行后面的代码 // 如果条件不成立则从这一行开始往后运行

if。。。else。。。
if (a > b) // 如果xx条件成立
{
//条件成立则运行该段代码
}
else // 否则执行下列代码
{
//条件不成立则会运行该段代码
}

if (a < b)
{
printf(“a 大于b\n”);
}
else if(a < c)
{
printf(“a 小于 b \n”);
}
else
{
printf(“a 大于 \n”);
}

注意:

  • 不管 if 语句花式 else 语句,建议都添代码模块{ },否则只有第一行有效
  • if 语句可以单独使用,但是 else 不可以单独使用
  • if else是可以嵌套多个

2、多路分支

逻辑:根据不同的多个条件可以执行多个不同的代码块
switch case:

switch(表达式)
{
case a:
代码块
break;
case b:
代码块
break;
default:
以上条件都不符合;
}

int num = 0;
scanf("%d", &num);   //从输入缓冲区中获取一个整型并存放到num的内容中
while(getchar() != '\n'); //清空用户的输入缓冲区

switch(num)
{
    
    
   case 0:
     printf("输入你的数字:0 \n");
     break; //用来跳出switch
   case 1;
     printf("输入你的数字:1 \n");
     break;
   case 2:
     printf("输入你的数字:2 \n");
     break;
   default:
     printf("你输入的数字不在0-2之间 \n");
}

注意:

  • switch (num) 里面的num必须是一个整型表达式,也就是说switch只能判断整型数据
  • case 语句中只能是常量,也可使用普通的字符常量‘c’ ,不包括被const 修饰的变量
  • break 语句作为没有代码块的结尾,用于跳出switch结构体,如果没有break,则会跳过后面的所有case,直接执行里面的代码块(当前语句开始顺序执行后面所有的的代码块)
  • default 语句并不是必须包含的,一般放在switch的最后面(可以省略break)
  • const
    概念:使得变量不能被修改
    作用:修饰普通变量,使得变量不能被修改
    修饰指针:使得该指针的指向不能被修改/不可以通过该指针来修改该指针所指向的内存
int a = 10;
a = 20;
int const b = 20;
const int c = 30;

b = 40; //错误,read-only variable 'b'
c = 90; //错误,read-only variable 'c'

3、while() 与 do…while()循环

逻辑:使得某一段代码重复运行
形式:

while(表达式)   //先判断,再循环
{
    
    
   //代码块
}
-------------
do
{
    
    
   //代码块
}while(表达式) //先执行代码块,在判断
#inlude <stdio.h>
int main(int argc, char const *argv[])
{
    
    
  int a = 0;
  while (a < 10) //不添加分号
  {
    
    
    printf("while a:%d \n", a );
    a++;   
  }


do
 {
    
    
   printf("do_while a:%d \n", a);
   a++;
 }while(a < 100);
}

注意:

  • while 语句后面不需要添加分号
  • do while 是先执行一个循环体然后再去判断,记得添加分号作为结束

4、for 循环

逻辑:使得某一段代码重复运行
实例:

int a = 10;
for(初始化;判断条件;运算表达式)
{
    
    
   //代码块
}

-----------------------
for(int a = 1; a <= 10; a++)
{
    
    
   printf("a:%d \n", a );
}
//a = 1;初始化工作只有在第一次执行该循环的时候会运行
//在非C99的编译器中是不支持for循环中定义并直接初始化int a = 1,需要写在for语句的前面
//a++ 只有第一次不执行。

5、break / continue

break:跳出当前的循环体,while for / switch 用来跳出当前语句
continue:结束当次循环,重新再来一次

while(1)    //死循环
{
    
    
  printf("a:%d\n", a++);
  if(a >= 10)
  {
    
    
     break;
  }
}

----------------------
for(int i = 0; i < 100 ; i++)
{
    
    
// ! 表达式中的真假值进行取反
  if(!((i % 2) == 0))   //先将i 与 2 进行求余
  (
     continue;  //跳过本次循环重新再来
  )
  printf("i:%d \n", i);
  return 0;
}

6、goto 语句

概念:无条件跳转
一般很少出现在应用程序中,一般会出现在驱动程序的源代码中,用来处理一些不可解决的硬件导致的文件,做出错的处理。

#include <stdio.h>

int main(int argc,char const *argv[])
{
    
    
   printf("%s__%d, argc:%d\n", __FUNCTION__ , __LINE__ , argc);
   goto lable_test; //无条件跳转到 lable_test 中
   printf("%s__%d, argc:%d\n", __FUNCTION__ , __LINE__ , argc);
 lable_test:
   printf("%s__%d, argc:%d\n", __FUNCTION__ , __LINE__ , argc);
   return 0;
}

语法:
goto语句是直接跳转到本代码中出现的相应的标签中执行;
标签以冒号结尾,相当于一个标识符。
作用:
当程序出现严重错误无法脱离,就可以直接使用goto 到指定的代码中执行出错处理;
goto 的可读性不高,一般也不建议使用。

Guess you like

Origin blog.csdn.net/m0_61557794/article/details/121848332