从零学编程2-做个工资计算器
来源:互联网 发布:淘宝商家点评 编辑:程序博客网 时间:2024/05/17 07:35
回顾上一篇:从零学编程1-写一封情书
做个工资计算器
主人公两枚:
鹰:从零学编程
我:从零教编程
我:阿鹰问你个问题,你喜欢做贡献吗?
鹰:不喜欢.
我:囧.OK,那我们换个问法,你喜欢钱吗?
鹰:喜欢!!!有钱我就可以买CF神器了,我跟你说啊最近粗了一把狙..
我:
OK,OK我们聊钱(强颜欢笑中)
大家都喜欢钱,但是钱的本质是什么呢?上过高中的都知道,它是商品交换的产物.商品不可能大街上去捡.就算是大街上去捡垃圾,那也是付出了劳动,清洁了环境不是吗?所以金钱的来源,就是做贡献.只有为社会做出了贡献的人,才会得到社会的金钱奖励.
每天算算账是个好习惯,如果入不敷出,就想想怎么正当地去赚钱而不是去借,当然你也可以使用花呗…你天天算账用别人的计算器是不是很烦?
鹰:是啊,我最喜欢上次你教我的写情书的黑色背景了.
我:要的就是这句话.今天我们一起来DIY一个能算加减乘除的计算器.
首先我们建立一个新的工程,上个上次有讲过,起个有意义的名字放在记得住又不太碍眼的地方,阿鹰别放桌面上!:
先输出一段代码:
#include <iostream>using std::cout;using std::cin;using std::endl;int main(){ cout<<"输入表达式:"<<endl; char run; float fNumberA,fNumberB; float fResult=0; return 0
你有没有注意到和上次代码的不同.
鹰:好多不同的.这次我们是不是要用cin?
你学得真快,前面有
using std::cin;
是因为我们这次要用到cin.既然cout是输出,那么cin就是输入咯.
箭头指向哪里就是把东西传到哪里.比如
cin>>A;cout<<B;
箭头指向A,说明把我们输入的内容送到a里面.
箭头指向cout,说明把B中的内容送到cout,这里的cout也就是我们的屏幕咯.
注意:尽量不要使用这么短的没有什么明确意义的名字,防止自己编程把自己先搞晕了.
这里A,B需要先跟系统打个招呼,说明一下自己占地多少才能用.
比如
char Yin;
我们申请了一个名字叫Yin的char类型变量.
下面我们连续申请了fNumberA,fNumberB两个float类型的变量.并且申请了一个名为fResult的变量还给它等于了一个0.
float fNumberA,fNumberB; float fResult=0;
char 型变量占地很小只能放一个英文字符.或者一个简单的+-*/的符号.
这是一张ASCII码表,里面的每一个字符东西都可以用一个char类型的变量来放.
我们的计算机正是利用了这个特点:它只能放一个字符.
int main(){ cout<<"输入表达式:"<<endl; char run; float fNumberA,fNumberB; float fResult=0; cin>>fNumberA;//第一个数字放在这里 cin>>run;//当输入一个符号的时候系统会自动把符号放在这里 cin>>fNumberB;//符号后面的东西会被自动放在这里. cout<<fResult; return 0;}
例如当我们输入:
12+2
12因为是第一个输入的数字会在输入+的一瞬间被挤到fNumberA中,
+会被放在char型的变量run中.
加号后面的数字会在回车的瞬间被挤到fNumberB中.
这样我们需要的东西:第一个数字,符号和第二个数字都被我们记录起来了.
它们分别是:
fNumberA
run
fNumberB
接下来有趣的事情即将发生,我们该怎么让系统按照不同的运算符(run)而做不同的四则运算呢?
我们需要用到判断.这不难:
switch(你需要判断的东西){//上个大括号,让switch知道自己的判断范围. case '+': { //这里放加的运算; break;//运行完了上面的操作就不判断了.如果没有break就会把下面的一条一条全执行下去. } case '-': { //这里放减的运算 break; }default: { //如果不是上面的情况,就这么做,你也可以空下来,就是什么也不做,或者提示一下用户你的运算符输入错啦 cout<<"您好,您输入的运算符无效,请重新输入\r\n";// \r\n是回车的另一种表示. // 它属于>格式化输出<你可以通过搜索引擎得到更多知识 break; }}
- 在每个判断后面放一个break用于执行后跳出判断.
- 每个char类型要被两个单引号夹住
- case后面要加冒号,我就经常忘,结果各种报错信息.
这里你不需要使用using std::switch.因为switch属于自带的.而cin,cout属于没有自带的.当你需要更多功能的时候你就需要使用不同的库,什么是库呢?库就是计算机高手奉献自己已经完成的功能代码,就像我每天给你发的示例代码一样.这里std就是一个非常常用的输入输出库.
下面就是目前我们的代码:
#include <iostream>using std::cout;using std::cin;using std::endl;int main(){ cout<<"输入表达式:"<<endl; char run; float fNumberA,fNumberB; float fResult=0; cin>>fNumberA; cin>>run; cin>>fNumberB; switch(run) { case '*'://两个单引号夹一个char类型 { fResult=fNumberA*fNumberB; break; } case '/': { if (fNumberB==0) {break;} fResult=fNumberA/fNumberB; break; } case '+': { fResult=fNumberA+fNumberB; break; } case '-': { fResult=fNumberA-fNumberB; break; } default: { break; } } cout<<fResult; cin>>fResult; return 0;}
效果如图:
如果你对每次只能计算一次而遗憾,不就是需要循环计算吗?
在计算机中它的名字就叫”循环”.它有很多种样式.一种简便的样式是:
int iNumberA=0;while(条件){iNumber=iNumber+1;}
我们将我们的计算器的主体:
1. 输入
2. 判断
这两部分放在while的大括号中.
只要把条件改成1就会永远执行下去.别担心你可以用额外的break跳出这个循环.或者手动去点关闭
目前我们的代码成了下面这个样子:
int main(){ cout<<"输入表达式:"<<endl; char run; float fNumberA,fNumberB; float fResult=0; while(1) { cin>>fNumberA; cin>>run; cin>>fNumberB; switch(run) { //那一大堆判断 } cout<<fResult; //相较于之前,这里删去了cin>>fResult因为我们没有必要让它继续帮助我们卡住屏幕以便于观察了. } return 0;}
最终效果:
我们的计算器已经可以做多个算式而不必每次退出了.
后记:
这是本系列的第二篇也是最后一篇.为什么不继续介绍呢?因为新手已经入门了.学习者该去寻找更多的有趣的知识了.这已经超出我的能力范围.
古语有云:
取法乎上,仅得其中;取法乎中,仅得其下;取法乎下,一无所得.
上面我们使用的是C++语言.
如果这两篇文章使你对编程产生了兴趣,那就赶快去学吧.
找一本通俗易懂的书籍.趣味优先.
《嗨翻C语言》据名字来说还好.
《谭浩强先生的C++语言教程》千年圣品教材,有它的道理.
《C++ Primer》进阶必读,入门算了.别说我毁兴趣
……去图书馆转转你会有发现的.
有句话不假:
技术越高越自由.
与君共勉.
- 从零学编程2-做个工资计算器
- 儿童从零学编程,及2款APP & Scratch
- 从零学编程1-写一封情书
- Wolf从零学编程-用Django撸个Blog(一)
- Wolf从零学编程-用Django撸个Blog(二)
- Wolf从零学编程-用Django撸个Blog(三)
- Wolf从零学编程-用Django撸个Blog(四)
- Wolf从零学编程-用Django撸个Blog(五)
- Wolf从零学编程-用Django撸个Blog(六)
- Wolf从零学编程-用Django撸个Blog(七)
- Wolf从零学编程-用Django撸个Blog(八)服务器部署
- 从零学Android
- 从零学SLAM
- python 从零学
- Java语法基础,零基础学编程从这里开始
- 工资计算器
- 从零学JQuery(转)
- Processing从零学Day_1
- 顶着台风,也要去参加的一次“磨课”
- mysql_fetch_array()与mysql_fetch_assoc()、mysql_fetch_row()
- [leetcode-]Climbing Stairs(C语言)
- 一个Servlet可以被映射成多个mapping
- 绿色mysql初始化以及遇到一些问题解决方法
- 从零学编程2-做个工资计算器
- 一个经典例子让你彻彻底底理解java回调机制
- CF 18B Platforms
- hdu 5280 Senior's Array
- 使用brackets编译scss文件
- HDU 5281 BestCoder Round #47 1002
- openjudge 蛇形填充数组
- android拾遗 02—linux系统安装AS
- Android的AsyncTask的用法