yihayoooooo 发表于 2020-3-9 18:17:02

switch语句

#include <stdio.h>
#include <stdbool.h>

int main()
{
      int op1, op2;
      char ch;
      float result;
      bool invalid = false;

      printf("请输入式子:");
      scanf("%d %c %d", &op1, &ch, &op2);

      switch (ch)
      {
                case '-': op2 = -op2; // no break
                case '+': result = (float)op1 + op2; break;
                case '*': result = (float)op1 * op2; break;
                case '/':
                        if (op2 != 0)
                        {
                              result = (float)op1 / op2;
                              break;
                        }
                        else
                        {
                              invalid = true;
                              break;
                        }
      }

      if (invalid)
      {
                printf("除数不能为零!\n");
      }
      else
      {
                printf("结果是:%.2f\n", result);
      }

      return 0;
}


switch (ch)
      {
                case '-': op2 = -op2; // no break
                case '+': result = (float)op1 + op2; break;
                case '*': result = (float)op1 * op2; break;
                case '/':
                        if (op2 != 0)
                        {
                              result = (float)op1 / op2;
                              break;
                        }
                        else
                        {
                              invalid = true;
                              break;
                        }
      }
可以说一下这一段什么意思吗
谢谢

qiuyouzhi 发表于 2020-3-9 18:20:38

switch前三个不多说,就是加减乘
最后一个,因为除数是不能等于0的,
所以要加一个判断,如果除数不为0
就继续,否则就不予运算

major_lyu 发表于 2020-3-9 18:54:22

switch (ch)
      {
                case '-': op2 = -op2; // no break                         //如果ch是‘-’。将减数变成负的减数,然后执行下一个case,也就是说加法运算。意思就是a-b=a+(-b);
                case '+': result = (float)op1 + op2; break;         // 如果成是’-‘或者加,执行完这一句跳出switch
                case '*': result = (float)op1 * op2; break;            // ch是’*‘,执行这一句,跳出switch
                case '/':                                                         // 如果’/',检查除数是否为0,
                        if (op2 != 0)//除数不为零,进行除法运算。并跳出switch
                        {
                              result = (float)op1 / op2;
                              break;
                        }
                        else // 如果除数为零,将无效信号invalid设置为true,不进行除法运算跳出switch
                        {
                              invalid = true;
                              break;
                        }
      }
页: [1]
查看完整版本: switch语句