c语言怎么用switch语句编写四则运算?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言怎么用switch语句编写四则运算?相关的知识,希望对你有一定的参考价值。
用户输入运算数和四则运算符,输出结果,当输入的不是四则运算符或除数为0时,提出错信息、比如、输入 4.4+6.5 输出 =10.9
switch 是一个开关语句,和case配套使用, 和if else 判断语句差不多, switch 语句是用于多分支语句进行条件判断。下例为用switch语句编写的四则运算:#include <stdio.h>
void main()
double N1,N2;
char Operation;
printf("输入运算的两个数");
scanf("%lf%lf",&N1,N2);
printf("请输入运算符(+,-,*,/):");
switch(Operation)
case '+':printf("%lf%c%lf=%lf",N1,N2,Operation,N1+N2);
break;
case '-':printf("%lf%c%lf=%lf",N1,N2,Operation,N1-N2);
break;
case '*':printf("%lf%c%lf=%lf",N1,N2,Operation,N1*N2);
break;
case '/':printf("%lf%c%lf=%lf",N1,N2,Operation,N1/N2);
break;
参考技术A #include <stdio.h>
void main()
double Num1,Num2;
char Operation;
printf("请输入你想运算的两个数");
scanf("%lf%lf",&Num1,Num2);
printf("请输入运算符(+,-,*,/,%):");
switch(Operation)
case '+':printf("%lf%c%lf=%lf",Num1,Num2,Operation,Num1+Num2);
case '-':printf("%lf%c%lf=%lf",Num1,Num2,Operation,Num1-Num2);
case '*':printf("%lf%c%lf=%lf",Num1,Num2,Operation,Num1*Num2);
case '/':printf("%lf%c%lf=%lf",Num1,Num2,Operation,Num1/Num2);
case '-':printf("%lf%c%lf=%lf",Num1,Num2,Operation,(int)Num1%(int)Num2);//double 型不能取余
参考技术B 嵌套。检测第一个操作数,运算符,第二个操作数。 当运算符为 除号时,判断除数是否为零。可以看书 谭浩强的《C程序设计》 多看看就懂了。
java中如何能避免过长的switch-case分支语句?
要编写一个网络程序,socket连接。客户端传上来的都是一些状态码,比如100代表登录,101代表注册等等。这样的状态码大约有800多个
在服务器端,接收到不同的状态码,就要调用不同对象的不同方法,比如,登录就调用user.login(),注册就调用user.register(),等等.
这样,我使用switch-cash语句的话,这个类至少得2000多行。分支太多的话,效率会很低。
我考虑过使用配置文件加反射来实现。结果大量的反射处理同样把效率降得很低。
这种状况应该怎么处理呢?哪位大侠知道?
二楼的能不能详细一点,呵呵。想法不错,可是怎么实现呢,我读到末端,得到功能字符串,还是要使用反射执行啊?
sun官方说明,java中的if是经过效率优化的。
反射的效率是if语句的1/10。(就是说反射是很慢的)
之前做电信项目的时候我就遇到过。
使用if语句几百个分支的效率是每秒几万次。效率非常高。
(当然if中是有逻辑的。)
如果你确实有800个的话。
有一个提高效率的方法。
就是把if分组
if(组一)
if()...
else if(组二)
if()...
每组对应一个类。
类中都实现do(int status)方法。
把状态的if else都放到每个类中的do方法中写。
这样代码清晰。而且由于分了组
每组100个左右,这样效率就更高了。 参考技术A 大约有800多个,就是分组,不要担心效率 参考技术B 我觉得的话应该构建一个树,有1个根结点,10个子节点(表示0-9),每个子结点再分10个子节点,再分..最末端的节点一共构成800多个,每个都存着你需要的功能
然后 读取状态码的时候从第1位读取,按照读出的数字(0-9),分支到下一个子节点,然后读取第二个数字,再分支,一直下去..
这样的话 一个4位的状态码只用执行4次switch,每个switch中判断10个case.而switch-case只写一次,剩下就是递归..不知这样效率如何. 参考技术C 貌似没啥好办法...按数字范围再分分块吧。
以上是关于c语言怎么用switch语句编写四则运算?的主要内容,如果未能解决你的问题,请参考以下文章
switch语句怎么用啊?(刚学单片机,switch语句书上就几句话,连例子都没有。来帮帮我吧!)