提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、常规思路解出大概模型
    • 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 多功能计算器的数学相关推荐

  1. 新概念C语言能力教程练习3答案,新概念C语言教程答案参考(自做)中国电力

    新概念C语言教程答案参考(自做)中国电力 (138页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 39.9 积分 第一篇算法与C程序结构第1单元C语言程 ...

  2. 新概念51单片机C语言教程纠错(2)

    emmmmmmm,过年期间没怎么学51,最近几天被肺炎吓到了家里,才想起来拿起书本看一看,这一次的课本错误在按键部分,仍是郭天祥的<新概念51单片C语言教程>. 课本P82中间的例4.1. ...

  3. 新概念51单片机C语言教程纠错(1)

    寒假突发奇想学了一下51单片机,以前一直在用32系列,这一次用的是郭天祥新概念51单片C语言教程,发现里面一处错误,先写下来以免以后忘掉. 正文第34页讲了如何对单片机总线编码,用了一个单片机控制8个 ...

  4. 0.《新概念51单片机C语言教程》(郭天祥)学习笔记

    看到之前的阅读量,有标题党的嫌疑,再接再厉,加油坚持自己的文风,相信会写的越来越好:) 继续更(一个人,一个记事本,一个PDF阅读器,装备全靠打) <新概念51单片机C语言教程>(郭天祥) ...

  5. 新概念c语言周二强07答案,新概念C语言能力教程(普通高等教育十二五规划教材)...

    导语 内容提要 周二强编写的<新概念C语言能力教程(普通高等教育十二五规划教材)>以先进的教学理念为指导,以培养编程能力与学习能力为目标,从全新的角度解析了C语言,高屋建瓴地阐释了C语言学 ...

  6. 新概念c语言教程答案,新概念C语言能力教程练习答案.doc

    新概念C语言能力教程练习答案.doc 练习66.1 输入10个整数,计算它们的平均值.找出最小数,再找出与平均值最接近的整数.include stdio.hvoid mainint a10, min, ...

  7. 新概念c语言教程答案,新概念编程C语言篇习题解答

    摘要: <21世纪普通高校计算机公共课程规划教材:新概念编程C语言篇习题解答>对<新概念编程C语言篇>教材中的习题进行了系统全面的分析和解答.习题精选了C语言编程中典型题型,计 ...

  8. c语言课后题2.52.8答案,新概念第二册课后题答案详解:Lesson52

    新概念英语作为一套世界闻名的英语教程,以其全新的教学理念,有趣的课文内容和全面的技能训练,深受广大英语学习者的欢迎和喜爱.为了方便同学们的学习,新东方在线新概念英语网为大家整理了最全面的新概念第二册课 ...

  9. 新概念英语(第一册)复习(原文及全文翻译)——Lesson 1 - Lesson 30

    Lesson 1 Excuse me! [课文] Excuse me! Yes? Is this your handbag? Pardon? Is this your handbag? Yes, it ...

最新文章

  1. linux系统每月定时重启,linux系统定时重启.doc
  2. uml 时序图_程序猿都应学习的语言:看 25 张图学 UML
  3. Android_Service组件详解
  4. 关于Sleuth的几个问题
  5. 60-150-046-使用-Sink-Flink落HDFS数据按事件时间分区解决方案
  6. Java基础 - 变量的定义和使用
  7. android动画帧率_Android流畅度之帧率
  8. complex类模板c++_高中地理综合题答题模板,学霸们都收藏了!
  9. 数据结构与算法之美学习笔记:哈希算法-哈希算法在分布式系统中有哪些应用(第22讲)...
  10. 在XCode的一个项目中创建多个C/C++/Cpp文件并分别运行——创建多个target实现
  11. F2-网络模式相关命令
  12. 使用 SqlDependency 对象缓存数据以提高性能
  13. 微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
  14. html注册手机号验证,js正则表达式验证手机号码,用户名和邮箱
  15. 一个 可以在线播放 m3u8 的网页
  16. PR——轨道遮罩-玻璃滑动效果
  17. wps中将文档输出为pdf_如何将WPS文件转换为PDF格式
  18. Android Studio-unity腾讯TiM(即时通信)使用
  19. 实测:华为鸿蒙系统比 Android 系统快 60%!
  20. 一百元的钞票能拍卖出多少钱?

热门文章

  1. mysql 1093 1142
  2. PXE实现批量安装部署(win与linux系统)
  3. 信泰人寿总裁谭宁:中小险企发展一定要顺应市场变化
  4. 服务器安装jkd1.8运行jar以及一系列的操作
  5. BaseAdapter notifyDataSetChanged()
  6. ExpandListView 的一种巧妙写法
  7. t420i升级固态硬盘提升_固态硬盘优化神器,一键提升固态硬盘性能和使用寿命...
  8. 面向高稳定,高性能之-Hbase数据实时同步到ElasticSearch(之二)
  9. 可能是最全的人工智能入门书单(附PDF链接)
  10. iftop---实时流量监控工具