java计算器源代码?js计算器
一、最新简易计算机源代码
#include<stdio.h>//计算器
voidmenu()//自定义的菜单界面
{
printf("--------------------\n");
printf("请输入你的选择\n");
printf("1.+\n");
printf("2.-\n");
printf("3.*\n");
printf("4./\n");
printf("--------------------\n");
}
intmain()
{
inti=0;
intj=0;
intnum=0;//计算结果存放在nun
intselect=0;//选择的选项存放在select
do//do-while先执行再判断循环条件,即可实现重复计算功能
{
menu();//打印出菜单界面
scanf("%d",&select);//输入你的选项
printf("请输入计算值:");
scanf("%d%d",&i,&j);//输入要计算的数值
switch(select)
{
case1:
printf("%d+%d=%d\n",i,j,num=i+j);//实现加法功能
break;
case2:
printf("%d-%d=%d\n",i,j,num=i-j);//实现减法功能
break;
case3:
printf("%d*%d=%d\n",i,j,num=i*j);//实现乘法功能
break;
case4:
printf("%d-%d=%d\n",i,j,num=i/j);//实现除法功能
break;
default:
printf("输入有误重新选择");
break;
}
}while(select);
return0;
}
运行结果:
扩展资料:
return表示把程序流程从被调函数转向主调函数并把表达式的值带回主调函数,实现函数值的返回,返回时可附带一个返回值,由return后面的参数指定。
return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。
二、原码反码补码计算器
1、二进制补码的计算方法
二进制的补码计算非常简单,各种教材中也经常使用二进制来说明源码、反码与补码三者的关系,掌握一定基础的人都知道一下规则:
1.1原码
最高位为符号位,0表示正数,1表示负数。
例如:X=0b11(3),四比特表示原码=0011(3);X=-0b11(-3),四比特表示原码=1011(11);
1.2反码
最高位为符号位,0表示正数,1表示负数。
正数的反码等于本身,负数的反码除符号位外,各位取反:
例如:X=0b11(3),四比特表示原码=0011(3),对应反码为=0011(3);X=-0b11(-3),四比特表示原码=1011(11),对应反码为=1100(12);
1.3补码
最高位为符号位,0表示正数,1表示负数。
正数的补码等于本身,负数的补码等于反码+1:
例如:X=0b11(3),四比特表示原码=0011(3),对应反码为=0011(3),补码为=0011(3);X=-0b11(-3),四比特表示原码=1011(11),对应反码为=1100(12),补码为1101(13);
2、十进制的补码计算方法
对于十进制数来说,通过前面的性质不难得到正十进制数补码等于其本身,对于负十进制数来说如果还按位进行运算就太麻烦了!为了讲明白,我们从补码的起因说起:
“反码加一”只是补码所具有的一个性质,不能被定义成补码。负数的补码,是能够和其相反数相加通过溢出从而使计算机内计算结果变为0的二进制码。这是补码设计的初衷,具体目标就是让1+(-1)=0,这利用原码是无法得到的:
而在补码中:
所以对于一个n位的负数-X,有如下关系:
所以假设寄存器是n位的,那么-X的补码,应该是
的二进制编码。
例如前面举得例子:
例如:X=-0b11(-3),四比特表示原码=1011(11),对应反码为=1100(12),补码为1101(13);
如果寄存器4位,-3对应的补码二进制数为13,刚好是
正十进制数补码等于其本身,n位寄存器下-X的补码等于
对应的二进制编码。
如果使用python的话,可以使用&来快速获取补码:
-3&0xfOut[1]:135&0xfOut[2]:5
这里的0xf指的是0b1111,表示4位的寄存器。如果是7位寄存器,0b111111就是0x3f。
3、已知补码怎么求原码?
对于正数来说,根据前面的介绍很容易知道原码=补码=反码,接下来主要讨论给定负数的补码怎么求负数的原码:
3.1二进制
先说结论:补码的补码就是原码。下面开始证明:
已知二进制的补码为
,根据1.3中求补码的过程易得
事实上上式还等价于:
可以简单证明一下,根据反码实际的求解过程可以得到下面式子:
当a=a-1时有:
上面两式子说明了:
用文字描述即:取反加一等价于减一取反!
所以二进制补码有如下关系:
也就是说补码的补码就是原码,有点负负得正的意思哦。
3.2十进制
n位寄存器下-X的补码等于
对应的二进制编码。
(1)十进制的情况下,如果给的补码是无符号数
,那么原码即
即可。
例如前面-3补码无符号数是13,对应的原码就是
(2)十进制的情况下,如果给的补码是有符号数-Y,对应的无符号数就是
,那么原码就是
。
例如前面-3补码有符号数是-5,对应的原码就是
编辑于2021-10-3013:39
三、c++计算器源代码
这个代码可以实现计算器功能
#include"stdafx.h"
#include<iostream>
#include<stdio.h>
usingnamespacestd;
voidadd()
{
printf("输入要计算的加数(例如ab)\n");
intadda=0,addb=0,addc=0;
cin>>adda;
cin>>addb;
addc=adda+addb;
cout<<adda<<"加"<<addb<<"等于"<<addc<<endl;
}
voidsubstraction()
{
printf("输入要计算的减数(例如ab)\n");
intsuba=0,subb=0,subc=0;
cin>>suba;
cin>>subb;
subc=suba-subb;
cout<<suba<<"减"<<subb<<"等于"<<subc<<endl;
}
voidmultiplication()
{
printf("输入要计算的乘数(例如ab)\n");
intmula=0,mulb=0,mulc=0;
cin>>mula;
cin>>mulb;
mulc=mula*mulb;
cout<<mula<<"乘"<<mulb<<"等于"<<mulc<<endl;
}
voiddivision()
{
printf("输入要计算的除数(例如ab)\n");
intdsa=0,dsb=0,dsc=0,dsd=0;
cin>>dsa;
cin>>dsb;
dsc=dsa/dsb;
dsd=dsa%dsb;
cout<<dsa<<"除"<<dsb<<"等于"<<dsc<<"余"<<dsd<<endl;
}
voidoperation()//运算函数
{
printf("输入数据选择做那种运算\n");
printf("输入0选择退出,1做加法,2做减法,3做乘法,4做除法(保留余数)\n");
intoperatione=0;
cin>>operatione;
cout<<endl;
try
{
if(operatione==1)
{
//加法
add();
}
elseif(operatione==2)
{
//减法
substraction();
}
elseif(operatione==3)
{
//乘法
multiplication();
}
elseif(operatione==4)
{
//出发
division();
}
elseif(operatione==0)
{
exit(0);
}
else
{
throw1;
}
}
catch(inti)
{
cout<<"输入错误"<<endl;
}
operation();
}
intmain()
{
printf("欢迎使用本计算器");
operation();
return0;
}