C语言程序设计案例精粹
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

实训5.3——使用switch语句实现四则运算

教学录像 光盘\chap5\实训5.3——使用switch语句实现四则运算

键盘输入四则运算式,通过switch语句分支执行+,-,*,/ 的四则运算,结果精确到小数点后3位。例如,输入4.5-6,将输出结果:4.5-6=-1.5。程序只能实现简单的四则运算,不能实现复合四则运算,输入参数采用float型,使用switch语句做四则运算的分支程序。

1. 需求分析

分析目标需求,程序中需要做到如下几条。

需求1:键盘输入四则运算式,使用scanf函数接收输入参数。

需求2:switch语句作分支判断四则运算。

需求3:输出结果,精度为小数点后3位。

2. 技术应用。

根据C语言标准以及开发平台版本,完善各个需求模块。

对于需求1,使用scanf函数输入四则运算表达式。

对于需求2,使用switch语句对各四则运算作分支处理。

对于需求3,采用数据类型float型输出,精确到小数点后3位结果。

通过上述分析,写出完整的程序如下。

程序清单5.3:CalculateFormulaProcess.c

          01   #include<stdio.h>
          02   main()
          03   {
          04       float a=0.0;
          05       float b=0.0;
          06       char c;
          07      printf("请输入要计算的表达式:a+(-, *, /)b\n");
          08       scanf("%f%c%f", &a, &c, &b);                    //输入参数
          09       switch(c)                                   //判断四则运算类型
          10       {
          11           case' +' : printf("%.3f\n", a+b); break;            //加运算
          12           case' -' : printf("%.3f\n", a-b); break;            //减运算
          13          case' *' : printf("%.3f\n", a*b); break;           //乘运算
          14           case' /' :                                //除运算
          15           {
          16               if(0! =b)                           //判断除数是否为0
          17               {
          18                   printf("%.3\n", a/b); break;           //除运算
          19               }
          20               else
          21               {
          22                   printf("错误:除数不能为 0\n");     //错误提示
          23                   break;
          24               }
          25           }
          26           default: printf("错误:您输入的参数不正确\n");  //错误提示
          27       }
          28   }

程序第9行switch语句区分不同运算类型,对于加、减和乘运算,程序直接输出运算结果。对于除运算,程序第16行首先判断除数b是否为0,若为0,则打印错误信息,并退出程序;若不为0,则输出除法之后的商。

程序运行时输入计算公式,按回车键。

请输入要计算的表达式:a+(-, *, /)b

4*6.5

输出结果为:26.000

作者心得:

程序第16行对四则运算作了除法保护,以表达式0! =b为判断条件,这里需要说明的是,假如将该表达式改为0==b,并将23行24行与19行调换,程序执行效率将变低。由于作为正常状态的b的值出现的异常情况较少,因此,假如程序输入正确,程序将总是首先判断其错误情况0==b,然后再执行else中的正确流程,这样会导致程序效率降低。读者可修改程序后仔细推敲其中原理。

随·堂·实·训5.3

在程序中添加模除(%)运算功能,添加或更改代码,使其支持该功能。

提示:

(1)回顾模除运算的规则(适用于整型数据)。

(2)程序已定义为float型,合理作分支设计,使其支持输入数据的模除运算(if分支或者强制类型转换)。