成为C++高手之if与switch
来源:互联网 发布:web项目怎么管理网络 编辑:程序博客网 时间:2024/05/22 16:52
计算器第三版
上一节中的这一部分:
//跟据运算符进行不同的运算 if(opt == 1){ //加 result = number1+number2; } if(opt == 2){ //减 result = number1-number2; } if(opt == 3){ //乘 result = number1*number2; } if(opt == 4){ //除,现在只能整除 result = number1/number2; }
有点问题,虽然逻辑上没问题,但是运行不高效。因为如果opt==1,那么加运算被执行,那么其它的运算肯定不用再看了,但上面的代码依然会执行后面的判断。浪费CPU啊。这样改就OK了:
//跟据运算符进行不同的运算 if(opt == 1){ //加 result = number1+number2; }else if(opt == 2){ //减 result = number1-number2; }else if(opt == 3){ //乘 result = number1*number2; }else if(opt == 4){ //除,现在只能整除 result = number1/number2; }
加了else表示if不成立时才执行。效率变高了。其实可以把运算符不在范围内时的提示功能也结合进来,变成这样:
int main(void){ //保存用户输入的数 int number1; int number2; int opt;//运算符 //提示用户输入第一个数: printf("请输入第一个数:\n"); int r =scanf("%d",&number1); //查看Scanf是否收到了正确的数 if(r==0){ printf("别调皮,这样不好玩,我走了\n"); //程序退出 return 0; } //提示用户输入第二个数 printf("请输入第二个数:\n"); r = scanf("%d",&number2); if(r==0){ printf("别调皮,这样不好玩,我走了\n"); //程序退出 return 0; } //提示用户输入运算符 printf("请输入运算符(1234分别对应加减乘除):\n"); r = scanf("%d",&opt); if(r==0){ printf("运算符也是数字,别搞错好吗?你这样让我怎么混? 我走了\n"); //程序退出 return 0; } //程序运行到这里说明两次输入都正确 int result;//存放计算结果 //跟据运算符进行不同的运算 if(opt == 1){ //加 result = number1+number2; }else if(opt == 2){ //减 result = number1-number2; }else if(opt == 3){ //乘 result = number1*number2; }else if(opt == 4){ //除,现在只能整除 result = number1/number2; }else{ printf("运算符必须是1,2,3,4之一才行!走了\n"); return; //退出 } //输出结果 printf("%d+%d = %d\n",number1,number2,result); return 0;}
最后的else表示当上面所有的判断都不成立时执行。
计算器第四版
条件语句还有一种写法:switch…case。判断运算符的部分适合用switch …case :
//跟据运算符进行不同的运算 switch(opt){ case 1: //加 result = number1+number2; break; case 2: //减 result = number1-number2; break; case 3: //乘 result = number1*number2; break; case 4: //除,现在只能整除 result = number1/number2; break; default: printf("运算符必须是1,2,3,4之一才行!走了\n"); return; //退出 } //输出结果 printf("%d+%d = %d\n",number1,number2,result);
Switch(opt)表示判断opt的值。case中的break表示跳出。如果没有break,语法没错,但是逻辑出错,不跳出的话,就会继续执行下面的case。defult相当于上一节中的else部分。
Switch…case 只能判断相等的条件,if可以判断任何条件,比如等于,不等于,大于,小于等,所以if完全可以替换switch,反过来却不行。
注意,本系列文章必须结合视频教程 http://edu.csdn.net/course/detail/2057 才能取得快速入门的效果。欢迎加入群535807023讨论。
上一篇:成为C++高手之条件语句
下一篇:成为C++高手之宏与枚举
1 0
- 成为C++高手之if与switch
- 成为C++高手之宏与枚举
- 成为C++高手之指针与数组
- c#if,switch语句
- C#if and switch
- if与switch
- if与switch转换
- switch 与 if/else
- IF与SWITCH
- if与switch区别
- if与switch
- switch 与 if else
- if与switch
- if与switch
- 怎样成为C 高手
- 黑马程序员---c语言中的分支语句 switch与if
- VS_C_17/11/22 C中if与switch的区别
- C语言之if...else PK switch...case
- 这周一定把zepto源码读完,抽取精华与大家分享
- 实时写入的内容同时写到另外一个控件上
- 易經大意 141_160
- Android学习(49) -- 使用get方式提交数据
- 亿级Web系统的高容错性实践
- 成为C++高手之if与switch
- Android学习(50) -- 使用post方式提交数据
- 针对软件研发流程,我总结出的流水线生产方法论
- Field 'id' doesn't have a default value 对于SSH 架构,解决起来就简单多了
- POJ 1584 Robots 最少边覆盖 二分图最大匹配
- 【再见CSDN】
- 【华为OJ】【041-求int型数据在内存中存储时1的个数】
- [CSAPP笔记][第八章异常控制流][呕心沥血千行笔记]
- 【华为OJ】【042-矩阵乘法】