Day03

switch选择结构

  • switch选择结构格式
     * switch(表达式)
     * case 表达式1:
     *  表达式1控制的语句;
     *  break;
     * case 表达式2:
     *  表达式2控制的语句;
     *  break;
     * default:
     *  表达式3控制的语句;

  • switch执行流程
 // 执行流程:
     // 根据switch()表达式的结果在case中匹配,一旦某个case被执行,其他的case就不会
     // 再被执行,如果所有case都没有匹配到,就执行default中的语句
  • switch选择结构的应用场景
int main()
{
    //在企业开发中,能用if就选择使用if结构,if更适合对区间的判断,或者对多条件判断
    //switch更适合对固定的几个数据进行判断
    //switch理论上的性能比if高一点
    return 0;
}
  • case穿透问题
int main()
{
int main()
{
   /*
    * case穿透问题
    *
    * 1.在switch中,只要有一个case被匹配了,其他的case和default都会时效
    * 2.default写在最后,可以省略break
    * 3.break 作用是结束当前switch语句
    * 4.case后面只能放常量和表达式,且值不能重复
    * 5.case后面不能定义变量,如果要定义变量必须加{},防止作用域混乱问题
    */

    int day = 1;
    switch (day) {
    case 1:
        printf("星期一\n");
        //break;    //此处省略break就会发生穿透问题
    case 1: //值相同会报错
        printf("星期二\n");
        break;
    default:
        printf("其他");//此处可以省略break
    }
    return 0;
}
  • 练习题
int main()
{
    /*
     * 实现一个小型的计算器 + - * /
     *
     */

    //1.定义三个变量
    int a = -1, b = -1;
    char ch;
    //2.提示用户输入内容
    printf("请按照如下格式输入\n");
    printf("示例 1 + 1\n");
    //3. 键盘接收用户输入内容
    scanf("%i %c %i", &a, &ch, &b);
    //4. 判断当前操作
    switch (ch) {
    case '+':
        printf("%i %c %i = %i", a, ch, b, a+b);
        break;
    case '-':
        printf("%i %c %i = %i", a, ch, b, a-b);
        break;
    case '*':
        printf("%i %c %i = %i", a, ch, b, a*b);
        break;
    case '/':
        printf("%i %c %i = %i", a, ch, b, a/b);
        break;
    case '%':
        printf("%i %c %i = %i", a, ch, b, a%b);
        break;
    }
    //5.输入当前结果
    return 0;
}

while循环语句

  • while循环语句格式
int main()
{
    /*
     * while(条件表达式){
     *   条件满足时候才执行的代码 
     * }
     */
    return 0;
}
  • while循环语句注意点
int main()
{
    /*
     * 特点:
     * 1.只有条件满足才会执行{}中的语句,执行完成后会再次判断条件是否满足
     * 如果满足就会再次执行,直到表达式条件不满足为止
     *
     * 2. 和if一样都可以省略大括号
     *    省略{}只会控制紧随其后的语句,而且后面不能定义变量
     * 3. while()和{}之间不能书写;
     * 4. while和if一样可以嵌套其他合法代码
     */

    while (0); {
        //此处不能写分号,如果加上;就会对后面的语句失去控制
    }
    return 0;
}
  • 练习题
int main()
{
    /*
     * 需求:要求统计1~n中有多少个能被7整除的数
     *
     */

    //1. 定义变量记录被7整除的个数
    int count = 0, num = 1;
    //2. 定义变量记录用户输入的n
    int n = 0;
    //3. 键盘输入
    printf("请输入一个整数\n");
    scanf("%i", &n);
    //4. 判断是否能整除
    while (num <= n) {
        // 这里使用了编程开发中计数器实现
        if(num % 7 == 0){
            //能整除
            count++;
        }

        num++;
    }
    //5. 打印个数
    printf("%i", count);
    return 0;
}

dowhile循环语句

  • 格式
int main()
{
    /*
     * do{
     *  被控制语句
     * }while(条件表达式);
     */
     
    return 0;
}
  • dowhile特点
int main()
{
    /*
     * do{
     *  被控制语句
     * }while(条件表达式);
     *
     *
     * 特点: 不会先判断条件是否满足,会先执行依次{}中的代码,然后再判断条件
     *
     * 大部分情况下while和dowhile可以互换,一般选择while
     * 
     * 执行流程:
     * 先执行一次do中的语句,然后判断条件是否成立,如果成立再次执行do中的语句,直到条件不成立
     *
     */


    //1. 定义一个变量
    int num = -1;
    //2. 提示用户输入1~3的整数

    do{
        printf("请输入1~3之间的整数\n");
        //3. 接收用户输入再判断
        scanf("%i", &num);
    }while (num < 1 || num >3);
    printf("%i\n", num);
    return 0;
}

for循环语句

  • 格式
for(初始化表达式;条件表达式;循环后增量表达式){
        被控制语句
}
  • 注意点
int main()
{
    /*
     * for循环注意点:
     * 初始化表达式的作用: 有且只有被执行一次
     * 循环表达式的作用: 想要执行循环体,表达式必须为真
     * 
     * 增量表达式:只有循环体执行完后才会执行
     * 
     * 执行流程:
     * 1.执行一次初始化表达式
     * 2.判断条件表达式是否为真
     * 3.如果条件表达式为真,执行循环体
     * 4.执行完循环体,执行循环后增量表达式
     * 5.重复2~4步
     */
    return 0;
}
  • 特点
int main()
{
    /*
     * while循环特点:
     * 控制循环的变量,定义在了while的外面,因此在循环内部和外部都可以使用该变量
     * 
     * for循环特点:
     * 控制循环的变量,定义在了for的内部,只能在循环内部使用,外面不能使用该变量
     * 
     * 企业开发中,能用for就用for循环
     */
    return 0;
}

  • for循环作用域的问题
    结论: 在for循环中定义和初始化表达式同名的变量不会报错
  • 注意点
int main()
{
    //在for的()中不能使用循环体中定义的变量
    for(int i =0; i < 10; conunt++){
        int count = 20;
        i++;
    }
    return 0;
}

break

  • 注意点
    break只用在switch和循环结构中,离开应用的范围没有任何意义
    break的作用就是结束当前语句
    离开应用范围会报错
    在应用范围内,break后面不能编写语句,因为永远执行不到
    在循环嵌套的时候,break只会结束所在的循环

continue

int main()
{
    /*
     * continue
     * 只能用在循环中,离开后没有意义
     * 作用: 跳出本次循环,执行下一次循环,只要在循环中遇见continue,就会直接跳回到条件表达式
     *
     * 注意点:
     * 和break一样后面不能写语句,因为永远执行不到
     * 循环嵌套的时候continue只会跳出所在的循环
     *
     *
     */

    for(int i = 0; i < 10; i++){
        if(i == 5){
            continue;
        }
        printf("i = %i\n", i);
    }
    return 0;
}

goto

int main()
{
    //goto只能用于在同一个函数中跳转,可以往前跳,也可以往后跳,只要是在同一个函数中
    //注意点:
    //goto需要配合标签使用
    //标签可以是任意的名称后面加:(冒号)即可

    printf("打印1");
    goto lenj;
    printf("打印2");
    lenj: printf("打印3");

    return 0;
}

循环练习

规律: 外部循环是控制行数,内部循环是控制列数

int main()
{
    /*
     *  *
     *  **
     *  ***
     *  ****
     *
     */

    //控制行数
    for(int i = 0; i <= 3; i++){
        //控制列数
        for(int j = 0; j<= i; j++){
            printf("*");
        }
        printf("\n");
    }

    return 0;
}
int main()
{
    /*
     * *---
     * **--
     * ***-
     * ****
     *
     *
     */


    for(int i = 0; i <= 3; i++){
        for(int j = 0; j <= i; j++){
            printf("*");
        }
        for(int k = i; k <= 2; k++){
           printf("-");
        }
        printf("\n");
    }

    return 0;

}
#include 

int main()
{
    /*
     *   *
     *  ***
     * *****
     *
     */

    for(int i = 0; i <= 2; i++){
        for(int j = 0; j <= 2*i; j++){
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

你可能感兴趣的:(Day03)