C语言入门 – 分支控制流

LongGuan_admin 发布于 6 天前 22 次阅读


IF语句

  • 单独使用
    • 只有if语句的代码为真时,内部的代码块才会执行
    • if语句内部代码块只有一行时,可以省略大括号
if(表达式)
    执行语句xxxx; ---> 如果表达式为真,那么执行该语句

    yyyyy;   ---> 不管条件是否为真,永远执行这个语句,因为这个表达式不属于if响应范围
  • 配合else - else if使用
//if else语句
if(表达式)//如果为真,执行复合语句1,如果为假,则执行复合语句2
{
    复合语句1;
}
else{
    复合语句2;
}
-------------------------------------------------
//if else-if语句
if(表达式1)//如果为真,执行复合语句1
{
    复合语句1;
}
else if(表达式2)
//如果判定条件1和判定条件2都满足,那么只会执行复合语句1,而不会执行复合语句2
{
    复合语句2;
}
else if(表达式3)
{
    复合语句3;
}
else   //以上三个条件都不满足的时候,就会执行这个
{
    复合语句4;
}
  • 嵌套式使用
//if(){if(){}} 嵌套使用
    int money = 100;
    if (money > 9800){
        printf("你是富人 \n");
    }
    if (money >= 110){
        printf("你是中产 \n");
    }
    else{
        if (money >= 50){
            printf("你是有钱的底层 \n");
        }
        else if (money >= 10) {
            printf("你是普通人 \n");
        }
        else{
            printf("你是穷人 \n");
        }
        printf("你是底层 \n");
    }

switch语句

  • 常量表达式的值必须为整数值,每个case后面的常量表达式的值必须不同
  • 常量表达式的值与某个case后面的常量表达式的值相同的时候,就会打开开关执行冒号后的语句,直到出现break语句,就会跳出switch,否则就会轮到下一个case(穿透)
  • break:
    • 提前跳出switch循环
  • 所有的case后面的常量表达式都不匹配时,就会执行default后面的语句
  • 不适合用作范围判断
switch(表达式) // 或者也可以说是 判断值
{
    case 常量表达式1:
    	执行语句1
    	break;
    case 常量表达式2:
    	执行语句2
    	break;
    case 常量表达式3:
    	执行语句3
    	break;
    default:
    	其他情况下执行的语句
    	break;
}

循环体

for语句

for( 初始化语句表达式1; 判断语句表达式2; 循环操作语句表达式3)
{
    循环体
}

while语句

while(表达式)//表达式的值为真(非0)时,进入循环体;为假时,跳出循环体
{
    循环体//一定要写更新条件,否则陷入死循环
}

for循环更注重循环次数,while循环更注重循环条件

for <---> while 可以相互替换

int M = 777;
    printf("请输入月份! \n");
//while循环
     while (scanf("%d", &M) == 0)
     {
         printf("输入失败!请重新输入! \n");
         getchar(); // 清除从缓冲区刷新出来的垃圾
     }
//for循环
    for (; scanf("%d", &M) == 0; )
    {
        printf("输入失败!请重新输入! \n");
        getchar(); // 清除从缓冲区刷新出来的垃圾
    }

do - while语句

无论条件是否满足,至少执行一次循环

do{
  循环体
}while(表达式);  //注意:表达式后有一个分号

goto 语句

  • 可以跳转到当前函数的任意地方
    • 向上跳转
      • 可以与if构成循环
    • 向下跳转
      • 可以跳出多重循环
goto 标签;

标签:  //代码跳转到此处执行

break和continue

  • break
    • 只能作用于循环语句和switch语句中
    • 不能单独用于if语句
  • cintinue
    • 只能用于循环体,不能单独用于if或switch语句,除非外面包含了循环

练习:质数的求解和算法优化

#include <math.h> //math是动态库,需要-lm参数编译运行
int num = 29;

    int flag = 1; // flag 是一个假设  1 表示假设他是质数   0 不是质数
//sqirt()开根号  ,数字乘法对称的一个数 乘以 大的数 得到目标结果
//平方根就是对称点,作用:减少循环次数
    for (int i = 2; i < sqrt(num); i++)
    {
        printf("%d ", i);
        if (num % i == 0) // 数字被除自身和1以外其他数整除, 表示不是质数,没有必要继续循环了
        {
            flag = 0;
            break;
        }
    }
    printf("\n");

    printf("flag = %s \n", flag == 1 ? "是质数" : "不是质数");

此作者没有提供个人介绍。
最后更新于 2026-01-12