实训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分支或者强制类型转换)。