zoukankan      html  css  js  c++  java
  • c 语言- 选择结构 if

    流程控制基本概念

    • 顺序结构:默认的流程结构,按照书写顺序从上到下的执行

    • 选择结构:对给定的条件进行判断,根据判断的结果来决定执行那一段代码

    • 循环结构:在给定条件成立的情况下,反复执行某一段代码

      选择结构 if

    • 第一种格式

        // 第一种结构
        /*
         if (条件表达式){
            代码块
         } // 如果条件表达式成立执行代码块
         */
        int age = 18;
        if (age >= 18){
            printf("你可以去上网吧了
    ");
        }
        printf("end
    ");
        
        if (age < 17){ // 条件满足执行代码块,不满足直接执行 end
            printf("你可以去上网吧了
    ");
        }
        printf("end
    ");
    
    • 第二种格式
        // 第二种结构
        /*
         if (条件表达式){ // 如果条件表达式成立执行代码块1
            代码块1
         }  else{       // 如果条件表达式不满足执行代码块 2
            代码块 2
         }
         */
        int age = 10;
        if(age >= 18){
            printf("你可以去上网吧了
    ");
        }else{
            printf("小屁孩未满十八周岁,回家洗洗睡吧
    ");
        }
    
    • 第三种格式
        // 第三种格式
        /*
         if (条件表达式){ // 如果条件表达式成立执行代码块1
            代码块1
         }
         else if(条件表达式 2) {       // 如果条件表达式2不满足执行代码块 2
            代码块 2
         }
         else if(条件表达式 3){          // 如果条件表达式2不满足执行代码块 2
         
         }
         else{                      // 如果前面的都没有满足,就会执行 else 中的代码块
         
         }
         // 只要条件表达式为真了,后面的 else if就不会执行了
         // 如果前面的都没有满足,就会执行 else 中的代码块
         // 众多的大括号只会执行一个
         // 如果执行到后面的d条件表达式,就代表掐面的表达式都不成功
         */
        int age = 6;
        if (age == 1){
            printf("该走路了");
        }else if (age == 6)
        {
            printf("该上学了");
        }else if(age == 18)
        {
            printf("你可以进入网吧了");
        }else{
            printf("你可以随便干一些事情了");
        }
    
    • 第五种格式 if 的嵌套使用
        // 第五种格式 if 中的嵌套
        /*
        if (条件表达式 1){
            代码块
            if (嵌套中的条件表达式 1-1){
                代码块
                if ( 嵌套中的条件表达式 1-1-1){
                     代码块
                }
            }
        }
        */
        int number = 0;
        if (number > 3){
            if (number < 10){
                printf("number 是在 3-10 之间的数字
    ");
            }else{
                printf("number 是在大于 10的数字
    ");
            }
        }else{
            printf("number 是在 小于 3 的数字
    ");
        }
    
    • if 的练习题
        // if 练习
        /*
        // 从键盘c输入一个整数,判断是奇数还是偶数,偶数输出 yes,奇数c输出 no
        printf("请您输入一个整数,以回车结束
    ");
        int number = 0;
        scanf("%i",&number);
        if (number % 2 == 0){
            printf("YES");
        }else{
            printf("NO");
        }
        */
       
    
     // 根据用户输入的 1-7 的整数,输出对应的星期几
        // 使用 else if 可以保证只执行一个代码块,执行后就不会继续往下执行,如果z使用多个 if,就是从上往下执行一个一个来
        int number = -1;
        printf("请输入一个1-7 的数字,我们将为您显示星期几");
        scanf("%i",&number);
        if(number > 7 || number < 1){
            printf("哪有这样的星期呢?
    ");
        }
        if(number == 1){
            printf("星期一");
        }else if (number == 2)
        {
            printf("星期二");
        }else if (number == 3)
        {
            printf("星期三");
        }else if (number == 4)
        {
            printf("星期四");
        }else if (number == 5)
        {
            printf("星期五");
        }else if (number == 6)
        {
            printf("星期六");
        }else if (number == 7)
        {
            printf("星期日");
        }
        
    
        // 接收s用户输入的一个整数,根据月份输出对应的季节
        // 3-5春季,6-8 夏季,9-11 秋季,12,1,2 冬季
        printf("n请您输入一个1-12 之间的月份,以回车结束
    ");
        int month = -1;
        scanf("%i",&month);
        if (month < 1 || month > 12){
            printf("一年就 12 个月,不会给你多发工资的
    ");
        }else if (month >= 3 && month <= 5 )
        {
            printf("春季
    ");
        }else if (month >= 6 && month <= 8 )
        {
            printf("夏季
    ");
        }else if (month >= 9 && month <= 11 )
        {
            printf("秋季
    ");
        }else{
            printf("冬季
    ");
        }
    
    // 注意点在于冬季的判断,12,1,2,此时可以利用 else if 只会执行一个条件表达式的代码块的特点,开头排除掉大于 12,和小于 1 的数字,剩下的数字肯定会走到下面的判断中,春季,夏季,秋季都好弄.
    
        //键盘输入两个整数,判断大小后输出较大的内个数
        int num1 = -1,num2 = -1;
        printf("请输入两个整数,以回车结束
    ");
        scanf("%i,%i",&num1,&num2);
        if (num1 > num2){
            printf("%i
    ",num1);
        }else if(num1 < num2 )
        {
            printf("%i
    ",num2);
        }else{
            printf("您输入的两个数相等
    ");
        }
        
        // 但是使用三目运算符是不是更简单呢?
        int max = num1 > num2 ? num1 : num2;
        printf("您输入的两个数的最大值是:%i
    ",max);
        // 这两种方式的对比,三目运算符可以快速的找出最大值,但是 if,else 可以找到这个最大值,而且还可以对此变量进一步的操作
    
    
        // 从键盘输入l三个数,输出最大的内个数
        int num1,num2,num3;
        printf("请输入a三个数,以逗号分割,回车结束");
        scanf("%i,%i,%i,",&num1,&num2,&num3);
        if (num1 > num2){
            if (num1 > num3){
                printf("最大值是:%i
    ",num1);
            }
            else{
                printf("最大值是:%i
    ",num3);
            }
        }else{
            if(num2 > num3){
                printf("最大值是:%i
    ",num2);
            }
            else{
                printf("最大值是:%i
    ",num3);
            }
        }
    
        // 判断大小,交换变量的值
        int num1,num2,num3;
        printf("请输入a三个数,以逗号分割,回车结束");
        scanf("%i,%i,%i,",&num1,&num2,&num3);
        if (num1 < num2){
            int temp = num1;
            num1 = num2;
            num2 = temp;
        }
        if (num1 < num3)
        {
            int temp = num1;
            num1 = num3;
            num3 = temp;
        }
        if (num2 < num3)
        {
            int temp = num2;
            num2 = num3;
            num3 = temp;
        }
        printf("%i,%i,%i,",num1,num2,num3);
    
    • if 的注意点

      • 任何数值都有真假性,非 0 既是真,
          if (1){
              printf("你好
      ");
          }else{
              printf("走不到这里");
          }
      
      • if条件判断后面最好加上大括号(如果省略大括号只会执行离他最近的一条语句)
      if (1)
          printf("你好");
      printf("end");
      
      • If条件表达式没有加大括号,而且写了分号时,(分号也是一个语句)
      if(1);
      	printf("nihao");
      printf("end");
      // 此时只会执行 end,因为条件表达式后面有一个分号,分号是一个语句
      
      • 如果要在 if里面定义变量,那么必须要写上大括号,不然会报错
      if (1)
          int number = 20;  
      printf("%i
      ",number); // 没有大括号此时是报错的,因为if 后面没有写大括号只会管离得最近的一条语句,而在后面有要打印 number 的值,在这个作用域中找不到 number 变量,
      printf("end");
      

    石头剪刀布

        // 练习 石头剪刀布
        // 有两个玩家,我,电脑
        // 两个角色都可以出石头,剪刀,布
        int computerNum = arc4random_uniform(3); // 生成随机数
        int userNum;
        printf("请您输入石头,剪刀,布--石头:0,剪刀:1,布:2
    ");
        scanf("%i",&userNum);
        printf("电脑出:%i,玩家出:%i
    ",computerNum,userNum);
        if (userNum > 2 || userNum < 1){
            printf("玩家莫要作弊");
        }else if((userNum == 0 && computerNum == 1) ||
           (userNum == 1 && computerNum == 2) ||
           (userNum == 2 && computerNum == 0)){
            printf("玩家获胜");
        }else if ((userNum == 0 && computerNum == 2) ||
                  (userNum == 1 && computerNum == 0) ||
                  (userNum == 2 && computerNum == 1))
                  {
                      printf("电脑获胜");
        }
        else{
            printf("平局");
        }
    
  • 相关阅读:
    xshell安装错解决方案
    (转)进程process和线程thread的关系
    selenium Gird
    python发布文件(windows)
    (转)ci
    selenium通过python字典获取配置
    selenium断言的分类
    C#从Image上读取文本
    C#屏幕截图
    WPF实现TextBox水印效果
  • 原文地址:https://www.cnblogs.com/shanshan-test/p/12903029.html
Copyright © 2011-2022 走看看