计算器编译功能
㈠ codeblocks怎么编译运行计算器
你可以使用Codeblocks编消磨态写一个计算器的C程序,然后在Codeblocks中编译运行即可。具体步骤为:新建一个工程,创建一个c文件,然后写出程序代码游悄,保存好,编译运行,用Ctrl+F9快捷键拿源可以触发编译运行。
㈡ 怎么用C++编译一个简单的计算器
我借鉴了别人的某计算器,因为你没有说多简易...我就找了个差不多的...
/*
程序名称:表达式计算器
编译环境:Microsoft Visual C++ 6.0
作者:吉林大学 计算机科学与技术学院 2006 罗泗勇
时间:200801
*/
/*
说明:
采用树形结构处理表达式,按优先级运算结果,一个加,减,乘,除或数值为一个节点
优先级如下:
函数:4
括号:3
乘除:2
加减:1
*/
#include <windows.h>
#include <iostream>
#include <fstream>
#include <string>
#include <cmath>
using namespace std;
const char NUM[]={'0','1','2','3','4','5','6','7','8','9','.'};
const char OPERATION[]={'+','-','*','/'};
const double PI=3.14159265358979;
const double EE=2.71828182818281;
class Fun //处理系统数学函数的类
{
public:
Fun(string o,int t,double l=0.0,double r=0.0):op(o),type(t),lvalue(l),rvalue(r){}
static string FUN[];
double calc();
private:
int type; //666 0 1 sin90 2 3! 3 3C2
string op; //函数类型
double lvalue; //函数左边的值
double rvalue; //函数右边的值
static int FunNum;
};
int Fun::FunNum=8;
string Fun::FUN[]={"!","sin","cos","tan","log","ln","C","A","^"};
/*
函数说明:
1:log是以10为底的工程对数
2:ln 是以e为底的自然对数
3:C 计算组合数 输入规则 如计算 3取2的组合 输入表达式 3C2
4:A 计算排列数 输入规则 如计算 3取2的排列 输入表达式 3A2
5:! 计算阶乘
6:^ x的y次方 输入 x^y
*/
int factorial(int n) //阶乘函数
{
int i,s=1;
for(i=1;i<=n;i++)
s*=i;
return s;
}
int C(int a,int b)
{
return factorial(a)/(factorial(b)*factorial(a-b));
}
int A(int a,int b)
{
return factorial(a)/factorial(b);
}
double Fun::calc() //计算系统函数的值
{
if(type==0)
return lvalue;
else
{
if(op=="!")
return factorial(lvalue);
if(op=="sin")
return sin(rvalue/180*PI);
if(op=="cos")
return cos(rvalue/180*PI);
if(op=="tan")
return tan(rvalue/180*PI);
if(op=="log")
return log10(rvalue);
if(op=="ln")
return log10(rvalue)/log10(EE);
if(op=="C")
return C(lvalue,rvalue);
if(op=="A")
return A(lvalue,rvalue);
if(op=="^")
return pow(lvalue,rvalue);
else
{
string err="暂时没有函数"+op;
MessageBox(NULL,err.c_str(),"错误",MB_OK);
return 0;
}
}
}
struct Unit //双向链表保存运算单元
{
Unit(int p,char o,string c,double v,int t,Unit * pr=NULL,Unit * n=NULL)
:PRI(p),Operation(o),Code(c),value(v),Type(t),Pre(pr),Next(n){}
int PRI; //优先级
char Operation; //操作符
string Code; //原始代码
double value; //数据
int Type; //类型 操作符0 数据1 函数2
Unit * Pre; //构成双向链表
Unit * Next;
};
class Node //表达式树状结构的节点
{
public:
Node(char o,int p,int e=1,double v=0,Node * ph=NULL,Node * pl=NULL,Node * pr=NULL)
:Operation(o),PRI(p),Expression(e),value(v),Head(ph),Left(pl),Right(pr){}
Node * Head; //节点的根,左树枝,右树枝
Node * Left;
Node * Right;
double GetValue();
char GetOperation() const {return Operation;}
int GetPri() const {return PRI;}
int IsExp() const {return Expression;}
private:
char Operation; //操作符
int PRI; //优先级
int Expression; //记录该节点是否是表达式0 1
double value; //该节点的值
};
double Node::GetValue() //运算该节点的值
{
if(IsExp()) //该节点的值还未算出来
{
double lvalue,rvalue;
lvalue=Left->GetValue();
rvalue=Right->GetValue();
Expression=0;
char op=GetOperation();
switch(op)
{
case '+':
return lvalue+rvalue;
case '-':
return lvalue-rvalue;
case '*':
return lvalue*rvalue;
case '/':
return lvalue/rvalue;
default:
return 0;
}
}
else
return value;
}
bool Isnum(char c)
{
for(int i=0;i<sizeof(NUM);i++)
{
if(c==NUM[i])
return true;
}
return false;
}
bool Isoperation(char c)
{
for(int i=0;i<sizeof(OPERATION);i++)
{
if(c==OPERATION[i])
return true;
}
return false;
}
Unit * Analyse(string exp) //分析表达式并生成链表
{
int pri=0; //当前优先级
int stat=-1; //当前的读入状态 括号 0 数据 1 运算符 2
Unit * head=NULL,* p=NULL;
int i=0,explen;
explen=exp.size();
for(i=0;i<explen;i++)
{
char c=exp.at(i);
if(c=='(')
{
pri+=3;
stat=0;
}
else if(c==')')
{
pri-=3;
stat=0;
}
else if(Isoperation(c)) //操作符不会出现在表达式开头
{
Unit * temp=p;
int add_pri; //自身增加的优先级
if(c=='+' || c=='-')
add_pri=1;
else
add_pri=2;
p->Next=new Unit(pri+add_pri,c," ",0,0);
p=p->Next;
p->Pre=temp;
}
else //其他的当做函数处理
{
string function="";
while(i<explen && (c=exp.at(i),! Isoperation(c)) && c!=')')
{
function+=c;
i++;
}
i--;
if(head==NULL)
{
p=new Unit(pri,' ',function,0,2);
head=p;
}
else
{
Unit * temp=p;
p->Next=new Unit(pri,' ',function,0,2);
p=p->Next;
p->Pre=temp;
}
}
}
return head;
}
Unit * Calc(Unit * head) //计算双向链表基本单元的值
{
Unit * p=head;
while(p!=NULL)
{
if(p->Type!=0) //非操作符
{
string temp=p->Code;
string op;
double lvalue=0,rvalue=0;
int l_point=0,r_point=0;
int i=0,type=0;
char ch;
while(i<temp.size() && (ch=temp.at(i),Isnum(ch)))
{
if(ch=='.')
{
l_point++;
i++;
continue;
}
if(! l_point)
lvalue*=10;
lvalue+=(ch-'0')*pow(10,-l_point);
i++;
if(l_point)
l_point++;
}
while(i<temp.size() && (ch=temp.at(i),! Isnum(ch)))
{
op+=ch;
type=1;
i++;
}
while(i<temp.size() && (ch=temp.at(i),Isnum(ch)))
{
if(ch=='.')
{
r_point++;
i++;
continue;
}
if(! r_point)
rvalue*=10;
rvalue+=(ch-'0')*pow(10,-r_point);
i++;
if(r_point)
r_point++;
}
Fun * f=new Fun(op,type,lvalue,rvalue);
p->value=f->calc();
}
p=p->Next;
}
return head;
}
Node * Tree(Unit * head) //生成表达式树
{
Node * root=NULL,* proot=NULL,* pbranch=NULL;
Unit * p=head;
int now_pri; //当前优先级
bool hadop=false;
while(p!=NULL)
{
if(p->Type==0) //如果是一个操作符
{
hadop=true;
if(root==NULL)
{
proot=new Node(p->Operation,p->PRI,1);
root=proot;
pbranch=root;
now_pri=p->PRI;
proot->Left=new Node(' ',0,0,p->Pre->value);
proot->Right=new Node(' ',0,0,p->Next->value);
}
else
{
if(p->PRI<=now_pri) //优先级低于当前优先级,树根方向 //最初写的 if(p->PRI<now_pri),9/3/3=9,错的
{
proot=new Node(p->Operation,p->PRI,1); //新的树根
proot->Left=root; //根的变换
proot->Right=new Node(' ',0,0,p->Next->value);
root=proot;
pbranch=proot; //右树枝的变换
//pbranch->Right=new Node(' ',0,0,p->Pre->value); //树枝右边取值
}
else
{
Node * temp;
temp=new Node(p->Operation,p->PRI,1);
pbranch->Right=temp;
temp->Head=pbranch;
pbranch=pbranch->Right;
pbranch->Left=new Node(' ',0,0,p->Pre->value);
pbranch->Right=new Node(' ',0,0,p->Next->value);
}
now_pri=p->PRI;
}
}
p=p->Next;
}
if(! hadop)
root=new Node(' ',0,0,head->value);
return root;
}
int main()
{
string exp;
//ifstream infile("test.txt",ios::in);
while(! getline(cin,exp).eof())
{
if(exp=="")
continue;
Unit * h=Analyse(exp);
h=Calc(h);
Node * root=Tree(h);
cout<<exp<<"="<<root->GetValue()<<endl;
}
return 0;
}
㈢ 科学计算器有哪些功能
科学计算器有哪些功能
科学计算器支持显示24位数字,支持运算优先选择模式、进制转换功能、标准数学函数、百分比计算、方根计算、对数、次方、记忆等等功能。下面,我就为大家讲讲科学计算器的功能,快来看看吧!
1 RCL STO
rcl是查看变量,sto是赋值
2 DEG RAD GRAD
D(DEG) R(RAD) G(GRAD)分别表示角度制,弧度制,百分度制.
计算机有四种状态:Norm、Fix、Eng、Sci,功能分别是:指定指数记号范围、小数点位设置、工程计算、有效数位设置。如果计算器处于其它三种状态则可能会出现运算错误。
Deg是将计算器的角设定为度的状态,共有六种:
Deg—指定度作为预设单位。
Rad—指定弧度作为预设单位。
Gra—指定梯度作为预设单位。也称为“百分度”和“新度”。
°—指定度作某输入值的单位。
r—指定弧度作某输入值的单位。
g—指定梯度作某输入值的单位。
有时如果误将角度(Deg)设置为弧度(Rad)或梯度(Gra)状态就会造成计算结果错误°、r、g是用于标识角度单位的。
所以要消除 GRA 你找到计算模式切换就可以消除!
3 hyp sin cos tan ln log等
sin cos tan 为三角函数,sin-1 cos-1 tan-1对应为反三角函数,等同于arcsin,arccos,arctan
hyp是sin、cos、tan的双曲线函数.
ln 即自然对数 ln a=loge a.
log 对数函数
其余函数在这里不多解释
4 MS MR MC M- M+
计算器里面有一个存储器,默认状态下是空的(即0)。它能保存任意一个数值,也只能存一个值。你可以把它当成一个只能保存一件东西的盒子。
MS:存当前显示的数值
MR:读取存储器中的'数值,并显示出来
MC:清除已存的数据
M-:用已存的数值减去当前显示的数值后,再将结果保存
M+:用已存的数值加上当前显示的数值后,再将结果保存
5 conv ans
ans 英文单词为answer。回答,结果的意思。
conv 为公制换算
卡西欧科学计算器中公制换算(CONV)对应如下
01 英寸 厘米
02 厘米 英寸
03 英尺 米
04 米 英尺
05 码 米
06 米 码
07 英里 公里
08 公里 英里
09 海里 米
10 米 海里
11 英亩 平方米
12 平方米 英亩
13 美制加仑 升
14 升 美制加仑
15 英制加仑 升
16 升 英制加仑
17 秒差距 千米
18 千米 秒差距
19 千米/小时 米/秒
20 米/秒 千米/小时
21 盎司 克
22 克 盎司
23 磅 千克
24 千克 磅
25 标准大气压 帕
26 帕 标准大气压
27 毫米汞柱 帕
28 帕 毫米汞柱
29 马力 千瓦
30 千瓦 马力
31 平方厘米千克力 帕
32 帕 平方厘米千克力
33 扭矩 焦
34 焦 扭矩
35 平方英寸磅力 千帕
36 千帕 平方英寸磅力
37 华氏度 摄氏度
38 摄氏度 华氏度
39 焦 卡路里
40 卡路里 焦
;㈣ 怎么看计算器有没有编程功能
一般的计算器都是无编程功能的,即使有平方开方阶乘正弦余弦等计算功能也是无编程的。下面的图片是一个可编程的计算器,你一比较就知道了,可编程的计算器可以输入程序控制语句。
㈤ 计算器的用途有哪些
计算机主要用途
一、数值计算.计算机广泛地应用于科学和工程技术方面的计算,这是计算机应用的一个基本方面,也是我们比较熟悉的。如:人造卫星轨迹计算,导弹发射的各项参数的计算,房屋抗震强度的计算等。
二、数据处理.用计算机对数据及时地加以记录、整理和计算,加工成人们所要求的形茄敬迅式,称为数据处理。数据处理与数值计算相比较,它的主要特点是原始数据多,处理量大,时间性强,但计算公式并不复杂稿誉.在计算机应用普及的今天,计算机已经不再只是进行科学计算的工具,计算机更多地应用在数据处理方面。如:对工厂的生产管理、计划调度、统计报表、质量分析和控制等;在财务部门,用计算机对帐目登记、分类、汇总、统计、制表等。我们不可以用计算机实现办公自动化。用计算机进行文字录入、排版、制版和打印,比传统铅字打印速度快、效率高,并且使用更加方便;用计算机通信即通过局域网或广域网进行数据交换,可以方便地发送与接收数据报表和图文传真。
三、 自动控制.自动控制也是计算机应用的一个重要方面。在生产过程中,采用计算机进行自动控制,可以大大提高产品的数量和质量,提高劳动生产率,改善人们工作条件,节省原材料的消耗,降低生产成本等。
四、辅助设计.计算机辅助设计(简称CAD)是借助计算机进行设计的一项实用技术,采用计算机辅助设计过程实现自动化或半自动化,不仅可以大大缩短设计周期,加速产品的更新换代,降低生产成本,节省人力物力,而且对保证产品有重要作用。
五、辅助教学.计算机辅助教学(简称CAI)是利用计算机对学生进行教学。计算机辅助教学的第一个大型系统是在60年代由美国伊里诺大学开发的PLATO。现在世界上发展的各方教学软件已无法准确统计。CAI的专用软件称为课件,是CAD的一大分支,它可按不同教学方式方法以及不同领域内容进行分类。
六、人工智能.计算机有记忆能力,又擅长进行逻辑推理运算,因此计算机可以模仿人的思维,让计算机具有一定的学习和推理功能,能够自己积累知识,并且独立解决问题,这就是计算机的人工智能。例如,计算机可以对计算机高级语言进行编译和解释;不同国家语言之间的机器翻译;在很多场合下,装上电脑的机器人可以代替人们进行繁颤此重的、危险的体力劳动和部分简单重复的脑力劳动。
七、娱乐活动.我们可以在多媒体电脑上看电视、看VCD、听音乐、玩游戏、在网上和朋友聊天等等。
㈥ 计算器的12种功能是什么
1、上电/全清键(ON/AC):按下该键表示上电,或清除所有寄存器中的数值。
2、清除键(C):在数字输入期间,第一次按下此键,将清除除存储器内容外的所有数值。
3、 清除输入键(CE):在数字输入期间按下此键,将清除输入寄存器中的值并显示"0"。
4、 平方根√ :显示一个输入正数的平方根。
5、M+:把目前显示的值放在存储器中,中断数字输入。
6、 M-:从存储器内容中减去当前显示值,中断数字输入。
7、MRC:第一次按下此键将调用存储器内容,第二次按下时清除存储器内容。
8、MR:调用存储器内容。
9、 MC:清除存储器内容。
10、GT:按下GT键,传送GT存储寄存器内容到显示寄存器;按AC或C键消除GT显示标志。
11、 MU(Mark-up and Mark-down键):按下该键完成利率和税率计算。
12、 MRC:第一次按下此键将调用存储器内容,第二次按下时清除存储器内容。
(6)计算器编译功能扩展阅读
使用方法
计算器包括标准型和科学型两种,其中标准型使用方法如下:
1、键入数字时,按下相应的数字键的,如果按错可用(CE)键消去一个数值,再重新输入正确的数字。
2、直接输入数字后,按下乘号将它变为乘数,在不输入被乘数的情况下直接按(=)键,就是该数字的二次方值。
3、根号(√)键默认是开二次方根,只有科学计算器才能开多次方根。
4、按下(+/-)键可改变数字的正负值。
㈦ C语言 编译计算器可以分别计算加减乘除
#include<stdio.h>
#defineCLR_INTPUTwhile(getchar()!=' ')
intmain(void)
{
charch;
floatnum1,num2;
doublenum;
printf("输入方式为(例n*n) ");
while(1)
{
while(scanf("%f",&num1)!=1)//确保输入数据正确
{
printf("输入有误,请重新输入第一个数 ");
CLR_INTPUT;
}
getchar();//清除空格符
while(scanf("%c",&ch)==1)
{
if(ch!='+'&&ch!='-'&&ch!='*'&&ch!='/')
{
printf("输入有误,请重新输入运算操作 ");
CLR_INTPUT;
continue;
}
break;
}
getchar();//清除空格符
while(scanf("%f",&num2)!=1)
{
printf("输入有误,请重新输入第二个数 ");
CLR_INTPUT;
}
CLR_INTPUT;//清除输入缓冲
switch(ch)
{
case'+':num=num1+num2;
break;
case'-':num=num1-num2;
break;
case'*':num=num1*num2;
break;
case'/':num=num1/num2;
break;
default:printf("输入运算有误 ");
}
printf("%.2f%c%.2f=%.4lf ",num1,ch,num2,num);
}
return0;
}
程序还是有些BUG,对用户输入出错提示的不够。
㈧ 用C语言编译一个简单计算器的程序,要求其中有括号和幂函数
既然大家都没发程序,I am coming.
说明:由于幂的运算应该比括号低比乘除要高,所以为避免混淆用幂运算时用括号括起来,比如2+9/3^2-5表示2+(9/3)^2-5,要是想要9除以3^2,这样输入:2+9/(3^2)-5,以免引起歧义。
程序功能强大代码简练。可以对任意数值类型计算,这里全部按double型处理,程序还可以使用大括号{}中括号[]小括号()三种括号,当然优先级是小括号>中括号>大括号>运算符。
要是只想结果取整,将所有double类型改为int即可,不过不主张这样做,既然是计算器,当然要精确计算。
一个完整的c程序如下,程序在win-tc和Dev-c++下都调试通过。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
char s[201];/*全局变量s[]与i分别表示算术表达式字符串以及其当前位置指针变量*/
int i=0;
double proc1(char ch);
void proc2(double *a,char *c);
void str_read(double *a,char *c) /*读取下一个操作数*/
{ int j=0;
char s1[30];
while ((s[i]!='\0')&&(s[i]!='+')&&(s[i]!='-')&&(s[i]!='(')&&(s[i]!=')')
&&(s[i]!='=')&&(s[i]!='^')&&(s[i]!='*')&&(s[i]!='/')&&(s[i]!='[')&&(s[i]!=']')
&&(s[i]!='{')&&(s[i]!='}')) /*操作数结束标志*/
s1[j++]=s[i++];
s1[j]='\0';
*a=atof(s1);
*c=s[i++];
}
void input_str() /*表达式接收模块*/
{ int j,k,t=0;
char c,s1[80];
printf("\n请输入任一算术表达式:\n");
while (!t)
{ gets(s);
j=k=0; t=1;
while ((s[j]!='=')&&(s[j]!='\0')&&(t)) /*判断括号配对*/
{if ((s[j]=='(')||(s[j]=='[')||(s[j]=='{'))
switch(s[j])
{ case '(':s1[k++]=')';break;
case '[':s1[k++]=']';break;
case '{':s1[k++]='}';
}
else if ((s[j]==')')||(s[j]==']')||(s[j]=='}'))
if (s1[--k]!=s[j])
{ printf("输入出错!请重新输入(直接回车退出):\n");
t=0;
}
j++;
}
if ((k!=0)&&(t))
{printf("输入出错!请重新输入(直接回车退出):\n");
t=0;
}
}
}
void proc2(double *a,char *c)
/*算术运算符之后只有两种情况:要么是各种左括号,要么是操作数*/
{ char ch;
if ((s[i]=='(')||(s[i]=='[')||(s[i]=='{'))
{ switch(s[i])
{ case '(':ch=')';break;
case '[':ch=']';break;
case '{':ch='}';
}
++i;
*a=proc1(ch);
/*计算从当前左括号开始到与其相对应的右括号结束这段表达式的值*/
*c=s[i++]; /*跳过右括号*/
}
else str_read(a,c); /*读取一个操作数*/
}
double proc1(char ch)
/*该过程对算术表达式s从当前位置s[i]开始到表达式结束或s[i]==ch这部分进行求值*/
{ double a1=0,a2,a=0;
char c1='+',c='+',c2='+';
/*给表达式前面加上"0+"(第一操作数与第一操作符)*/
while((c!='=')&&(c!='\0')&&(c!=ch))
{ proc2(&a,&c); /*读取第二操作数与第二操作符.*/
while (c=='^' || c=='*' || c=='/')
{ proc2(&a2,&c2); /*读取第三操作数与第三操作符.*/
switch (c) /*对第二操作符进行运算*/
{ case '*':a=a*a2; break;
case '/':a=a/a2; break;
case '^':a=pow(a,a2);
}
c=c2; /*把第三操作符赋给第二操作符变量*/
}
switch (c1) /*对第一操作符进行运算*/
{ case '+':a1=a1+a;break;
case '-':a1=a1-a;
}
c1=c; /*把第二操作符赋给第一操作符变量*/
}
return(a1); /*返回这部分表达式的值*/
}
int main(void)
{ system("cls");
input_str();
if (s[0]=='\0') return 0;
printf("该表达式的值是: ");
printf("%-8f\n",proc1('\0'));
system("pause");
return 0;
}
㈨ 计算器解题是,首先必须要把解题过程编成什么
计算机程序语言,c,java等等。
系统软件由一组控制计算机系统和管理其资源的程序组成。其主要功能包括:启动计算机、存储、加载和执行应用程序、分类和检索文件、将程序语言翻译为机器语言等。
实际上,系统软件可以看作是用户与计算机之间的接口。它为应用软件和用户提供了控制和访问硬件的辩肆手段。这些功能主要由操作系统来完成。在这一类中还有编译系统和各种工具,它们以另一种方式帮助用户使用计算机。以下是它们的功能。
注意事项:
汇编程序。使用汇编语言来编写计算机程序,程序员仍然需要非常熟悉计算机系统的硬件结构,所以程序设计本身仍然效率低、芦灶敬陪慎繁琐。
但由于汇编语言与计算机硬件系统密切相关,在某些特定的场合,如系统核心程序、实时控制程序等对时空效率要求较高的场合,它仍然是一种非常有效的编程工具。
但它具有不可替代的特点,如一些单片机或一些直接控制的硬件程序都必须使用汇编语言。
以上内容参考:网络-编程
㈩ 计算器主要的功能有哪些
基本运算、负数计算、分数计算、倒数、阶乘、统计计算、复数计算。