• 第四章 选择结构


    一.if语句

      1.单分支结构

          格式1:   if(<表达式>)语句1; //语句1,

          说明:只一条语句。 如果表达式为真, 执行语句1; 否则什么都不做;

         格式2: if(<表达式>)

             {

              语句块1;

            }

      2. 双分支结构 if… else语句  

          格式: if (<表达式>)

              语句1;

            else

              语句2;

          说明: 如果表达式为真, 执行语句1; 否则执行语句2

              else子句是if语句的一部分,它不能作为语句单独使用, 必须与if配对使用。

      3.多分支结构 if … else if 语句

          格式:

            if()

            {

              语句块1;

            }  

            else if()

            {

              语句块2;

            }

            …

            else 是不能跟条件的  

            {

              语句块n;

            } 

          

          格式说明

            1.表达式一般为逻辑表达式或关系表达式, 也可以是任意的数值类型。

            2.else子句不能脱离if子句而存在, 下面写法是错误的。

      4.if语句的嵌套

          else与if必须成对出现,  且else总是与最近的一个未配对的 if 配对

                             

          如果 if与else的数目不同, 为实现指定的操作, 可以加花括号来确定配对关系。

                             

          内层的选择结构必须完整地嵌套在外层的选择结构内, 两者不允许交叉。

                                        

          书写选择结构时:

              缩进  使程序层次分明

              花括号{}  逻辑明确 代码易读、

          例如  判断输入的字符是数字还是字母 

            #include <stdio.h>
            void main()
            {
              char a=0;
              printf("请输入一个字符 ");
              scanf("%c",&a);

              if (a>='0' && a<='9')
              {
                printf("你输入的是数字%c",a);
              }

              else if(( a>='A'&&a<='Z')||(a>='a'&&a<='z'))

              {
                printf("你输入的是字母%c",a);
              }

              else
              {
                printf("你输入的是其他字符");
              }


            }

      5.switch语句

          也称开关语句。多选一,同多分支类似  但是可读性比多分支强  一般做菜单程序等使用

        格式: switch(表达式)

          {

          case 常量表达式1: 语句组1;

            break;

          case 常量表达式2: 语句组2;

            break;

            ……

          case 常量表达式n: 语句组n;

            break;

           default 语句n+1;

          }

        说明:各个case包括(default)的出现次序可以任意。在每个case分支都带有break的情况下, case次序不影响执行结果。

           case  default的 顺序 可以任意

            不能用浮点型是因为 浮点数不可以用来精确比较

        例如  写一个计算器的程序  方法一

            #include <stdio.h>
            #include <stdlib.h>
            #include <math.h>
            /加
            double get_sum( double num1, double num2)
            {
              return num1+num2;
            }
            //减
            double get_sub( double num1, double num2)
            {
              return num1-num2;
            }

            //乘
            double get_mul( double num1, double num2)
            {
              return num1*num2;
            }

            //除
            double get_div( double num1, double num2)
            {
              if (num2==0)
              {
                printf("语法错误");
                exit(0);
              }
              else
              {
                return num1/num2;
              }

            }
            //幂
            int get_aaa( int num1, int num2)
            {

              return pow(num1,num2);

            }

              //取余
            int get_xxx( int num1, int num2)
            {
              return num1%num2;
            }
            void main()
            {
              float num1=0;
              float num2=0;
              char ch=0;
              double m=0;
              double n=0;
              scanf("%f%c%f",&num1,&ch,&num2);
              switch (ch)
              {
                case '+': m=get_sum(num1,num2);
                break;
                case '-': m=get_sub(num1,num2);
                break;
                case '*': m=get_mul(num1,num2);
                break;
                case '/': m=get_div(num1,num2);
                break;
                case '%': m=get_xxx(num1,num2);
                break;
                case '$': m=get_aaa(num1,num2);
                break;
                default : printf("输入运算符错误");
              }
                printf("num1%cnum2=%.2lf",ch ,m);
            }


            //写一个计算器程序  方法二
              #include <stdio.h>
              #include <stdlib.h>
              #include <math.h>
              void main()
              {
                float num1=0;
                float num2=0;
                char ch=0;
                double m=0;
                double n=0;
                int flag=0;
                int x=0;
                int y=0;
                while(1)
                {
                  printf("请输入要计算的运算符 ");
                  scanf("%f%c%f",&num1,&ch,&num2);
                  switch (ch)
                  {
                    case '+': m=num1+num2;
                    break;
                    case '-': m=num1-num2;
                    break;
                    case '*': m=num1*num2;
                    break;
                    case '/': x==0?(flag=1):(m=num1/num2);
                    break;
                    case '%': flag=2;
                    break;
                    case '$': y==0?(flag=3):(m=pow(num1,num2));
                    break;
                    default : flag=4;
                  }
                  switch (flag)
                  {
                    case '1': printf("除数不能为0 ");
                    break;
                    case '2': printf("取余不能是小数 ");
                    break;
                    case '3': printf("底数不能为0 ");
                    break;
                    case '4': printf("运算符错误 ");
                    break;
                    default: printf("num1%cnum2=%.2lf ",ch ,m);
                    }
                  }

                }

  • 相关阅读:
    (转)学习笔记viewController(欢迎指错)
    配置Xcode版本控制SVN详细步骤内含解决Xcode/Mac OS10.8无法配置SVN的解决方法(转)
    iPhone 3G/3GS(有锁)基带与导航功能
    [转]Iphone 3G/3Gs Home键失灵的根本原因和解决方法
    NSDate的常用用法(转)
    短信操作(转)
    如何在Symbian SDK下使用GCCE4(转)
    nS60_sdk_v1_2的VC6问题(转)
    如何获取应用程序图标(转)
    如何实现圆角的UITextView iphone短信发送(非系统界面)
  • 原文地址:https://www.cnblogs.com/hyt19911004/p/12327789.html
Copyright © 2020-2023  润新知