【c语言】新概念(bushi) Water Article 多功能计算器的数学
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、常规思路解出大概模型
- 1.菜单打印
- 2.运算函数的书写
- 3.主函数
- 二、优化、修改与补充
- 1.对主函数内部进行修改
- 2.调整
- 总结
前言
我通过学习一段时间的c语言,现在想利用c进行简易计算器的编写
一、常规思路解出大概模型
1.菜单打印
我一开始想到了最简单的四则运算,于是开始布局
void menu()
{printf("***************************\n");printf("*****1.add 2.sub *****\n");printf("*****3.mul 4.div *****\n");printf("***** 0.exit *****\n");printf("***************************\n");}
2.运算函数的书写
Add,Sub,Mul,Div,分别取自对应英语单词的一部分,依次为:加,减,乘,除。
int Add(int x, int y)
{return x + y;
}int Sub(int x, int y)
{return x - y;
}int Mul(int x, int y)
{return x * y;
}int Div(int x, int y)
{return x / y;
}
3.主函数
int main()
{int x = 0; int y = 0;int input = 0;do{menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1:printf("请输入两个操作数:>");scanf("%d %d", &x, &y);printf("%d\n", Add(x, y));break;case 2:printf("请输入两个操作数:>");scanf("%d %d", &x, &y);printf("%d\n", Sub(x, y));break;case 3:printf("请输入两个操作数:>");scanf("%d %d", &x, &y);printf("%d\n", Mul(x, y)); break;case 4:printf("请输入两个操作数:>");scanf("%d %d", &x, &y);printf("%d\n", Div(x, y));break;case 0:printf("退出\n");break;default:printf("输入错误,请重新输入\n");break;}} while (input);return 0;
}
emmmmmm,这实在是过于冗余,而且在书写过程中,我不仅想到,要写入加减乘除。我还想我的计算器能为程序员提供一些便捷的服务,诸如:按位与,按位或,左移,右移等等,如果使用上述模型进行写入,未免太过于麻烦和“挫”。于是,我进行了以下改进:
二、优化、修改与补充
1.对主函数内部进行修改
首先对switch语句懂了心思,我在一段时间的思考以后,想到了用函数指针数组来替代switch语句的作用
我不需要它了,(ˉ▽ ̄~) 切~~,
do{menu();printf("请选择:>");scanf("%d", &input);if (input >= 1 && input <= 4){printf("请输入两个操作数:>");scanf("%d %d", &x, &y);int ret = pfArr[input](x, y);printf("%d\n", ret);}else if (input == 0){printf("退出\n");}else{printf("选择错误\n");}} while (input);
上图为新改造的do…while函数的内容,瞬间简洁了不少,有的同志可能会问:up猪,为什么数组创建的时候要有一个0在前面呢? 立即答:为了和菜单上的命令对应,菜单上:输入 1,2,3,4 分别为加减乘除 而数组的起始位置的下表为0,故需要加入一个元素作为调整,以此来实现一下效果:
2.调整
这里对文章进行总结:emmm,我本来以为我将有很多想法在这里写出,但是好像发现,除了这个函数指针数组的转变(转变)这个项目好像也没有什么其他的亮点 悲(被撅了,bushi)
还是稍微提一下吧,至于项目中增加计算功能,诸如按位与,按位或等功能,只要写出对应的函数,在将该函数放到指针数组中,在对项目进行部分调整,就会很好的展现出你想要的功能(不要忘了在菜单中添加相应的指令提示)。
总结
这是一次对函数指针数组的良好应用,从这里可以看出,函数指针数组是确确实实有着其存在意义的 以上!(希望阅读本文的你有所收获,共勉 and respect)
【c语言】新概念(bushi) Water Article 多功能计算器的数学相关推荐
- 新概念C语言能力教程练习3答案,新概念C语言教程答案参考(自做)中国电力
新概念C语言教程答案参考(自做)中国电力 (138页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 39.9 积分 第一篇算法与C程序结构第1单元C语言程 ...
- 新概念51单片机C语言教程纠错(2)
emmmmmmm,过年期间没怎么学51,最近几天被肺炎吓到了家里,才想起来拿起书本看一看,这一次的课本错误在按键部分,仍是郭天祥的<新概念51单片C语言教程>. 课本P82中间的例4.1. ...
- 新概念51单片机C语言教程纠错(1)
寒假突发奇想学了一下51单片机,以前一直在用32系列,这一次用的是郭天祥新概念51单片C语言教程,发现里面一处错误,先写下来以免以后忘掉. 正文第34页讲了如何对单片机总线编码,用了一个单片机控制8个 ...
- 0.《新概念51单片机C语言教程》(郭天祥)学习笔记
看到之前的阅读量,有标题党的嫌疑,再接再厉,加油坚持自己的文风,相信会写的越来越好:) 继续更(一个人,一个记事本,一个PDF阅读器,装备全靠打) <新概念51单片机C语言教程>(郭天祥) ...
- 新概念c语言周二强07答案,新概念C语言能力教程(普通高等教育十二五规划教材)...
导语 内容提要 周二强编写的<新概念C语言能力教程(普通高等教育十二五规划教材)>以先进的教学理念为指导,以培养编程能力与学习能力为目标,从全新的角度解析了C语言,高屋建瓴地阐释了C语言学 ...
- 新概念c语言教程答案,新概念C语言能力教程练习答案.doc
新概念C语言能力教程练习答案.doc 练习66.1 输入10个整数,计算它们的平均值.找出最小数,再找出与平均值最接近的整数.include stdio.hvoid mainint a10, min, ...
- 新概念c语言教程答案,新概念编程C语言篇习题解答
摘要: <21世纪普通高校计算机公共课程规划教材:新概念编程C语言篇习题解答>对<新概念编程C语言篇>教材中的习题进行了系统全面的分析和解答.习题精选了C语言编程中典型题型,计 ...
- c语言课后题2.52.8答案,新概念第二册课后题答案详解:Lesson52
新概念英语作为一套世界闻名的英语教程,以其全新的教学理念,有趣的课文内容和全面的技能训练,深受广大英语学习者的欢迎和喜爱.为了方便同学们的学习,新东方在线新概念英语网为大家整理了最全面的新概念第二册课 ...
- 新概念英语(第一册)复习(原文及全文翻译)——Lesson 1 - Lesson 30
Lesson 1 Excuse me! [课文] Excuse me! Yes? Is this your handbag? Pardon? Is this your handbag? Yes, it ...
最新文章
- linux系统每月定时重启,linux系统定时重启.doc
- uml 时序图_程序猿都应学习的语言:看 25 张图学 UML
- Android_Service组件详解
- 关于Sleuth的几个问题
- 60-150-046-使用-Sink-Flink落HDFS数据按事件时间分区解决方案
- Java基础 - 变量的定义和使用
- android动画帧率_Android流畅度之帧率
- complex类模板c++_高中地理综合题答题模板,学霸们都收藏了!
- 数据结构与算法之美学习笔记:哈希算法-哈希算法在分布式系统中有哪些应用(第22讲)...
- 在XCode的一个项目中创建多个C/C++/Cpp文件并分别运行——创建多个target实现
- F2-网络模式相关命令
- 使用 SqlDependency 对象缓存数据以提高性能
- 微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
- html注册手机号验证,js正则表达式验证手机号码,用户名和邮箱
- 一个 可以在线播放 m3u8 的网页
- PR——轨道遮罩-玻璃滑动效果
- wps中将文档输出为pdf_如何将WPS文件转换为PDF格式
- Android Studio-unity腾讯TiM(即时通信)使用
- 实测:华为鸿蒙系统比 Android 系统快 60%!
- 一百元的钞票能拍卖出多少钱?
热门文章
- mysql 1093 1142
- PXE实现批量安装部署(win与linux系统)
- 信泰人寿总裁谭宁:中小险企发展一定要顺应市场变化
- 服务器安装jkd1.8运行jar以及一系列的操作
- BaseAdapter notifyDataSetChanged()
- ExpandListView 的一种巧妙写法
- t420i升级固态硬盘提升_固态硬盘优化神器,一键提升固态硬盘性能和使用寿命...
- 面向高稳定,高性能之-Hbase数据实时同步到ElasticSearch(之二)
- 可能是最全的人工智能入门书单(附PDF链接)
- iftop---实时流量监控工具